> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Hipótesis para todos los tipos de elementos

> Propiedades comunes de las hipótesis para todos los elementos de FlexiLayout: IsNull, Region, FuzzyRect, límites y métodos de página, con un ejemplo práctico de hipótesis nula.

Una hipótesis para un elemento puede encontrarse o no. Por lo general, una hipótesis encontrada se formula sobre la base de uno o varios objetos de imagen o sus fragmentos (una excepción es el elemento **espacio en blanco**, que puede no contener ningún objeto de imagen en absoluto).

<div id="hypothesis-regions-and-boundaries">
  ## Regiones y límites de las hipótesis
</div>

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étodo `Region` 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.

<div id="hypothesis-access-in-flexilayout-code">
  ## Acceso a las hipótesis en el código de FlexiLayout
</div>

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](/es/flexi-capture/fls/template/advanced-post-search), 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](/es/flexi-capture/fls/template/advanced-pre-search) 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](/es/flexi-capture/fls/template/search-constraints) 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.

<div id="properties-of-hypotheses-for-all-element-types">
  ## Propiedades de las hipótesis para todos los tipos de elemento
</div>

La siguiente tabla enumera las propiedades de las hipótesis para todos los tipos de elemento.

| Propiedad                                   | Descripción                                                                                                                                                                                                                                                                                                                                                                                    |
| ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Logic IsNull()`                            | Indica si se trata de una hipótesis nula (si no se ha detectado el elemento, la propiedad `IsNull` de la hipótesis es `True`).                                                                                                                                                                                                                                                                 |
| `Logic IsFound()`                           | Indica si la hipótesis no es nula (si no se ha detectado el elemento, la propiedad `IsFound` de la hipótesis es `False`). Equivale a `not IsNull`.                                                                                                                                                                                                                                             |
| `XInterval Left()`                          | El límite izquierdo de la hipótesis; intervalo horizontal en coordenadas globales.                                                                                                                                                                                                                                                                                                             |
| `YInterval top()`                           | El límite superior de la hipótesis; intervalo vertical en coordenadas globales.                                                                                                                                                                                                                                                                                                                |
| `XInterval Right()`                         | El límite derecho de la hipótesis; intervalo horizontal en coordenadas globales.                                                                                                                                                                                                                                                                                                               |
| `YInterval Bottom()`                        | El límite inferior de la hipótesis; intervalo vertical en coordenadas globales.                                                                                                                                                                                                                                                                                                                |
| `XInterval XCenter()`                       | La coordenada X del centro de la hipótesis; intervalo horizontal en coordenadas globales.                                                                                                                                                                                                                                                                                                      |
| `YInterval YCenter()`                       | La coordenada Y del centro de la hipótesis; intervalo vertical en coordenadas globales.                                                                                                                                                                                                                                                                                                        |
| `DistInterval Width()`                      | El ancho de la hipótesis en coordenadas globales; intervalo de distancias.                                                                                                                                                                                                                                                                                                                     |
| `DistInterval Height()`                     | La altura de la hipótesis en coordenadas globales; intervalo de distancias.                                                                                                                                                                                                                                                                                                                    |
| `FuzzyRect FuzzyRect()`                     | Rectángulo difuso de la hipótesis en coordenadas globales.                                                                                                                                                                                                                                                                                                                                     |
| `Rect Rect()`                               | El rectángulo que circunscribe la hipótesis en coordenadas globales. Coincide con el rectángulo externo del rectángulo difuso.                                                                                                                                                                                                                                                                 |
| `Region Region()`                           | La región de la hipótesis en coordenadas globales. El método no es compatible con elementos **grupo**.                                                                                                                                                                                                                                                                                         |
| `Region SimplifiedRegion()`                 | La región de la hipótesis en coordenadas globales, simplificada para una mejor representación visual. El método no es compatible con elementos **grupo**.                                                                                                                                                                                                                                      |
| `ImageObjectSet Set()`                      | Los objetos de imagen que forman parte de la hipótesis.                                                                                                                                                                                                                                                                                                                                        |
| `ImageObjectSet ExcludeSet()`               | Los objetos de imagen que están en la región excluida del área de búsqueda por métodos de tipo `Exclude`.                                                                                                                                                                                                                                                                                      |
| `RectArray Rects()`                         | El array de rectángulos incluidos en la hipótesis. Para la mayoría de los elementos, coincide con el array de rectángulos que encierran los objetos detectados. En los elementos **espacio en blanco** y **Region**, no hay objetos disponibles.                                                                                                                                               |
| `Int HypothesesCount()`                     | El número de hipótesis que pueden formularse para el elemento en el área de búsqueda.<br /><br />**¡Importante!** Esta función solo puede usarse si el número máximo y mínimo de páginas del documento está establecido en 1; es decir, el documento detectado tiene una sola página. Si usa esta función con un documento multipágina, el emparejamiento de un FlexiLayout devuelve un error. |
| `PageInterval Pages()`                      | El intervalo de páginas en el que debe encontrarse la hipótesis.                                                                                                                                                                                                                                                                                                                               |
| `PageArea PageAreaGlobal( Int PageNumber )` | Devuelve la parte de la hipótesis ubicada en la página indicada, en coordenadas globales.                                                                                                                                                                                                                                                                                                      |
| `PageArea PageAreaLocal( Int PageNumber )`  | Devuelve la parte de la hipótesis ubicada en la página indicada, en las coordenadas locales de la página.                                                                                                                                                                                                                                                                                      |

<div id="example-check-for-a-null-hypothesis-before-accessing-properties">
  ## Ejemplo: comprobar si hay una hipótesis nula antes de acceder a las propiedades
</div>

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 propiedad `IsNull`). 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:

```text theme={null}
if value != "1556897142240" then Quality: 0;
```

Haga clic en **Apply** o **Check**. El compilador no detecta ningún error de sintaxis. Parece que el código es correcto. Sin embargo, si intenta hacer coincidir el FlexiLayout con cualquier página de Sample 1, aparece el siguiente mensaje de error: `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:

```text theme={null}
if not IsNull then {
if value != "1556897142240" then Quality: 0;
}
```

El código anterior funciona solo para un elemento obligatorio.

Para un elemento opcional, ajuste el código de la siguiente manera:

```text theme={null}
if not IsNull then {
if value != "1556897142240" then Quality: 0;
}
else {Quality: 0;}
```

De lo contrario, solo la calidad de la hipótesis real se restablece a 0. Esto hace que FlexiLayout Studio genere una hipótesis nula, para la que no se ejecuta la condición `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.

<div id="region-and-simplifiedregion-methods-compared">
  ## Comparación de los métodos Region() y SimplifiedRegion()
</div>

Los métodos `Region Region()` y `Region SimplifiedRegion()` devuelven la región de un elemento, pero el método `Region Region()` devuelve la región exacta:

<Frame>
  <img src="https://mintcdn.com/abbyy/lqYknuOmCa79141v/images/flexi-capture/fls/Region.gif?s=e46c1e1919cef7f966fcb472c25b1a2b" alt="Captura de pantalla de la región exacta de la hipótesis devuelta por el método Region() en ABBYY FlexiLayout Studio, que sigue los límites de los objetos detectados." width="190" height="159" data-path="images/flexi-capture/fls/Region.gif" />
</Frame>

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

<Frame>
  <img src="https://mintcdn.com/abbyy/lqYknuOmCa79141v/images/flexi-capture/fls/Simplified_Region.gif?s=5f6838ff02b0d119264bc09c42536cb7" alt="Captura de pantalla de la región rectangular simplificada de la hipótesis devuelta por el método SimplifiedRegion() en ABBYY FlexiLayout Studio, basada en las coordenadas de los límites." width="181" height="154" data-path="images/flexi-capture/fls/Simplified_Region.gif" />
</Frame>
