Acerca de este codelab
1. Introducción
Document AI es una solución de comprensión de documentos que toma datos no estructurados, como documentos y correos electrónicos, entre otros, y permite que los datos sean más fáciles de comprender, analizar y consumir.
Con el enriquecimiento a través de Document AI Workbench, puedes lograr una mayor exactitud en el procesamiento de los documentos si proporcionas ejemplos etiquetados adicionales para los tipos de documentos especializados y creas una nueva versión del modelo.
En este lab, crearás un procesador de análisis de facturas, configurarás el procesador para el enriquecimiento, etiquetarás documentos de ejemplo y entrenarás el procesador.
El conjunto de datos de documentos que se usa en este lab consta de facturas generadas aleatoriamente para una empresa de canalización ficticia.
Requisitos previos
Este codelab se basa en contenido presentado en otros codelabs de Document AI.
Recomendamos que completes los siguientes codelabs antes de continuar.
- Reconocimiento óptico de caracteres (OCR) con Document AI (Python)
- Análisis de formularios con Document AI (Python)
- Procesadores especializados con Document AI (Python)
- Administra procesadores de Document AI con Python
- Document AI: Con interacción humana
Qué aprenderás
- Configura el enriquecimiento para un procesador de analizador de facturas.
- Cómo etiquetar datos de entrenamiento de Document AI con la herramienta de anotación
- Cómo entrenar una nueva versión de un modelo
- Cómo evaluar la precisión de la nueva versión del modelo
Requisitos
2. Cómo prepararte
En este codelab, se supone que ya completaste los pasos de configuración de Document AI que se indican en el codelab de introducción.
Completa estos pasos antes de continuar:
3. Crea un procesador
Primero, debes crear un procesador de análisis de facturas para usarlo en este lab.
- En la consola, navega a la página Descripción general de Document AI.
- Haz clic en Crear procesador, desplázate hacia abajo hasta Especializado (o escribe "Analizador de facturas" en la barra de búsqueda) y selecciona Analizador de facturas.
- Asígnale el nombre
codelab-invoice-uptraining
(o un nombre que no vayas a olvidar) y selecciona la región más cercana de la lista.
- Haz clic en Crear (Create) para crear tu procesador. Deberías poder ver la página de resumen del procesador.
4. Crea un conjunto de datos
Para entrenar tu procesador, debes crear un conjunto de datos con datos de entrenamiento y pruebas para ayudar al procesador a identificar las entidades que quieres extraer.
Tendrás que crear un nuevo bucket en Cloud Storage para almacenar el conjunto de datos. Nota: Este no debería ser el mismo bucket en el que están almacenados tus documentos actualmente.
- Abre Cloud Shell y ejecuta los siguientes comandos para crear un bucket. O bien crea un nuevo bucket en la consola de Cloud. Recuerda el nombre de este bucket, ya que lo necesitarás más tarde.
export PROJECT_ID=$(gcloud config get-value project)
gsutil mb -p $PROJECT_ID "gs://${PROJECT_ID}-uptraining-codelab"
- Dirígete a la pestaña Conjunto de datos y haz clic en Crear conjunto de datos
- Pega el nombre del bucket que creaste en el primer paso en el campo Ruta de destino (no incluyas
gs://
).
- Espera a que se cree el conjunto de datos. Luego, se te debería dirigir a la página de administración del conjunto de datos.
5. Importa un documento de prueba
Ahora, importemos un PDF de factura de muestra en nuestro conjunto de datos.
- Haz clic en Importar documentos (Import Documents).
- Tenemos un PDF de muestra para que lo uses en este lab. Copia y pega el siguiente vínculo en la casilla Ruta de acceso del origen. Deja “División de datos” como “Sin asignar” por ahora. Haz clic en Importar (Import).
cloud-samples-data/documentai/codelabs/uptraining/pdfs
- Espera a que se importe el documento. Es probable que tarde menos de 1 minuto.
- Cuando se complete la importación, deberías ver el documento en la IU de administración del conjunto de datos. Haz clic en él para ingresar a la consola de etiquetado.
6. Etiqueta el documento de prueba
A continuación, vas a identificar elementos de texto y etiquetas para las entidades que te gustaría extraer. Estas etiquetas se usarán para entrenar al modelo para que analice la estructura de este documento específico y también identifique los tipos correctos.
- Ahora deberías estar en la consola de etiquetado, que se verá de la siguiente manera.
- Haz clic en "Seleccionar texto" Herramienta y, luego, destaca el texto “McWilliam Piping International Piping Company” y asigna la etiqueta
supplier_name
. Puedes usar el filtro de texto para buscar nombres de etiquetas.
- Destaca el texto “14368 Pipeline Ave Chino, CA 91710”. y asigna la etiqueta
supplier_address
.
- Destaca el texto "10001". y asigna la etiqueta
invoice_id
.
- Destaca el texto "2020-01-02". y asigna la etiqueta
due_date
.
- Cambia al “Cuadro delimitador” herramienta. Destaca el texto "Acopladores de nudillos". y asigna la etiqueta
line_item/description
.
- Destacar el texto "9" y asigna la etiqueta
line_item/quantity
.
- Destaca el texto "74.43". y asigna la etiqueta
line_item/unit_price
.
- Destaca el texto "669.87" y asigna la etiqueta
line_item/amount
.
- Repite los 4 pasos anteriores para las siguientes dos líneas de pedido. Debería verse así cuando se complete el proceso.
- Destaca el texto "1,419.57". (junto a Subtotal) y asigna la etiqueta
net_amount
.
- Destaca el texto "113.57" (junto a Impuestos) y asigna la etiqueta
total_tax_amount
.
- Destaca el texto "1,533.14". (junto a Total) y asigna la etiqueta
total_amount
.
- Destaca uno de los "$". caracteres y asigna la etiqueta
currency
.
- El documento etiquetado debería verse así cuando se complete el proceso. Ten en cuenta que puedes editar estas etiquetas haciendo clic en el cuadro delimitador del documento o en el valor o nombre de la etiqueta en el menú lateral izquierdo. Haz clic en Guardar cuando termines de etiquetar.
- Esta es la lista completa de etiquetas y valores
Nombre de la etiqueta | Texto |
| McWilliam Piping International Piping Company |
| 14368 Pipeline Ave Chino, CA 91710 |
| 10001 |
| 2020-01-02 |
| Knuckle Couplers |
| 9 |
| 74.43 |
| 669.87 |
| PVC Pipe 12 Inch |
| 7 |
| 15.90 |
| 111.30 |
| Copper Pipe |
| 7 |
| 91.20 |
| 638.40 |
| 1,419.57 |
| 113.57 |
| 1,533.14 |
| $ |
7. Asigna el documento al conjunto de entrenamiento
Deberías haber regresado a la consola de administración del conjunto de datos. Observa que la cantidad de documentos etiquetados y no etiquetados cambió, así como la cantidad de etiquetas activas.
- Debes asignar este documento al conjunto “Entrenamiento” o “Prueba”. Haz clic en el documento.
- Haz clic en Asignar al conjunto y, luego, en Entrenamiento.
- Observa que los números de la división de datos cambiaron.
8. Importa datos etiquetados previamente
El entrenamiento previo de Document AI requiere un mínimo de 10 documentos en los conjuntos de entrenamiento y de prueba, junto con 10 instancias de cada etiqueta en cada conjunto.
Se recomienda tener al menos 50 documentos en cada conjunto, con 50 instancias de cada etiqueta, para obtener el mejor rendimiento. Por lo general, con más datos de entrenamiento se consiguen resultados más precisos.
Llevará mucho tiempo etiquetar de forma manual 100 documentos, así que contamos con algunos documentos etiquetados previamente que puedes importar para este lab.
Puedes importar archivos de documentos etiquetados previamente en formato Document.json
. Estos pueden ser resultados de llamar a un procesador y verificar la precisión mediante el modelo Con interacción humana (HITL).
- Haz clic en Importar documentos (Import Documents).
- Copia y pega la siguiente ruta de acceso de Cloud Storage y asígnala al conjunto de Entrenamiento.
cloud-samples-data/documentai/codelabs/uptraining/training
- Haz clic en Agregar otro bucket (Add Another Bucket). Luego, copia y pega la siguiente ruta de acceso de Cloud Storage y asígnala al conjunto de Prueba.
cloud-samples-data/documentai/codelabs/uptraining/test
- Haz clic en Importar y espera a que los documentos se importen. Esto tardará más que la vez anterior porque hay más documentos que procesar. Debería tardar alrededor de 6 minutos según nuestras pruebas. Puedes salir de esta página y volver más tarde.
- Cuando el proceso se complete, deberías ver los documentos en la página de administración del conjunto de datos.
9. Edita etiquetas
Los documentos de muestra que usamos para este ejemplo no contienen todas las etiquetas admitidas por el Analizador de facturas. Tendremos que marcar las etiquetas que no estamos usando como inactivas antes del entrenamiento. También puedes seguir pasos similares para agregar una etiqueta personalizada antes del entrenamiento.
- Haz clic en Administrar etiquetas (Manage Labels) en la esquina inferior izquierda.
- Ahora deberías estar en la consola de Administración de etiquetas.
- Usa las casillas de verificación y los botones Inhabilitar/Habilitar para marcar SOLO las siguientes etiquetas como Habilitadas.
currency
due_date
invoice_id
line_item/amount
line_item/description
line_item/quantity
line_item/unit_price
net_amount
supplier_address
supplier_name
total_amount
total_tax_amount
- La consola debería verse así cuando se complete el proceso. Cuando termine, haz clic en Guardar (Save).
- Haz clic en la flecha hacia atrás para volver a la consola de administración del conjunto de datos. Observa que las etiquetas con 0 instancias se marcaron como inactivas.
10. Etiqueta de forma automática los documentos importados recientemente (opcional)
Cuando importas documentos sin etiquetar para un procesador con una versión de procesador implementada existente, puedes usar el etiquetado automático a fin de ahorrar tiempo.
- En la página Entrenar, haz clic en Importar documentos.
- Copia y pega la siguiente ruta de acceso . Este directorio contiene 5 PDF de facturas sin etiquetar. En la lista desplegable División de datos, selecciona Entrenamiento.
cloud-samples-data/documentai/Custom/Invoices/PDF_Unlabeled
- En la sección Etiquetado automático, selecciona la casilla de verificación Importar con etiquetado automático.
- Selecciona una versión existente del procesador para etiquetar los documentos.
- Por ejemplo:
pretrained-invoice-v1.3-2022-07-15
- Haz clic en Importar y espera a que los documentos se importen. Puedes salir de esta página y volver más tarde.
- Cuando se complete el proceso, los documentos aparecerán en la página Entrenar en la sección Etiquetado automáticamente.
- No puedes usar documentos etiquetados automáticamente para entrenamiento ni pruebas sin marcarlos como etiquetados. Dirígete a la sección Etiquetado automáticamente para ver los documentos etiquetados automáticamente.
- Selecciona el primer documento para ingresar a la consola de etiquetado.
- Verifica las etiquetas, los cuadros delimitadores y los valores para asegurarte de que sean correctos. Etiqueta cualquier valor que se haya omitido.
- Cuando termines, selecciona Marcar como etiquetado.
- Repite la verificación de etiquetas en cada documento etiquetado automáticamente y, luego, vuelve a la página Entrenar para usar los datos para entrenamientos.
11. Entrenar el modelo
Ya estamos listos para comenzar a entrenar nuestro analizador de facturas.
- Haz clic en Entrenar una versión nueva (Train New Version).
- Asígnale a la versión un nombre que no vayas a olvidar, por ejemplo,
codelab-uptraining-test-1
. La versión base es la versión del modelo con la que se compilará esta nueva versión. Si usas un procesador nuevo, la única opción debería ser Google Pretrained Next con reentrenamiento.
- También puedes seleccionar Ver estadísticas de etiquetas (View Label Stats) para ver métricas de las etiquetas de tu conjunto de datos (opcional).
- Haz clic en Comenzar el entrenamiento para comenzar el proceso de enriquecimiento. Se te debería redireccionar a la página de administración del conjunto de datos. Podrás ver el estado del entrenamiento en el lado derecho. El entrenamiento tardará unas horas en completarse. Puedes salir de esta página y volver más tarde.
- Si haces clic en el nombre de la versión, se te dirigirá a la página Administra versiones (Manage Versions) en la que aparece el ID de la versión y el estado actual del trabajo de entrenamiento.
12. Prueba la nueva versión del modelo
Cuando el trabajo de entrenamiento esté completo (es posible que tarde alrededor de 1 hora), podrás probar la nueva versión del modelo y comenzar a usarla para realizar predicciones.
- Ve a la página Administra versiones (Manage Versions). En esta página podrás ver el estado actual y la puntuación F1.
- Debes implementar esta versión del modelo antes de poder usarla. Haz clic en los puntos verticales que están en el lado derecho y selecciona Implementar versión (Deploy Version).
- Selecciona Implementar (Deploy) en la ventana emergente y espera a que la versión se implemente. Este proceso tardará unos minutos en completarse. Cuando se implemente, también podrás establecer esta versión como Predeterminada.
- Cuando se termine de implementar, dirígete a la pestaña Evaluar (Evaluate). Luego, haz clic en el menú desplegable Versión y selecciona la versión que acabas de crear.
- En esta página, podrás ver métricas de evaluación que incluyen la puntuación F1, la precisión y la recuperación para el documento completo, así como etiquetas individuales. Puedes leer más sobre estas métricas en la Documentación de AutoML.
- Descarga el archivo PDF vinculado a continuación. Este es un documento de muestra que no se incluyó en el conjunto de Entrenamiento ni de Prueba.
- Haz clic en Subir documento de prueba (Upload Test Document) y selecciona el archivo PDF.
- Las entidades extraídas deberían verse así.
13. Conclusión
Felicitaciones. Usaste Document AI de forma correcta para enriquecer un analizador de facturas. Ahora puedes usar este procesador para analizar facturas, tal como lo harías con cualquier procesador especializado.
Puedes consultar el Codelab de procesadores especializados para recordar cómo controlar la respuesta del procesamiento.
Realiza una limpieza
Para evitar que se generen cargos en tu cuenta de Google Cloud por los recursos que usaste en este instructivo, sigue estos pasos:
- En la consola de Cloud, ve a la página Administrar recursos.
- En la lista de proyectos, selecciona tu proyecto y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrarlo.
Recursos
- Documentación de Document AI Workbench
- El futuro de los documentos - Playlist de YouTube
- Documentación de Document AI
- Biblioteca cliente de Document AI con Python
- Muestras de Document AI
Licencia
Este trabajo cuenta con una licencia Atribución 2.0 Genérica de Creative Commons.