Saltar al contenido principal
Para detectar varios títulos de documentos, tablas, campos o cualquier texto presente en todas o en la mayoría de las imágenes de un documento, FlexiLayout Studio utiliza un elemento especial de texto estático. Si distintas imágenes que se van a procesar mediante el mismo FlexiLayout tienen diferentes variantes de un mismo nombre (por ejemplo, el campo ‘Número de factura’ tiene las variantes ‘Factura’, ‘Factura:’, ‘Núm. de factura’, etc.), debe especificar todos los valores posibles de texto estático, aunque solo difieran en los signos de puntuación. Esto es necesario por las siguientes razones:
  1. Para generar una hipótesis correspondiente al valor especificado. Por ejemplo, si no especificamos la variante ‘Factura:’ y solo especificamos la variante ‘Factura’, los dos puntos no se incluirán en la hipótesis del nombre del campo. Entonces podrían quedar incluidos en el área de búsqueda del número de factura, que el programa buscará a la derecha del nombre. Si la búsqueda del número permite caracteres no numéricos o no especificados, los dos puntos pueden acabar en la hipótesis del elemento que describe el número de factura.
  2. Para evitar penalizar una hipótesis por caracteres no especificados en la ventana Search text. Por ejemplo, si el valor ‘Factura:’ se especifica en la sección Search text y el nombre ‘Factura#’ también aparece en las imágenes procesadas, entonces, siempre que se permitan algunos errores para el elemento, se seguirá generando una hipótesis, pero su calidad se penalizará (en este ejemplo, el FlexiLayout permite al menos 1 error).
  3. Si hay hipótesis variantes disponibles, por ejemplo, ‘Factura|Factura:’, el programa asignará a la hipótesis más larga una calidad ligeramente superior, de modo que la hipótesis ‘Factura:’ será la preferida. Si se especifica una variante con ’:’, entonces la que no la tenga será penalizada en 0.001, porque la cadena ‘Factura’ es una subcadena de ‘Factura:’. Penalizar la cadena más corta del nombre, que es una subcadena de la otra, hace que la hipótesis más larga sea la ganadora.
Usemos el proyecto de ejemplo StaticText.fsp (carpeta %public%\ABBYY\FlexiCapture\12.0\Samples\FLS\Tips and Tricks\Variants of StaticText) para ver cómo especificar los valores de un elemento de texto estático ayuda a detectar el nombre del campo ‘Número de factura’ y el propio campo. El proyecto tiene 5 páginas:
  • Página 1 - el campo “Número de factura” tiene el nombre “FACTURA”;
  • Página 2 – el campo “Número de factura” tiene el nombre “Factura:”;
  • Página 3 – el campo “Número de factura” tiene el nombre “Factura #:”;
  • Página 4 – el campo “Número de factura” tiene el nombre “Factura -”;
  • Página 5 – el campo “Número de factura” tiene el nombre “Factura:”, pero la página también tiene un campo “Fecha de la factura”, donde aparece la palabra “Factura”.
En el cuadro de diálogo de propiedades del elemento de texto estático llamado InvoiceHeader, hemos especificado todos los nombres posibles del campo que puede encontrarse en los documentos procesados. En este caso, son los valores mencionados anteriormente. El uso de mayúsculas y minúsculas en los nombres es irrelevante para la búsqueda: Factura|Factura:|Factura#:|Factura-.
Para acelerar la búsqueda del elemento, todas las variantes se escriben sin espacios. La ausencia o presencia de espacios no influye en la calidad de una hipótesis.
Por simplicidad, supongamos que el número de factura siempre se encuentra a la derecha del nombre. Para buscar el número de factura, se ha creado un elemento de cadena de caracteres llamado InvoiceNumber. Su alfabeto y sus restricciones de búsqueda se especifican en el campo Relations. Esta configuración es muy sencilla y no se describe aquí. Puede consultarla directamente en el proyecto. Se ha creado un bloque de texto Factura en el árbol de FlexiLayout. El elemento InvoiceNumber se ha especificado como elemento Source para el bloque. Como puede ver después de ejecutar el procedimiento de análisis, el nombre del campo y el número de factura pueden detectarse correctamente en todas las páginas. Ahora intente eliminar temporalmente todos los valores de texto estático excepto el primero (Factura) del elemento InvoiceHeader y, a continuación, vuelva a intentar emparejar el FlexiLayout con todas las páginas. Verá que el nombre y el número de factura se detectaron correctamente solo en la página 1, porque allí el nombre coincide por completo con el valor especificado (Factura). En las páginas 2-4, una parte del nombre pasó al número de factura. En la página 5, hubo un error al localizar el campo del número. Restauremos ahora los valores eliminados. Observe los resultados del análisis en la página 5, donde la palabra Factura aparece dos veces. Como puede verse, el programa generó 5 hipótesis para el elemento InvoiceHeader. La calidad más alta (calidad de la cadena = 1, que, en este caso, es igual a la calidad de prebúsqueda) se asigna a la hipótesis correspondiente al nombre “Factura:”. También se generaron hipótesis para los valores “Factura” e “Factura d”, porque estas cadenas derivan de los valores especificados para el elemento InvoiceHeader, para el cual se permite un cierto porcentaje de errores. Estas hipótesis fueron penalizadas (cf. los argumentos anteriores sobre la enumeración de todos los valores posibles de texto estático), por lo que su calidad final es menor.