Skip to end of metadata
Go to start of metadata

Una de las funcionalidades más útiles de el Smart Engine de Athento se trata de poder extraer datos concretos dentro de los contenidos del documento.

En esta sección, veremos cómo hacerlo.

Creación de campos para extracción

Los campos de extracción o metadatos -como se conocen en la industria- siempre están ligados a un Tipo Documental. Es decir, definimos campos de extracción para un Tipo Documental, de modo que los datos puedan ser extraídos para todos los documentos que pertenecen a una determinada tipología.

Selección del Tipo Documental adecuado

Al crear campos para extracción, debemos asegurarnos de que estamos en un documento clasificado manual o automáticamente con el Tipo Documental al que queremos añadirle los metadatos.


Añadir campos de extracción es muy fácil. Para añadir campos de extracción:

  1. Asegúrate de estar dentro de un documento clasificado con el Tipo Documental al que quieres añadirle los campos.
  2. Desde el menú Document Type, selecciona la opción Add new metadata.
  3. A continuación aparecerá un popup en el que debes introducir el nombre del metadato y seleccionar el tipo de metadato.
  4. Para terminar, utiliza Save changes. A continuación, verás el nuevo campo creado a la derecha de la vista del documento.

Tipo de Metadato

Los campos que creas son conocidos en el sistema como Metadata Type o Tipo de Metadato.

Tipos de Metadatos disponibles

Estos son los valores que aparecen en el menú desplegable Select data type e indican el tipo de dato a extraer para el que se quiere crear el campo o Tipo de Metadato.

TipoDescripción
TextCadena de caracteres tomada del contenido textual del documento.
Zonal OCRTexto extraido de unas coordenadas específicas dentro del documento.
ImageRecortes del documento. Útil por ejemplo para la extracción de una firma manuscrita dentro de un documento.
CodeExtracción de un código de barras o código QR.
TableExtracción de información tabular dentro del documento.
NumberEN DESARROLLO
DateExtrae fecha en diversos formatos.
DatetimeEN DESARROLLO
EmailEN DESARROLLO
FieldEN DESARROLLO
ColorEN DESARROLLO
CommandEN DESARROLLO
AutoincrementNúmero generado por el sistema que se incrementa de forma automática.

Configuración de campos para la extracción

Aunque los campos ya están creados, hace falta aportar más información al sistema aún para que pueda extraer metadatos.

Definiciones de Metadatos

La configuración de cada campo para la extracción de datos se encuentra en los Metadata Definitions o Definiciones de Metadatos.

Para configurar la extracción, puede accederse desde el segundo icono con forma de tuerca que aparece justo después del campo a configurar.

El Smart Engine abrirá una ventana en el Backend desde dónde podremos configurar la extracción.

Opciones de Metadata Definitions

A continuación, se describen los parametros que pueden ser configurados desde los Metadata Definitions.

ParametroDescripciónEjemploOperaciones requeridas
Type

Metadata Type. Es decir, campo al que está asociada la Defnición del Metadato.

Se configura de forma automática.



Doc Type

Tipo Documental al que pertence el metadato.

Se configura de forma automática.



Name

Nombre interno para identificar la Definición del Metadato.

Se configura de forma automática.



Startword y Endword

Método de extracción textual que permite extraer el texto entre dos cadenas de caracteres o expresiones. La primera cadena se corresponde con la Startword (palabra de inicio)  y la última con la Endword (palabra de fin).

Este método debe utilizarse cuando las Startword y Endword y no se repitan de forma constante dentro del contenido textual del documento.

Ambos campos son obligatorios si se desea usar este método de extracción.

Es posible definir varias Startword y Endword, siempre y cuando no concurra la aparición multiple de las mismas. Esto es útil de cara por ejemplo, a extraer los mismos datos para un mismo tipo documental en diferentes idiomas.

Startword: Fecha de creación | Create date

La anterior expresión puede leerse como: Busca como palabra de inicio "Fecha de creación" o "Create date".

Para extraer el año de la siguiente cadena "La conquista ocurrió a partir de 1555 y terminó un siglo después.":

Startword: a partir de

Endword: y terminó

Keywordfuzzyness: 0 (va a depender de la calidad de la extracción del OCR)

characterize_text

Extract metadata

extractpages

Keywordsfuzzyness

Permite al sistema tolerar fallos y encontrar las Startword y Endword en casos en los que las expresiones extraidas y las configuradas no coincidan 100%. Por ejemplo, el sistema da por correcta la Startword "Fecha de creaci0n" aunque fue configurado para buscar "Fecha de creación".

La tolerancia mínima al fallo es igual a 0. Números superiores a 0 incrementan la tolerancia al fallo en la extracción.



Regexp

Busca un patrón dentro del contenido textual. El patrón se expresa en términos de expresiones regulares.

Es imprescindibl definir un valor para Regexpfuzzyness cuando queremos utilizar este método.

En la misma cadena de texto anterior, para extraer el año, utilizaríamos la siguiente expresión:

Regexp: 

[0-9]{4}

Esta expresión significa para el SE: busca 4 dígitos númericos del 0 al 9.

characterize_text

Extract metadata

extractpages

Regexpfuzzyness

Indica la tolerancia al fallo en el cumplimiento de la expresión.

La tolerancia mínima al fallo es igual a 0. Números superiores a 0 incrementan la tolerancia al fallo en la extracción.



Ocurrence

Utilizada por métodos de extracción como las Regexp. Significa con cuál de las ocurrencias del método de extracción debe quedarse el sistema. Cada vez que se cumple la regla por la que buscamos un metadato hablamos de una ocurrencia.

También es utilizada por el método Split para indicar con qué porción de la cadena debe quedarse el sistema.

La ocurrencia siempre comienza en 0. La segunda ocurrencia de una regla es siempre el número 1.

Para obtener la última ocurrencia, utilizamos el -1.

Para extraer mediante expresiones regulares el año de inicio de la conquista de la siguiente cadena "La conquista ocurrió entre 1555 y 1655":

Regexp:

[0-9]{4}

Ocurrence: 0



NumwordsMétodo complementario a los anteriores. Indica el número de palabras de las que se compone el metadato que estamos buscando.Por ejemplo, para el caso del año en el ejemplo, estamos hablando de una única palabra. 

characterize_text

Extract metadata

extractpages

Minlength Indica el número mínimo de caracteres o digitos a incluir por el metadato que estamos buscando.Por ejemplo, para el caso del año en el ejemplo, estamos hablando mínimo 1 caracter, ya que los años comienzan en el año 1. 

characterize_text

Extract metadata

extractpages

Maxlength Indica el número máximo de caracteres o digitos a incluir por el metadato que estamos buscando.Por ejemplo, para el caso del año en el ejemplo, estamos hablando máximo 4 caracteres, ya que los años no superan este número de digitos. 

characterize_text

Extract metadata

extractpages

StripCuando está marcada, este método elimina los espacios en blanco al comienzo y al final de la cadena extraída.

Enabled Indica si el metadato ha de extraerse o no. Por defecto siempre está marcado.

Slicing

Nos permite formatear el texto extraído de forma que sólo nos quedemos con parte del mismo. La forma en la que funciona el Slicing es contando cada uno de los caracteres del texto extraído, incluyendo espacios.

 +---+---+---+---+
 | H | e | l | p |
 +---+---+---+---+
 0   1   2   3   4  
    -3  -2  -1

Para extraer la anterior palabra debemos decirle al sistema que se quede con el slice 0:4, ya que el último caracter nunca se incluye en el slice. 


Supongamos que el mecanismo de extracción usado para obtener el año,  el sistema nos ha devuelto:

 +---+---+---+---+---+---+
 | d | = | 1 | 5 | 5 | 5 |
 +---+---+---+---+---+---+
   0   1   2   3   4   5
      -4  -3  -2  -1

Para quedarnos sólo con el año, nuestra expresión de Slicing será:

2:6

Split

Permite utilizar un carcter o cadena de caracteres para dividir el resultado de una extracción.

Requiere el uso de Ocurrence para indicar con qué fragmento de la caden dividida debe quedarse el sistema.

Supongamos que necesitamos extraer dos metadatos de la frase "La conquista ocurrió entre 1555 y 1655":

Después de aplicar un método de extracción, obtenemos la cadena:

"1555 y 1655".

El año de inicio de la conquista será el metado "Fecha Inicio" y el año final será el metadato "Fecha Final".

Podemos hacer un split o división de la cadena "1555 y 1655" utilizando el caracter "y".

Split: y

En el caso del metadato "Fecha Inicio", el valor de Ocurrence debe ser 0 y para el caso del metadato "Fecha Final" el valor debe ser 1.


Blacklistcharacters

Permite eliminar caracteres del resultado de la extracción.

Estos caracteres deben ir seguidos uno de otro, sin separadores.

Supongamos que el mecanismo de extracción usado para obtener el año,  el sistema nos ha devuelto "d=1555".

Como sabemos que en un año sólo debemos tener digitos numéricos, podemos colocar:

Blacklist: =abcdefghijklmnopqrstuvwxyz

Esto eliminará cualquier letra minúscula y el signo igual que.


Sourcemetadata

Este campo indica al SE donde se encuentra el valor del metadato.

Dado que Athento procesa el OCR de cada página del documento por separado, podemos indicar la página en la que se encuentra el metadato.

También es posible utilizar el nombre del fichero como insumo para popular un metadato. En este caso, debemos selecionar la opción Filename. Cuando utilizamos como Sourcemetadata el Filename, debe indicarse también un Numwords.



Sourcecoordinates

Permite extraer el texto dentro de unas coordenas absolutas dentro del documento. Estas coordenadas se indicaran en términos de ejes X e Y.

               pixel 0
                 |
                 |
                 |
pixel 0 ---------|---------- pixel ? (pixel final del documento en eje X)
                 |
                 |
                 |
               pixel ? (pixel final del documento en el eje y)


Las coordinadas definen un recuadro del que se extraerá el texto, por eso debemos indicar las dimensiones de este cuadrado en términos de coordenadas en los ejes X e Y.

Notación: y:y+h, x:x+w

y = pixel en el eje Y donde empieza el recuadro

y+h: pixel en el eje Y donde termina el recuadro, es el resultado de sumar el alto del recuadro al pixel de partida en el eje Y.

x = pixel en el eje X donde empieza el recuadro

x+w = pixel en el eje X donde termina el recuadro. Es es resultado de sumar el ancho del recuadro al pixel donde empieza el recuadro en el eje X.

Este método de extracción debe utilizarse para Metadata Type de tipo texto.

Queremos obtener el encabezado de una factura en el que se encuentran los datos del proveedor.

El encabezado se encuentra al principio de la página en el extremo izquierdo, ocupando aproximadamente unos 600 pixeles de ancho y 400 de alto.

Con esos datos, podemos determinar las Sourcecoordinates como sigue:

Ancho = 600 px

Alto = 400 px

10:410,10:610 

El recuadro empieza en el pixel 10 tanto en el eje Y como en el X, dado que los documentos suelen tener algo de margen.

characterize_text

Extract metadata

extractpages

Hocrword

Este método de anclaje permite buscar una palabra dentro del texto del documento a partir de la que se pueden definir coordenadas para extraer metadatos.

Este método es muy útil cuando un mismo metadato puede aparecer en distintas ubicaciones en los distintos documentos del mismo tipo, pero siempre viene acompañado de una palabra que podemos usar como referencia dinámica.

Por ejemplo, en muchos documentos bancarios, el número de cuenta se situa a la derecha de la cadena número de cuenta así:

Número de Cuenta ES88098813123

El problema es que en los distintos formatos de un Tipo Documental la posición del metadato dentro del documento varía. A veces aparece arriba y otras veces abajo. Esto hace imposible que usemos unas coordenadas absolutas como las que hemos visto en el método anterior.

Con HOCR, sin embargo, podemos buscar la palabra Número de Cuenta dónde quiera que se encuentre y extraer la información que se encuentra a la derecha.

Hocrword define dentro del documento de forma dinámica las coordenadas en las que se encuentra la palabra que buscamos y construye un recuadro como el que explicamos en el método anterior.


Hocrword = Número de Cuenta
Hocrmargin

Este parametro nos permite mover el recuadro de extracción (coordenadas de extracción) desde la palabra definida en Hocrword hasta el dato que queremos realmente extraer. Es decir, desplazar el recuadro desde "Número de Cuenta" hasta "ES88098813123".

La notación es y-y1:yh+y2, x-x1:xw+x2

Movimientos del recuadro hacia la derecha representan números positivos en el eje X, por el contrario, desplazamientos hacía la izquierda representan valores negativos. 

En el eje Y, movimientos hacía arriba representan movimiento negativos sobre el eje Y, y desplazamientos hacia abajo representan valores positivos.


Las Sourcecoordinates se rellenan solas a partir de la palabra Hocrword.

1400:1500,100:400

Para desplazar el recuadro desde "Número de Cuenta" hasta "ES88098813123", definimos un margen:

1400:1500,400:700

En el eje Y no nos desplazamos, ya que las dos cadenas de texto están paralelas. Es en el eje X en donde tenemos que mover el recuadro. Si el número de cuenta aparece justo a la derecha de "Número de Cuenta", tenemos que empezar el recuadro justo donde acaban las Sourcecoordinates en el eje X. Es decir, en el pixel 400. Supongamos que el número de cuenta mide 300 pixeles. A 400 sumamos 300 para definir el pixel en el que termina el recuadro.

op_extract_hocr

Extract metadata coordinates from HOCR

characterize_text

Extract metadata

extractpages

Anchormetadata


Anchorimage


Relativesourcecoordinates


Dynamicexpression


Command


Code EnginePermite seleccionar distintas librerías de lectura de códigos de barras y QR.

Replacement wordsPermite definir una lista de sustituciones de palabras.Por ejemplo, si queremos corregir una cadena "DF" por "DE", se añadiría como un elemento en este parámetro de configuración.



Ejemplos concretos de métodos de extracción

A continuación mostramos en vídeo cómo usar muchos de los métodos de extracción explicados en la sección anterior.

Extracción usando expresiones regulares

Get Adobe Flash player

Extracción usando Startword y Endword

Get Adobe Flash player


Extracción de metadatos de la última página del documento

En ocasiones, nos encontramos con que los metadatos que queremos extraer de nuestro documento, se encuentran en la última página del mismo pero que el número de la última página puede variar. Por ejemplo una factura, dependiendo del número de items que facturemos el total de la misma puede estar en la página 1, 2, 3...

Athento permite realizar la extracción de los metadatos que siempre van a estar en la última página del documento.

En el ejemplo que mostramos, el metadato "Base Imponible" siempre va a estar en la última página de la factura, pudiendo variar su número de páginas.

En primer lugar, hemos creado el metadato a extraer, en este caso "Base Imponible".


Una vez hemos creado el metadato, vamos a configurar su extracción. Para ello, seleccionamos el botón "configure metadata extraction" situado en la parte inferior del metadato. Nos abrirá una nueva ventana que nos permitirá la configuración del metadato.

A continuación, vamos a indicar que este metadato, va a estar siempre en la última página del documento. Para ello en el apartado "Sourcemetadata" vamos a detallar la siguiente expresión "last.ocr".


Una vez realicemos el paso anterior, procederemos a configurar la extracción del metadato como se realzia normalmente, con expresión regular, startword-endword...


Realizados los pasos anteriores ya tenemos nuestro tipo documental configurado para que extraiga un metadato que se encuentra en la última página del documento.



Ejemplos de formateo de metadatos



  • No labels
Write a comment…