Saltar al contenido principal
Una hipótesis es una suposición formulada por el programa de que los objetos detectados corresponden a un elemento concreto, es decir, de 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 ese 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 en qué grado el objeto detectado coincide con la descripción contenida en el elemento correspondiente y se expresa como un valor numérico de 0 a 1. La calidad de una hipótesis se calcula como [ Calidad de prebúsqueda ]*[ Calidad de posbúsqueda ], 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 Advanced pre-search relations
  • La calidad de posbúsqueda es el resultado de aplicar las condiciones especificadas en el campo Advanced post-search relations.
La calidad de una hipótesis para un elemento de grupo se calcula multiplicando las calidades de las hipótesis de todos los elementos que lo componen. 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, usamos el término hipótesis para referirnos al conjunto de objetos incluidos en una hipótesis concreta.

Hipótesis: un ejemplo práctico

Supongamos que necesitamos crear dos elementos que se usarán para encontrar dos textos estáticos en nuestras imágenes. El primer texto estático es “mother”, el segundo es “father”, y sabemos que el texto “father” siempre está debajo del texto “mother”. El primer elemento de texto estático, StaticText1, se usará para buscar el texto “mother”, y el segundo elemento de texto estático, StaticText2, se usará para buscar el texto “father”. Supongamos también que ambos elementos son opcionales y que la calidad de las hipótesis nulas de cada uno de ellos está establecida en 0.97. No estableceremos ninguna restricción en el área de búsqueda de StaticText1. Como sabemos que el texto “father” siempre está debajo del texto “mother”, podemos especificar que StaticText2 debe estar siempre debajo de StaticText1. Para ello, escribiremos 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 producido un error de Reconocimiento óptico de caracteres (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 las hipótesis con una calidad de 1. Como le indicamos al programa que buscara StaticText2 debajo del elemento StaticText1 y como 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 global de 0.98.