Passer au contenu principal
Une hypothèse est une supposition formulée par le programme selon laquelle le ou les objets détectés correspondent à un élément particulier, c’est-à-dire qu’ils satisfont aux propriétés et aux critères de recherche spécifiés pour cet élément.
Il peut y avoir plusieurs objets ou ensembles d’objets dans la zone de recherche de l’élément, et tous peuvent correspondre à cet élément. Dans ce cas, le programme formulera une hypothèse pour chaque objet détecté.
Les hypothèses sont caractérisées par leur qualité. La qualité d’une hypothèse mesure dans quelle mesure l’objet détecté correspond à la description contenue dans l’élément correspondant. Il s’agit d’une valeur numérique comprise entre 0 et 1. La qualité d’une hypothèse est calculée comme suit : [ Pre-search quality ]*[ Post-search quality ], où
  • Pre-search quality correspond à la qualité des paramètres définis dans la boîte de dialogue Properties et dans le champ Advanced pre-search relations
  • Post-search quality correspond au résultat de l’application des conditions spécifiées dans le champ Advanced post-search relations.
La qualité d’une hypothèse pour un élément Group est calculée en multipliant les qualités des hypothèses de tous les éléments qui le composent. Pour les éléments facultatifs, le programme formule une hypothèse nulle. Une hypothèse nulle est une hypothèse que le programme formule lorsqu’il ne détecte aucun objet correspondant à un élément facultatif dans la zone de recherche. Autrement dit, si le programme ne trouve aucun objet correspondant à un élément facultatif, il n’interrompt pas la mise en correspondance du FlexiLayout, mais formule une hypothèse nulle et lui attribue une qualité définie par l’utilisateur lors de la création de l’élément facultatif. Par souci de commodité, nous utilisons le terme hypothèse pour désigner l’ensemble d’objets inclus dans une hypothèse donnée.

Hypothèses : un exemple pratique

Supposons que nous devions créer deux éléments qui serviront à trouver deux textes statiques dans nos images. Le premier texte statique est “mother”, le second est “father”, et nous savons que le texte “father” se trouve toujours en dessous du texte “mother”. Le premier élément Static Text, StaticText1, servira à rechercher le texte “mother”, et le second élément Static Text, StaticText2, servira à rechercher le texte “father”. Nous supposons également que les deux éléments sont facultatifs et que la qualité des hypothèses nulles pour chacun d’eux est définie sur 0.97. Nous ne définirons aucune contrainte sur la zone de recherche de StaticText1. Comme nous savons que le texte “father” se trouve toujours en dessous du texte “mother”, nous pouvons préciser que StaticText2 doit toujours être situé en dessous de StaticText1. Pour ce faire, nous saisirons la contrainte correspondante dans l’onglet Relations de la boîte de dialogue Properties de l’élément StaticText2 : Below: SearchElements.StaticText1;. La figure ci-dessous affiche les résultats de la mise en correspondance du FlexiLayout avec une image sur laquelle le mot “mother” apparaît deux fois (au-dessus et en dessous du mot “father”) et où une erreur de Reconnaissance optique de caractères (OCR) a été commise dans le mot “mother” situé au-dessus du mot “father”. La mise en correspondance du FlexiLayout a généré deux hypothèses pour l’élément StaticText1. La première hypothèse correspond au mot “mother”, reconnu avec une erreur d’OCR et situé au-dessus du mot “father”, et présente une qualité de 0.98. La seconde hypothèse correspond au mot “mother” situé en dessous du mot “father” et présente une qualité de 1. À ce stade, la qualité de chaque chaîne est la même que celle de l’hypothèse correspondante. Par conséquent, la meilleure chaîne se compose des hypothèses ayant une qualité de 1. Comme nous avons indiqué au programme de rechercher StaticText2 en dessous de l’élément StaticText1 et que le programme a généré deux hypothèses pour l’élément StaticText1, il essaie maintenant de trouver le texte statique requis dans deux zones de recherche. Si le programme suit la seconde hypothèse, d’une qualité de 1, qui a trouvé le mot “mother” en dessous du mot “father”, il ne parviendra pas à trouver l’élément StaticText2 en dessous de l’élément StaticText1 et générera donc une hypothèse nulle d’une qualité de 0.97. La qualité de la chaîne d’hypothèses résultante sera de 1x0.97=0.97 Si le programme suit la première hypothèse, d’une qualité de 0.98, qui a trouvé le mot “mother” au-dessus du mot “father”, il détectera correctement l’élément StaticText2 en dessous de l’élément StaticText1 et générera une hypothèse d’une qualité de 1. La qualité de la chaîne d’hypothèses résultante sera de 0.98x1=0.98. Par conséquent, le programme sélectionne la chaîne dont la qualité globale est de 0.98.