Tipos de bloque de FlexiLayout
- Text (marcado con el icono
) se usa para extraer datos de texto.
Ampliar las regiones de los bloques de texto puede mejorar la calidad del reconocimiento. Para ampliar una región, haga doble clic en el elemento Blocks para abrir su cuadro de diálogo Properties y especifique los valores verticales y horizontales de la propiedad Blocks result region inflate. - Barcode (marcado con el icono
) se usa para leer códigos de barras. - Checkmark (marcado con el icono
) se usa para reconocer marcas de verificación. - Picture (marcado con el icono
) se usa para procesar objetos que no se identificaron como texto durante el prerreconocimiento. - Table (marcado con el icono
) se usa para extraer datos de tablas. - Group (marcado con el icono
) se usa para agrupar bloques de forma lógica. - Checkmark Group (marcado con el icono
) se usa para crear grupos de marcas de verificación. Solo se pueden agregar bloques de marcas de verificación a este tipo de grupo. No puede crear ni mover aquí bloques de otros tipos. - Repeating Group (marcado con el icono
) se usa para crear un grupo repetido de bloques. - Non-Recognized (marcado con el icono
) se usa para excluir un área del reconocimiento.
Los datos de los bloques se extraen en una aplicación de captura de datos como ABBYY FlexiCapture.
Propiedades del bloque
- Name — El nombre del bloque. El nombre de un bloque puede contener letras (caracteres romanos, caracteres romanos con diacríticos y caracteres cirílicos), dígitos y guiones bajos. El nombre de un bloque debe comenzar con una letra o un guion bajo. Los nombres de los bloques no deben contener espacios en blanco ni símbolos especiales.
- Type — El tipo de bloque (seleccionado al crearlo). El tipo de bloque debe corresponder al tipo de objeto u objetos ubicados en el área delimitada por el bloque.
- Comment — Comentario proporcionado por el usuario (opcional).
- Has repeating instances — Indica que el bloque consta de varias instancias. Seleccione esta propiedad si, por ejemplo, todas las instancias de un elemento grupo repetido se usan como la región del bloque.
- Instance sort order — Establece el orden en que las instancias del grupo se unen en un bloque. Esta propiedad solo está disponible si está seleccionada la opción Has repeating instances. Valores posibles:
- Top to bottom — Las instancias se unen en un bloque según su ubicación en la imagen, de arriba abajo.
- Left to right — Las instancias se unen en un bloque según su ubicación en la imagen, de izquierda a derecha.
- Right to left — Las instancias se unen en un bloque según su ubicación en la imagen, de derecha a izquierda.
- In order of finding — Las instancias se unen en un bloque en el orden en que se generan las hipótesis. Las hipótesis se generan en orden descendente de calidad. Si el usuario especificó condiciones adicionales para las instancias, las hipótesis se generan en el orden definido por el usuario. Por lo tanto, si necesita un orden distinto del orden estándar que utiliza el programa, puede especificarlo mediante condiciones adicionales.
- For Layout — Selecciona la alternativa de layout en la que se especifica el área de búsqueda.
- Source element — Especifica un área de la imagen idéntica a la Region del elemento utilizado para encontrar el bloque en la imagen. Cuando el FlexiLayout se aplica a la imagen, el programa busca el objeto (o los objetos) descrito por el elemento. Los datos se extraen de estos objetos. Para un grupo repetido, puede seleccionar una de las instancias o usar todas las instancias (AllInstances). Para obtener más información, consulte Uso de instancias de un Repeating Group como elementos de referencia, excluidos o de origen.
- Expression — Establece un área en la imagen que no coincide con ninguna de las regiones de los elementos. Por ejemplo, puede combinar en un solo bloque las regiones de algunos elementos y el espacio entre ellas, ampliar la región de un elemento en un valor determinado o especificar las coordenadas del bloque sin depender de ningún elemento. En este caso, la región del bloque puede describirse en el FlexiLayout language.
La región de un bloque es continua. Esto significa que, si crea una región a partir de rectángulos separados entre sí, los espacios entre ellos se rellenan con rectángulos adicionales estrechos para que la región sea continua.
Parámetros de los bloques de grupo y de grupo repetido
Especifique una región de bloque mediante instancias de un grupo repetido
LastFound), la región de bloque se define igual que para cualquier otro elemento. Sin embargo, puede usar todas las instancias detectadas (AllInstances). Para usar varias instancias, seleccione la opción Has repeating instances.
También puede escribir código para el bloque usando la variable predefinida OutputInstances. Por ejemplo:
- Para los bloques que no son de tabla, las instancias especificadas son las del campo correspondiente.
- Para un bloque de tabla, las instancias especificadas se tratan como una sola instancia del campo. Es decir, ABBYY FlexiCapture procesa ese bloque como un campo de tipo Tabla con una región discontinua.
Reglas para crear referencias a elementos para grupos repetidos de bloques
Si las referencias se crean mediante Source element, la comprobación se realiza cuando se compila el FlexiLayout. Si las referencias se crean mediante código Advanced, se detecta un error al realizar el emparejamiento del FlexiLayout.
Describa la región de un bloque con FlexiLayout language
| Tarea | Código de ejemplo |
|---|---|
| Obtener y expandir la región de un elemento en 3 mm de ancho y 5 mm de longitud | OutputRegion = SomeElement.Rect; OutputRegion.Inflate( 3*mm, 5*mm ); |
| Combinar los Rectangle de las regiones de dos elementos y obtener el Rectangle que circunscribe los Rectangle combinados | Rect outputRect; outputRect = Element1.Rect Or Element2.Rect; OutputRegion = outputRect; |
| Combinar en una sola Region los Rectangle que circunscriben las regiones de dos elementos | RectArray outputRects; outputRects = RectArray( Element1.Rect ); outputRects.Add: Element2.Rect; OutputRegion = Region( outputRects ); |
| Combinar en una sola Region las regiones de los objetos correspondientes a dos elementos diferentes | RectArray outputRects; outputRects = Element1.Rects; outputRects.Add( Element2.Rects ); OutputRegion = outputRects.Region; |
| Combinar las regiones de los objetos que pertenecen a la Region de Element1 y eliminar las regiones de los objetos que pertenecen a la Region de Element2 | OutputRegion = FormRegion( Element1.Rects, Element2.Rects ); |
| Usar un elemento Tabla para especificar un bloque Tabla | OutputTable = SearchElements.TableElement; |
| Usar instancias de hipótesis de un determinado elemento para especificar un bloque Tabla | OutputInstances = SearchElements.RepeatingGroup.AllInstances.TemplateElement; |
Usar la variable IsNull
IsNull para describir la región de un bloque. Esta variable indica si la región del bloque se ha encontrado durante el emparejamiento del FlexiLayout. El valor false significa que la región se ha encontrado. El valor true significa que no se ha encontrado.
La variable IsNull se inicializa con el valor false, por lo que se considera que la región del bloque se ha encontrado. Sin embargo, a veces puede ser necesario comprobar ciertas condiciones antes de llegar a una conclusión.
-
Para indicar al programa que considere encontrada la región del bloque si el ancho de la región del Source element supera los 50 dots, escriba el siguiente código en el campo Region Expression:
-
Para indicar al programa que considere encontrada la región del bloque solo si se ha encontrado Element1, escriba el siguiente código en el campo Region Expression:
-
Suponga que necesita usar Element1 y Element2 para buscar un bloque. Si al menos uno de los elementos no se ha encontrado, se considera que el bloque no se ha encontrado.
Este código funcionará correctamente solo si el área de búsqueda de Element1 está encima y a la izquierda del área de búsqueda de Element2. En el ejemplo anterior, no se incluye la comprobación de esta condición por simplicidad. En el código real, esta comprobación es necesaria y los valores de las variables FieldLeft, FieldRight, FieldTop y FieldBottom deben ajustarse. De lo contrario, la llamada a la función Rect devolverá un error.
