Saltar al contenido principal
A veces puede necesitar crear un FlexiLayout para buscar campos que suelen aparecer en documentos tradicionales con un diseño fijo. Por ejemplo, puede que necesite describir un campo en el que las letras deban introducirse en pequeños marcos. Un ejemplo típico sería una empresa que recopila documentos de sus oficinas regionales. Aunque se espera que los documentos tengan el mismo aspecto, puede haber pequeñas diferencias de diseño de una oficina regional a otra, lo que significa que no pueden procesarse con una sola Definición de Document “rígida”. En este caso, un FlexiLayout puede ser preferible a varias Definiciones de Document “rígidas” ligeramente distintas. Si los campos de datos buscados en el documento son del tipo “framed letters” o “separate framed letters”, una búsqueda basada en separadores para localizar los límites de dichos campos puede ser muy complicada, y la descripción de los elementos puede volverse extensa, especialmente si los nombres de esos campos no están disponibles o no se reconocen con fiabilidad. Además, es muy importante que el bloque contenga no solo estos campos, sino también el marco completo. Si las líneas separadoras son finas, a veces pueden imprimirse incorrectamente o perderse durante el escaneo. En tales casos, se recomienda buscar los límites usando elementos de espacio en blanco. Estos límites del campo se describen en el FlexiLayout language especial en el campo Expression del cuadro de diálogo de propiedades del bloque. Puede describir el límite superior del campo como la parte inferior del espacio en blanco superior, el límite inferior como la parte superior del espacio en blanco inferior, el límite derecho del campo como el límite izquierdo del espacio en blanco derecho y el límite izquierdo del campo como el límite derecho del espacio en blanco izquierdo. Se puede encontrar un proyecto de FlexiLayout Studio que contiene imágenes de prueba y un FlexiLayout probado en %public%\ABBYY\FlexiCapture\12.0\Samples\FLS\Tips and Tricks. Ejemplo Supongamos que se han encontrado los 4 espacios (LeftGapName, RightGapName, TopGapName, BottomGapName) necesarios para describir formalmente la ubicación del campo de datos en la imagen. El código del campo Expression tendrá entonces el siguiente aspecto: Rect outputRect; Let FieldLeft = LeftGapName.Rect.Right; Let FieldRight = RightGapName.Rect.Left; Let FieldTop = TopGapName.Rect.Bottom; Let FieldBottom = BottomGapName.Rect.Top; outputRect = Rect(FieldLeft, FieldTop, FieldRight, FieldBottom); OutputRegion = outputRect;
En lugar de “LeftGapName”, “RightGapName”, “TopGapName” y “BottomGapName”, debe introducir los nombres de los elementos de espacio en blanco correspondientes. Si es necesario, puede ampliar la anchura y la altura del campo mediante la opción Inflate.
Si los campos de datos buscados en el documento son campos de varias líneas con marcado del tipo “framed letters” o “separate framed letters”, y las líneas no están separadas entre sí por espacios, entonces debe buscar los límites superior, inferior, derecho e izquierdo usando elementos de espacio en blanco. La búsqueda de líneas individuales debe especificarse entonces mediante un algoritmo especial en el campo Expression. En el ejemplo dado, la altura de cada línea individual puede calcularse dividiendo entre 2 la altura de todo el campo.