Divisez intelligemment les packages de documents multiformes avec Amazon Textract et Amazon Comprehend

Nœud source: 1372716

De nombreuses organisations de différentes tailles et secteurs d'activité s'appuient encore sur de grands volumes de documents pour gérer leurs opérations quotidiennes. Pour résoudre ce défi commercial, les clients utilisent les services de traitement de documents intelligents d'AWS tels que Extrait d'Amazon ainsi que Amazon comprendre pour aider avec extraction et automatisation des processus. Avant de pouvoir extraire du texte, des paires clé-valeur, des tableaux et des entités, vous devez pouvoir diviser des documents PDF de plusieurs pages qui contiennent souvent des types de formulaires hétérogènes. Par exemple, dans le traitement des prêts hypothécaires, un courtier ou une personne chargée du traitement des prêts peut avoir besoin de diviser un package de prêt PDF consolidé, contenant la demande de prêt hypothécaire (formulaire Fannie Mae 1003), les W2, la vérification des revenus, 1040 formulaires fiscaux, etc.

Pour résoudre ce problème, les organisations utilisent un traitement basé sur des règles : identification des types de documents via les titres des formulaires, les numéros de page, la longueur des formulaires, etc. Ces approches sont sujettes aux erreurs et difficiles à mettre à l’échelle, en particulier lorsque les types de formulaires peuvent présenter plusieurs variantes. En conséquence, ces solutions de contournement échouent rapidement dans la pratique et augmentent le besoin d’intervention humaine.

Dans cet article, nous montrons comment vous pouvez créer votre propre solution de fractionnement de documents avec peu de code pour n'importe quel ensemble de formulaires, sans créer de règles personnalisées ni traiter de flux de travail.

Vue d'ensemble de la solution

Pour cet article, nous utilisons un ensemble de formulaires de demande de prêt hypothécaire courants pour montrer comment vous pouvez utiliser Amazon Textract et Amazon Comprehend pour créer un séparateur de documents intelligent plus robuste que les approches précédentes. Lors du traitement des documents pour les demandes de prêt hypothécaire, l'emprunteur soumet un PDF de plusieurs pages composé de types de documents hétérogènes de différentes longueurs de page ; pour extraire des informations, l'utilisateur (par exemple une banque) doit décomposer ce PDF.

Bien que nous montrions un exemple spécifique pour les formulaires hypothécaires, vous pouvez généralement adapter et appliquer cette approche à presque n'importe quel ensemble de documents PDF de plusieurs pages.

Nous utilisons Amazon Textract pour extraire les données du document et créer un ensemble de données compatible Amazon Comprehend pour former un modèle de classification des documents. Ensuite, nous formons le modèle de classification et créons un point de terminaison de classification capable d'effectuer une analyse de document en temps réel. Gardez à l'esprit que les points de terminaison de classification Amazon Textract et Amazon Comprehend entraînent des frais, reportez-vous donc à Tarification d'Amazon Textract ainsi que Tarification Amazon Comprehend pour plus d'informations. Enfin, nous montrons comment classer les documents avec ce point final et diviser les documents en fonction des résultats de la classification.

Cette solution utilise les services AWS suivants :

Pré-requis

Vous devez remplir les conditions préalables suivantes pour créer et déployer cette solution :

  1. Installer Python 3.8.x.
  2. Installer jq.
  3. Installer l'AWS SAM CLI.
  4. Installer Docker.
  5. Assurez-vous que vous avez pépin installé.
  6. Installer et configurer le Interface de ligne de commande AWS (AWS CLI).
  7. Configurer vos informations d'identification AWS.

La solution est conçue pour fonctionner de manière optimale dans le us-east-1 ainsi que us-west-2 Les régions bénéficieront de quotas par défaut plus élevés pour Amazon Textract. Pour les charges de travail régionales spécifiques, reportez-vous à Points de terminaison et quotas Amazon Textract. Assurez-vous d'utiliser une seule région pour l'ensemble de la solution.

Cloner le repo

Pour commencer, clonez le référentiel en exécutant la commande suivante : puis on bascule dans le répertoire de travail :

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

Flux de travail des solutions

La solution se compose de trois workflows :

  • workflow1_endpointbuilder – Prend les documents de formation et crée un point de terminaison de classification personnalisé sur Amazon Comprehend.
  • workflow2_docsplitter – Agit en tant que service de fractionnement de documents, où les documents sont divisés par classe. Il utilise le point de terminaison de classification créé dans workflow1.
  • workflow3_local – Est destiné aux clients qui évoluent dans des secteurs hautement réglementés et qui ne peuvent pas conserver les données dans Amazon S3. Ce workflow contient des versions locales de workflow1 ainsi que workflow2.

Examinons en profondeur chaque flux de travail et leur fonctionnement.

Workflow 1 : Créer un classificateur Amazon Comprehend à partir de documents PDF, JPG ou PNG

Le premier flux de travail prend les documents stockés sur Amazon S3 et les envoie via une série d'étapes pour extraire les données des documents via Amazon Textract. Ensuite, les données extraites sont utilisées pour créer un point de terminaison de classification personnalisée Amazon Comprehend. Ceci est démontré dans le diagramme d’architecture suivant.

Lancer workflow1, vous avez besoin de l'URI Amazon S3 du dossier contenant les fichiers de l'ensemble de données de formation (il peut s'agir d'images, de PDF d'une seule page ou de PDF de plusieurs pages). La structure du dossier doit être la suivante :

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

Alternativement, la structure peut avoir des sous-répertoires imbriqués supplémentaires :

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

Les noms des sous-répertoires de classe (le deuxième niveau de répertoire) deviennent les noms des classes utilisées dans le modèle de classification personnalisé Amazon Comprehend. Par exemple, dans la structure de fichiers suivante, la classe pour form123.pdf is tax_forms:

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

Pour lancer le workflow, procédez comme suit :

  1. Téléchargez l'ensemble de données dans un compartiment S3 que vous possédez.

La recommandation est d'avoir plus de 50 échantillons pour chaque classe dans laquelle vous souhaitez classer. La capture d'écran suivante montre un exemple de cette structure de classe de document.

  1. Construire les sam-app en exécutant les commandes suivantes (modifiez les commandes fournies si nécessaire) :
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

La sortie de la build est un ARN pour une machine à états Step Functions.

  1. Une fois la construction terminée, accédez au Machines d'état sur la console Step Functions.
  2. Choisissez la machine à états que vous avez créée.
  3. Selectionnez Lancer l'exécution.
  4. Entrez les paramètres d'entrée requis suivants :
{
“folder_uri”: “s3://{your dataset}”
}

  1. Selectionnez Lancer l'exécution.

La machine à états démarre le flux de travail. Cela peut prendre plusieurs heures en fonction de la taille de l'ensemble de données. La capture d'écran suivante montre notre machine à états en cours.

Lorsque la machine à états est terminée, chaque étape du graphique est verte, comme le montre la capture d'écran suivante.

Vous pouvez accéder à la console Amazon Comprehend pour voir le point de terminaison déployé.

Vous avez maintenant créé votre classificateur personnalisé à l'aide de vos documents. Cela marque la fin de workflow1.

Workflow 2 : Créer un point de terminaison

Le deuxième workflow prend le point de terminaison que vous avez créé dans workflow1 et divise les documents en fonction des classes avec lesquelles le modèle a été formé. Ceci est démontré dans le diagramme d’architecture suivant.

Lancer workflow2, nous construisons le sam-app. Modifiez les commandes fournies si nécessaire :

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

Une fois la pile créée, vous recevez un DNS Load Balancer sur le Sortie de la pile CloudFormation. Vous pouvez commencer à envoyer des requêtes à ce point de terminaison.

Un exemple de demande est disponible dans le workflow2_docsplitter/sample_request_folder/sample_s3_request.py déposer. L'API prend trois paramètres : le nom du compartiment S3, l'URI Amazon S3 du document et l'ARN du point de terminaison de classification Amazon Comprehend. Workflow2 prend uniquement en charge la saisie PDF.

Pour notre test, nous utilisons un document hypothécaire de 11 pages avec cinq types de documents différents.

La réponse de l'API est un URI Amazon S3 pour un fichier .zip contenant tous les documents fractionnés. Vous pouvez également trouver ce fichier dans le compartiment que vous avez fourni dans votre appel API.

Téléchargez l'objet et examinez les documents répartis en fonction de la classe.

Ceci marque la fin de workflow2. Nous avons maintenant montré comment utiliser un point de terminaison de classification Amazon Comprehend personnalisé pour classer et diviser des documents.

Workflow 3 : fractionnement de documents locaux

Notre troisième flux de travail poursuit un objectif similaire à workflow1 ainsi que workflow2 pour générer un point de terminaison Amazon Comprehend ; cependant, tout le traitement est effectué à l'aide de votre ordinateur local pour générer un fichier CSV compatible avec Amazon Comprehend. Ce flux de travail a été créé pour les clients des secteurs hautement réglementés où la persistance de documents PDF sur Amazon S3 peut ne pas être possible. Le diagramme d'architecture suivant est une représentation visuelle du flux de travail du générateur de point de terminaison local.

Le diagramme suivant illustre l’architecture locale du séparateur de documents.

Tout le code de la solution est disponible dans le workflow3_local/local_endpointbuilder.py fichier pour créer le point de terminaison de classification Amazon Comprehend et workflow3_local/local_docsplitter.py pour envoyer des documents à fractionner.

Conclusion

Le fractionnement des documents est la clé pour créer un flux de travail de traitement de documents réussi et intelligent. Il s'agit toujours d'un problème très pertinent pour les entreprises, en particulier pour les organisations regroupant plusieurs types de documents pour leurs opérations quotidiennes. Quelques exemples incluent le traitement des documents de réclamation d'assurance, des demandes de police d'assurance, des documents SEC, des formulaires fiscaux et des formulaires de vérification des revenus.

Dans cet article, nous avons pris un ensemble de documents courants utilisés pour le traitement des prêts, extrait les données à l'aide d'Amazon Textract et créé un point de terminaison de classification personnalisé Amazon Comprehend. Avec ce point de terminaison, nous avons classé les documents entrants et les avons divisés en fonction de leur classe respective. Vous pouvez appliquer ce processus à presque n’importe quel ensemble de documents ayant des applications dans divers secteurs, tels que les soins de santé et les services financiers. Pour en savoir plus sur Amazon Text, visitez la page web.


À propos des auteurs

Aditi Rajnish est un étudiant de première année en génie logiciel à l'Université de Waterloo. Ses intérêts incluent la vision par ordinateur, le traitement du langage naturel et l'informatique de pointe. Elle est également passionnée par la sensibilisation et le plaidoyer STEM communautaires. Dans ses temps libres, on peut la trouver en train de faire de l'escalade, de jouer du piano ou d'apprendre à préparer le scone parfait.

Raj Pathak est un architecte de solutions et un conseiller technique auprès de clients Fortune 50 et de taille moyenne FSI (banques, assurances, marchés des capitaux) au Canada et aux États-Unis. Raj se spécialise dans l'apprentissage automatique avec des applications dans l'extraction de documents, la transformation du centre de contact et la vision par ordinateur.

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

Horodatage:

Plus de Blog sur l'apprentissage automatique AWS