Divida de forma inteligente paquetes de documentos de varios formularios con Amazon Textract y Amazon Comprehend

Nodo de origen: 1372716

Muchas organizaciones que abarcan diferentes tamaños y verticales de la industria aún dependen de grandes volúmenes de documentos para ejecutar sus operaciones diarias. Para resolver este desafío empresarial, los clientes utilizan servicios de procesamiento de documentos inteligentes de AWS, como Amazon Textil y Amazon Comprehend para ayudar con extracción y automatización de procesos. Antes de poder extraer texto, pares clave-valor, tablas y entidades, debe poder dividir documentos PDF de varias páginas que a menudo contienen tipos de formularios heterogéneos. Por ejemplo, en el procesamiento de hipotecas, un corredor o una persona que procesa un préstamo puede necesitar dividir un paquete de préstamo en PDF consolidado, que contiene la solicitud de hipoteca (formulario 1003 de Fannie Mae), W2, verificación de ingresos, formularios de impuestos 1040 y más.

Para abordar este problema, las organizaciones utilizan el procesamiento basado en reglas: identificar tipos de documentos a través de títulos de formularios, números de página, longitudes de formularios, etc. Estos enfoques son propensos a errores y difíciles de escalar, especialmente cuando los tipos de formulario pueden tener varias variaciones. En consecuencia, estas soluciones se descomponen rápidamente en la práctica y aumentan la necesidad de intervención humana.

En esta publicación, mostramos cómo puede crear su propia solución de división de documentos con poco código para cualquier conjunto de formularios, sin crear reglas personalizadas ni procesar flujos de trabajo.

Resumen de la solución

Para esta publicación, usamos un conjunto de formularios de solicitud de hipoteca comunes para demostrar cómo puede usar Amazon Textract y Amazon Comprehend para crear un separador de documentos inteligente que sea más sólido que los enfoques anteriores. Al procesar documentos para solicitudes de hipoteca, el prestatario envía un PDF de varias páginas que se compone de tipos de documentos heterogéneos de diferentes longitudes de página; para extraer información, el usuario (por ejemplo, un banco) debe desglosar este PDF.

Aunque mostramos un ejemplo específico para formularios de hipotecas, generalmente puede escalar y aplicar este enfoque a casi cualquier conjunto de documentos PDF de varias páginas.

Usamos Amazon Textract para extraer datos del documento y crear un conjunto de datos compatible con Amazon Comprehend para entrenar a un modelo de clasificación de documentos. A continuación, entrenamos el modelo de clasificación y creamos un punto final de clasificación que puede realizar análisis de documentos en tiempo real. Tenga en cuenta que los puntos finales de clasificación de Amazon Textract y Amazon Comprehend incurren en cargos, así que consulte Precios de Amazon Textract y Precios de Amazon Comprehend para más información. Finalmente, mostramos cómo podemos clasificar documentos con este punto final y dividir documentos según los resultados de la clasificación.

Esta solución utiliza los siguientes servicios de AWS:

Requisitos previos

Debe completar los siguientes requisitos previos para compilar e implementar esta solución:

  1. Instalar Pitón 3.8.x.
  2. Instalar jq.
  3. Instalar la CLI de AWS SAM.
  4. Instalar Docker.
  5. Asegúrese de que dispone pip instalado.
  6. Instalar y configurar las Interfaz de línea de comandos de AWS (CLI de AWS).
  7. Configurar sus credenciales de AWS.

La solución está diseñada para funcionar de manera óptima en el us-east-1 y us-west-2 Regiones para aprovechar las cuotas predeterminadas más altas para Amazon Textract. Para cargas de trabajo regionales específicas, consulte Puntos finales y cuotas de Amazon Textract. Asegúrese de usar una sola región para toda la solución.

Clonar el repositorio

Para comenzar, clone el repositorio ejecutando el siguiente comando; luego cambiamos al directorio de trabajo:

git clone https://github.com/aws-samples/aws-document-classifier-and-splitter.git
cd aws-document-classifier-and-splitter

Flujos de trabajo de la solución

La solución consta de tres flujos de trabajo:

  • flujo de trabajo1_endpointbuilder – Toma los documentos de capacitación y crea un punto final de clasificación personalizado en Amazon Comprehend.
  • flujo de trabajo2_docsplitter – Actúa como el servicio de división de documentos, donde los documentos se dividen por clase. Utiliza el punto final de clasificación creado en workflow1.
  • flujo de trabajo3_local – Está destinado a clientes que se encuentran en industrias altamente reguladas y no pueden almacenar datos en Amazon S3. Este flujo de trabajo contiene versiones locales de workflow1 y workflow2.

Profundicemos en cada flujo de trabajo y cómo funcionan.

Flujo de trabajo 1: Cree un clasificador de Amazon Comprehend a partir de documentos PDF, JPG o PNG

El primer flujo de trabajo toma los documentos almacenados en Amazon S3 y los envía a través de una serie de pasos para extraer los datos de los documentos a través de Amazon Textract. Luego, los datos extraídos se utilizan para crear un punto de enlace de clasificación personalizado de Amazon Comprehend. Esto se demuestra en el siguiente diagrama de arquitectura.

Almorzar workflow1, necesita el URI de Amazon S3 de la carpeta que contiene los archivos del conjunto de datos de entrenamiento (pueden ser imágenes, PDF de una sola página o PDF de varias páginas). La estructura de la carpeta debe ser la siguiente:

root dataset directory
---- class directory
-------- files

Alternativamente, la estructura puede tener subdirectorios anidados adicionales:

root dataset directory
---- class directory
-------- nested subdirectories
------------ files

Los nombres de los subdirectorios de clase (el segundo nivel de directorio) se convierten en los nombres de las clases utilizadas en el modelo de clasificación personalizado de Amazon Comprehend. Por ejemplo, en la siguiente estructura de archivos, la clase para form123.pdf is tax_forms:

training_dataset
---- tax_forms
-------- page_1
------------ form123.pdf

Para iniciar el flujo de trabajo, complete los siguientes pasos:

  1. Cargue el conjunto de datos en un depósito de S3 de su propiedad.

La recomendación es tener más de 50 muestras para cada clase en la que desee clasificar. La siguiente captura de pantalla muestra un ejemplo de esta estructura de clase de documento.

  1. Construye el sam-app ejecutando los siguientes comandos (modifique los comandos proporcionados según sea necesario):
cd workflow1_endpointbuilder/sam-app
sam build
sam deploy --guided
Stack Name [sam-app]: endpointbuilder
AWS Region []: us-east-1
#Shows you resources changes to be deployed and require a 'Y' to initiate deploy
Confirm changes before deploy [y/N]: n
#SAM needs permission to be able to create roles to connect to the resources in your template
Allow SAM CLI IAM role creation [Y/n]: y
Save arguments to configuration file [Y/n]: n Looking for resources needed for deployment:
Creating the required resources...
Successfully created!
Managed S3 bucket: {your_bucket}
#Managed repositories will be deleted when their functions are removed from the template and deployed
Create managed ECR repositories for all functions? [Y/n]: y

El resultado de la compilación es un ARN para una máquina de estado de Step Functions.

  1. Cuando la compilación esté completa, navegue hasta el Máquinas de estado página en la consola de Step Functions.
  2. Elija la máquina de estado que creó.
  3. Elige Iniciar ejecución.
  4. Ingrese los siguientes parámetros de entrada requeridos:
{
“folder_uri”: “s3://{your dataset}”
}

  1. Elige Iniciar ejecución.

La máquina de estado inicia el flujo de trabajo. Esto puede llevar varias horas dependiendo del tamaño del conjunto de datos. La siguiente captura de pantalla muestra nuestra máquina de estado en progreso.

Cuando la máquina de estado está completa, cada paso en el gráfico es verde, como se muestra en la siguiente captura de pantalla.

Puede navegar a la consola de Amazon Comprehend para ver el punto de enlace implementado.

Ahora ha creado su clasificador personalizado utilizando sus documentos. Esto marca el final de workflow1.

Flujo de trabajo 2: construir un punto final

El segundo flujo de trabajo toma el punto final que creó en workflow1 y divide los documentos en función de las clases con las que se ha entrenado el modelo. Esto se demuestra en el siguiente diagrama de arquitectura.

Almorzar workflow2, construimos el sam-app. Modifique los comandos provistos según sea necesario:

cd workflow2_docsplitter/sam-app
sam-app % sam build
Build Succeeded sam-app % sam deploy --guided
Configuring SAM deploy
=========================================
Stack Name [sam-app]: docsplitter
AWS Region []: us-east-1
#Shows you resources changes to be deployed and require a 'Y' to initiate deploy
Confirm changes before deploy [y/N]: n
#SAM needs permission to be able to create roles to connect to the resources in your template
Allow SAM CLI IAM role creation [Y/n]: y
Save arguments to configuration file [Y/n]: n Looking for resources needed for deployment:
Managed S3 bucket: {bucket_name}
#Managed repositories will be deleted when their functions are removed from the template and deployed
Create managed ECR repositories for all functions? [Y/n]: y

Después de crear la pila, recibe un DNS de Load Balancer en el Salidas pestaña de la pila de CloudFormation. Puede comenzar a realizar solicitudes a este extremo.

Una solicitud de muestra está disponible en el workflow2_docsplitter/sample_request_folder/sample_s3_request.py expediente. La API toma tres parámetros: el nombre del depósito de S3, el URI de Amazon S3 del documento y el ARN del punto final de clasificación de Amazon Comprehend. Workflow2 solo admite la entrada de PDF.

Para nuestra prueba, utilizamos un documento hipotecario de 11 páginas con cinco tipos de documentos diferentes.

La respuesta para la API es un URI de Amazon S3 para un archivo .zip con todos los documentos divididos. También puede encontrar este archivo en el depósito que proporcionó en su llamada a la API.

Descargue el objeto y revise los documentos divididos según la clase.

Esto marca el final de workflow2. Ahora hemos mostrado cómo podemos usar un punto de enlace de clasificación personalizado de Amazon Comprehend para clasificar y dividir documentos.

Flujo de trabajo 3: división de documentos locales

Nuestro tercer flujo de trabajo sigue un propósito similar al de workflow1 y workflow2 para generar un punto de enlace de Amazon Comprehend; sin embargo, todo el procesamiento se realiza utilizando su máquina local para generar un archivo CSV compatible con Amazon Comprehend. Este flujo de trabajo fue creado para clientes en industrias altamente reguladas donde los documentos PDF persistentes en Amazon S3 pueden no ser posibles. El siguiente diagrama de arquitectura es una representación visual del flujo de trabajo del generador de punto final local.

El siguiente diagrama ilustra la arquitectura del divisor de documentos local.

Todo el código de la solución está disponible en el workflow3_local/local_endpointbuilder.py para crear el punto de enlace de clasificación de Amazon Comprehend y workflow3_local/local_docsplitter.py para enviar documentos para dividir.

Conclusión

La división de documentos es la clave para crear un flujo de trabajo de procesamiento de documentos exitoso e inteligente. Todavía es un problema muy relevante para las empresas, especialmente las organizaciones que agregan múltiples tipos de documentos para sus operaciones diarias. Algunos ejemplos incluyen el procesamiento de documentos de reclamos de seguros, solicitudes de pólizas de seguros, documentos de la SEC, formularios de impuestos y formularios de verificación de ingresos.

En esta publicación, tomamos un conjunto de documentos comunes utilizados para el procesamiento de préstamos, extrajimos los datos con Amazon Textract y construimos un punto final de clasificación personalizado de Amazon Comprehend. Con ese punto final, clasificamos los documentos entrantes y los dividimos según su clase respectiva. Puede aplicar este proceso a casi cualquier conjunto de documentos con aplicaciones en una variedad de industrias, como la atención médica y los servicios financieros. Para obtener más información sobre Amazon Texttract, visita la página web.


Acerca de los autores

aditi rajnish es estudiante de primer año de ingeniería de software en la Universidad de Waterloo. Sus intereses incluyen la visión artificial, el procesamiento del lenguaje natural y la computación perimetral. También le apasiona el alcance y la defensa de STEM basados ​​en la comunidad. En su tiempo libre, se la puede encontrar escalando rocas, tocando el piano o aprendiendo a hornear el bollo perfecto.

Raj Pathak es Arquitecto de Soluciones y asesor técnico para clientes de Fortune 50 y FSI (Banca, Seguros, Mercados de Capital) de tamaño mediano en Canadá y Estados Unidos. Raj se especializa en aprendizaje automático con aplicaciones en extracción de documentos, transformación de centros de contacto y visión artificial.

Fuente: https://aws.amazon.com/blogs/machine-learning/intelligently-split-multi-form-document-packages-with-amazon-textract-and-amazon-comprehend/

Sello de tiempo:

Mas de Blog de aprendizaje automático de AWS