Saltar al contenido principal
El análisis de las imágenes de prueba revela que los campos Cantidad total y Total Amount solo aparecen junto con el nombre Footer.kwTotal y están situados en el mismo nivel. Usaremos elementos de tipo cadena de caracteres para detectar los campos Cantidad total y Total Amount. Para especificar las restricciones de búsqueda comunes a estos elementos, debemos crear un elemento Grupo: grTotal. Para crear el elemento Grupo grTotal:
  1. En el elemento Footer, cree un elemento Grupo y asígnele el nombre grTotal.
  2. Seleccione Optional element, porque decidimos detener la búsqueda de los subelementos si el nombre no está presente. Nota. Para más detalles, consulte el artículo de Ayuda Tips and tricks\The “Optional” property of a Group element.
  3. Haga clic en la pestaña Advanced.
  4. Dado que los campos Cantidad total y Total Amount solo aparecen en la imagen junto con el nombre Footer.kwTotal, establezca la siguiente restricción de búsqueda adicional en el campo de relación avanzada de prebúsqueda:If the Footer.kwTotal element has not been detected, do not look for the object on the image. En FlexiLayout language: If Footer.kwTotal.IsNull Then DontFind;
El campo Cantidad total está situado en la intersección de la fila Total y la columna Quantity. La primera restricción ya se especificó en el nivel del elemento Grupo. Para especificar la segunda restricción, usaremos como elemento de referencia el nombre de la columna detectado previamente. Para crear el elemento TotalQuantity:
  1. En el elemento grTotal, cree un elemento de tipo cadena de caracteres y asígnele el nombre TotalQuantity.
  2. Haga clic en la pestaña Character String.
  3. En el campo recuento de caracteres, especifique este intervalo difuso: {-1, 1, 10, INF}. Esta es una estimación de la Longitud de la cadena de caracteres. Suponemos que los valores posibles pueden ir de 1 a 10. Cualquier hipótesis fuera de este intervalo será penalizada.
  4. Deje los valores predeterminados para los demás parámetros del elemento.
  5. Haga clic en la pestaña Relations.
  6. Dado que el campo Cantidad total siempre está situado al mismo nivel que las palabras clave del nombre Footer.kwTotal o ligeramente más abajo, establezca las siguientes restricciones de búsqueda:
    • Encima del elemento Footer.kwTotal, Offset = -200, Reference boundary = Bottom
    • Debajo del elemento Footer.kwTotal, Offset = -20, Reference boundary = Top Nota. Antes de establecer los valores de los desplazamientos, puede ser útil analizar las propiedades geométricas (es decir, el tamaño y los límites) de los objetos vecinos detectados durante el prerreconocimiento. Los valores de desplazamiento se seleccionan mediante prueba y error.
  7. Haga clic en la pestaña Advanced.
  8. Dado que el campo Cantidad total es opcional en las imágenes, pero cuando aparece lo hace junto con la columna Quantity y debajo de su nombre, establezca la siguiente restricción de búsqueda adicional en el campo de relación avanzada de prebúsqueda:Look for the object on the image only if the TableHeader.kwQuantity element has been detected; Look no farther than 50 dots to the left or to the right of the respective boundaries of the column name. En FlexiLayout language: If Not (TableHeader.kwQuantity.IsNull) Then { LeftOf: TableHeader.kwQuantity.Right, -50 * dot; RightOf: TableHeader.kwQuantity.Left, -50 * dot; } Else DontFind;
  9. Pruebe la coincidencia del FlexiLayout con las imágenes de prueba y asegúrese de que el programa detecte correctamente el elemento en todas las imágenes en las que corresponda.
  10. Para describir la ubicación del bloque TotalQuantity, seleccione la opción Source element, luego haga clic en ”” y seleccione el elemento TotalQuantity como elemento de origen.
El campo Total Amount está situado en la intersección de la fila Total (el pie de la tabla) y la columna Total. La primera restricción ya se especificó en el nivel del elemento Grupo. Para especificar la segunda restricción, usaremos como elementos de referencia los nombres de las columnas detectados previamente. Para crear el elemento TotalAmount:
  1. En el elemento grTotal, cree un elemento de tipo cadena de caracteres y asígnele el nombre TotalAmount.
  2. Haga clic en la pestaña Character String.
  3. En el campo recuento de caracteres, especifique este intervalo difuso: [-1, 1, 20, 2147483647]. Esta es una estimación de la longitud de la cadena de caracteres. Suponemos que los posibles valores pueden oscilar entre 1 y 20. Cualquier hipótesis fuera de este rango será penalizada.
  4. Deje los valores predeterminados de los demás parámetros del elemento.
  5. Haga clic en la pestaña Relations.
  6. Como el campo Total Amount siempre está ubicado al mismo nivel que las palabras clave con el nombre Footer.kwTotal, establezca las siguientes restricciones de búsqueda:
    • Encima del elemento Footer.kwTotal, Offset = -20, Reference boundary = Bottom.
    • Debajo del elemento Footer.kwTotal, Offset = -20, Reference boundary = Top.
  7. Haga clic en la pestaña Advanced.
  8. Como el campo Total Amount solo puede ubicarse inmediatamente debajo (quizá con un pequeño desplazamiento) del nombre de la columna Total y solo entre las columnas Unit Price y Sales, establezca la siguiente restricción de búsqueda adicional en el campo relación avanzada de prebúsqueda:Si se ha detectado el elemento TableHeader.kwTotal , busque el objeto a no más de 70 puntos a la derecha del límite derecho del elemento TableHeader.kwTotal y a no más de 50 puntos a la izquierda del límite izquierdo del elemento TableHeader.kwTotal ; o, si se detectan los elementos TableHeader.kwUnitPrice y TableHeader.kwSales , busque el objeto a no más de 40 puntos a la derecha del límite izquierdo del elemento TableHeader.kwSales y a la derecha del límite derecho del elemento TableHeader.kwUnitPrice *; de lo contrario, no busque el objeto.*En FlexiLayout language: If Not (TableHeader.kwTotal.IsNull) Then { LeftOf: TableHeader.kwTotal.Right, -70 * dot; RightOf: TableHeader.kwTotal.Left, -50 * dot; } Else If Not (TableHeader.kwUnitPrice.IsNull) and Not (TableHeader.kwSales.IsNull) Then { LeftOf: TableHeader.kwSales.Left, -40 * dot; RightOf: TableHeader.kwUnitPrice, 0 * dot; } Else DontFind; Nota. Antes de establecer los valores de los desplazamientos, quizá le convenga analizar las propiedades geométricas (es decir, el tamaño y los límites) de los objetos vecinos detectados durante el prerreconocimiento. Los valores de desplazamiento se seleccionan por prueba y error.
  9. Pruebe la coincidencia de FlexiLayout con las imágenes de prueba y asegúrese de que el programa detecte correctamente el elemento en todas las imágenes en las que corresponda.
  10. Para describir la ubicación del bloque TotalAmount, seleccione la opción Source element, luego haga clic en y seleccione el elemento TotalAmount como elemento de origen.