Regiones y límites de las hipótesis
Una hipótesis encontrada para un elemento simple siempre es una región continua. Las hipótesis para los elementos espacio en blanco, separador y código de barras siempre son rectángulos únicos. Si una hipótesis se formula sobre la base de un conjunto de objetos de imagen detectados, por ejemplo, una hipótesis para un elemento párrafo, la región de la hipótesis se construye a partir del array de rectángulos de los objetos detectados. La región creada de esta manera puede obtenerse mediante el métodoRegion de la hipótesis.
Al mostrar la región de la hipótesis en la imagen o al crear un bloque sobre la base de la hipótesis, los límites de la región no siguen exactamente los límites de cada rectángulo. En su lugar, los límites del área de búsqueda se suavizan para mejorar la visualización. Una región creada de esta manera puede obtenerse mediante el método SimplifiedRegion de la hipótesis.
Los métodos Region y SimplifiedRegion pueden utilizarse tanto en el campo Relaciones avanzadas de prebúsqueda de la pestaña Avanzado (al describir el área de búsqueda del elemento) como en el campo Expresión de región al describir las propiedades del bloque y usar los elementos ya encontrados.
Si no se encontró una hipótesis, esta coincide con el rectángulo difuso de su área de búsqueda. Al mostrar una hipótesis no encontrada en la imagen, FlexiLayout Studio dibuja el rectángulo externo del rectángulo difuso.
Los límites Left, top, Right y Bottom de cualquier hipótesis son rangos. Para cada hipótesis encontrada, el rango degenera en un punto, es decir, Left.Start = Left.End, top.Start = top.End, etc. Para una hipótesis no encontrada, los rangos de los límites coinciden con los rangos de su área de búsqueda.
Acceso a las hipótesis en el código de FlexiLayout
El acceso a las hipótesis generadas y a sus propiedades en el código de los cuadros de diálogo correspondientes de bloques y elementos proporciona herramientas adicionales para configurar FlexiLayout. Se puede acceder a las hipótesis de los elementos por los nombres de los elementos. Para acceder a una hipótesis del elemento actual en el campo Relaciones avanzadas de posbúsqueda, solo puede usar el nombre de la propiedad. Se accede a las hipótesis y sus propiedades en modo de solo lectura. Se puede acceder a las hipótesis de los elementos en los campos Relaciones avanzadas de prebúsqueda y Relaciones avanzadas de posbúsqueda de la pestaña Avanzado del cuadro de diálogo Propiedades del elemento, así como en el campo Expresión de región del cuadro de diálogo Propiedades del bloque. En Relaciones avanzadas de prebúsqueda, puede acceder a las hipótesis generadas (y a sus propiedades) de todos los elementos ubicados por encima del elemento actual en el árbol de FlexiLayout. En Relaciones avanzadas de posbúsqueda, puede acceder a las hipótesis generadas de los elementos ubicados por encima del elemento actual en el árbol de FlexiLayout y a la hipótesis del propio elemento actual. En Expresión de región, puede acceder a las hipótesis (y a sus propiedades) de todos los elementos.Propiedades de las hipótesis para todos los tipos de elemento
La siguiente tabla enumera las propiedades de las hipótesis para todos los tipos de elemento.Ejemplo: comprobar si hay una hipótesis nula antes de acceder a las propiedades
Antes de acceder a las propiedades de una hipótesis para un elemento simple o de grupo, asegúrese de que la hipótesis a la que va a acceder no sea una hipótesis nula (llame a su propiedadIsNull). Acceder a una propiedad de una hipótesis nula (que corresponde a un elemento no detectado) provoca un error.
Considere un ejemplo que utiliza el proyecto de Sample 1, que puede encontrarse en el CD-ROM del programa.
Suponga que hay un identificador en su documento en forma de código de barras y que quiere que su FlexiLayout haga coincidir solo aquellos documentos en los que el valor del código de barras sea 1556897142240.
En la sección Relaciones avanzadas de posbúsqueda del elemento que describe las propiedades y las restricciones de búsqueda del código de barras (elemento IdentityNumber en Sample 1), escriba el siguiente código:
Error in element “MainGroup.IdentityNumber”, Advanced relations section: Attempt to access undefined hypothesis MainGroup.IdentityNumber.
La causa del error es la siguiente. FlexiLayout Studio encuentra una hipótesis para el elemento código de barras. Luego compara el valor del código de barras con el valor especificado en el código. Si los valores son distintos, el código Quality: 0; restablece el valor de la hipótesis a 0.
A continuación, se genera una hipótesis nula para este elemento, para la que FlexiLayout Studio también comprueba la condición value != "1556897142240". Como no se permite acceder al valor de una hipótesis nula (no tiene esta propiedad), FlexiLayout Studio muestra un mensaje de error “…undefined hypothesis…”.
Por lo tanto, ajuste el código de la siguiente manera:
if not IsNull.
Por lo tanto, la calidad de la hipótesis final (nula) permanece igual que la especificada en las propiedades del elemento (0.97 si se mantuvo el valor predeterminado) y FlexiLayout Studio sigue emparejando el FlexiLayout, incluso sin el elemento indicado.
Si agrega else {Quality: 0;} al código, la sentencia se ejecuta para todas las hipótesis (incluida la hipótesis nula) y el emparejamiento del FlexiLayout se detiene, porque en este elemento la cadena completa de hipótesis también se restablece a 0.
Comparación de los métodos Region() y SimplifiedRegion()
Los métodosRegion Region() y Region SimplifiedRegion() devuelven la región de un elemento, pero el método Region Region() devuelve la región exacta:

Region SimplifiedRegion() devuelve el rectángulo creado a partir de las coordenadas de los límites:

