Una hipótesis es una suposición del programa de que los objetos detectados corresponden a un elemento determinado, es decir, que cumplen las propiedades y los criterios de búsqueda especificados para ese elemento.
Puede haber varios objetos o conjuntos de objetos en el área de búsqueda del elemento, y todos ellos pueden corresponder a dicho elemento. En ese caso, el programa formulará una hipótesis para cada objeto detectado.
Las hipótesis se caracterizan por su calidad.
La calidad de una hipótesis mide hasta qué punto el objeto detectado coincide con la descripción contenida en el elemento correspondiente y es un valor numérico de 0 a 1.
La calidad de una hipótesis se calcula como [ Pre-search quality ]*[ Post-search quality ], donde
- La calidad de prebúsqueda es la calidad de la configuración realizada en el cuadro de diálogo Propiedades y en el campo relación avanzada de prebúsqueda.
- La calidad de posbúsqueda es el resultado de aplicar las condiciones especificadas en el campo Relaciones avanzadas de posbúsqueda.
La calidad de una hipótesis para un elemento de grupo se calcula multiplicando las calidades de las hipótesis de todos los elementos constituyentes.
Para los elementos opcionales, el programa formula una hipótesis nula.
Una hipótesis nula es una hipótesis que el programa formula si no detecta ningún objeto correspondiente a un elemento opcional en el área de búsqueda.
Esto significa que, si el programa no encuentra ningún objeto correspondiente a un elemento opcional, no detiene el emparejamiento de FlexiLayout, sino que formula una hipótesis nula y le asigna una calidad establecida por el usuario al crear el elemento opcional.
Por comodidad, el término hipótesis también se usa para referirse al conjunto de objetos incluidos en una hipótesis determinada.
Hipótesis: un ejemplo práctico
Supongamos que necesita crear dos elementos que se usarán para localizar dos textos estáticos en sus imágenes. El primer texto estático es “mother”, el segundo es “father”, y el texto “father” siempre se encuentra debajo del texto “mother”. El primer elemento Static Text, StaticText1, se usará para buscar el texto “mother”, y el segundo elemento Static Text, StaticText2, se usará para buscar el texto “father”. Suponga también que ambos elementos son opcionales y que la calidad de la hipótesis nula de cada uno de ellos está establecida en 0.97.
No se establece ninguna restricción en el área de búsqueda de StaticText1. Como el texto “father” siempre se encuentra debajo del texto “mother”, puede especificar que StaticText2 debe estar siempre debajo de StaticText1. Para ello, escriba la restricción correspondiente en la pestaña Relations del cuadro de diálogo Propiedades del elemento StaticText2: Below: SearchElements.StaticText1;.
La siguiente figura muestra los resultados del emparejamiento de FlexiLayout con una imagen en la que la palabra “mother” aparece dos veces (encima y debajo de la palabra “father”) y se ha cometido un error de OCR en la palabra “mother” situada encima de la palabra “father”.
El emparejamiento de FlexiLayout ha generado dos hipótesis para el elemento StaticText1. La primera hipótesis corresponde a la palabra “mother”, reconocida con un error de OCR y situada encima de la palabra “father”, y tiene una calidad de 0.98. La segunda hipótesis corresponde a la palabra “mother” situada debajo de la palabra “father” y tiene una calidad de 1.
En esta etapa, la calidad de cada cadena es la misma que la de la hipótesis correspondiente. Por lo tanto, la mejor cadena consiste en la hipótesis con una calidad de 1.
Como el elemento StaticText2 debe estar debajo del elemento StaticText1 y el programa ha generado dos hipótesis para el elemento StaticText1, ahora intenta encontrar el texto estático requerido en dos áreas de búsqueda. Si el programa sigue la segunda hipótesis, con una calidad de 1, que ha encontrado la palabra “mother” debajo de la palabra “father”, no logrará encontrar el elemento StaticText2 debajo del elemento StaticText1 y, en consecuencia, generará una hipótesis nula con una calidad de 0.97. La calidad de la cadena de hipótesis resultante será 1x0.97=0.97.
Si el programa sigue la primera hipótesis, con una calidad de 0.98, que ha encontrado la palabra “mother” encima de la palabra “father”, detectará correctamente el elemento StaticText2 debajo del elemento StaticText1 y generará una hipótesis con una calidad de 1. La calidad de la cadena de hipótesis resultante será 0.98x1=0.98.
Como resultado, el programa selecciona la cadena con una calidad total de 0.98.