Op intelligente wijze multi-form documentpakketten splitsen met Amazon Textract en Amazon Comprehend

Bronknooppunt: 1372716

Veel organisaties van verschillende groottes en branchetakken zijn nog steeds afhankelijk van grote hoeveelheden documenten om hun dagelijkse activiteiten uit te voeren. Om deze zakelijke uitdaging op te lossen, maken klanten gebruik van intelligente documentverwerkingsservices van AWS, zoals Amazon T-extract en Amazon begrijpt het om mee te helpen extractie en procesautomatisering. Voordat u tekst, sleutel-waardeparen, tabellen en entiteiten kunt extraheren, moet u PDF-documenten met meerdere pagina's kunnen splitsen die vaak heterogene formuliertypen bevatten. Bij het verwerken van hypotheken moet een makelaar of persoon die een lening verwerkt bijvoorbeeld een geconsolideerd PDF-leningpakket splitsen, met daarin de hypotheekaanvraag (Fannie Mae-formulier 1003), W2's, inkomensverificatie, 1040 belastingformulieren en meer.

Om dit probleem aan te pakken, gebruiken organisaties op regels gebaseerde verwerking: het identificeren van documenttypes via formuliertitels, paginanummers, formulierlengtes, enzovoort. Deze benaderingen zijn foutgevoelig en moeilijk te schalen, vooral wanneer de formuliertypen verschillende variaties kunnen hebben. Dienovereenkomstig werken deze tijdelijke oplossingen in de praktijk snel stuk en vergroten ze de behoefte aan menselijke tussenkomst.

In dit bericht laten we zien hoe u uw eigen oplossing voor het splitsen van documenten kunt maken met weinig code voor elke set formulieren, zonder aangepaste regels of verwerkingsworkflows te bouwen.

Overzicht oplossingen

Voor dit bericht gebruiken we een reeks veelgebruikte hypotheekaanvraagformulieren om te demonstreren hoe u Amazon Textract en Amazon Comprehend kunt gebruiken om een ​​intelligente documentsplitser te creëren die robuuster is dan eerdere benaderingen. Bij het verwerken van documenten voor hypotheekaanvragen dient de lener een PDF met meerdere pagina's in die is samengesteld uit heterogene documenttypen van verschillende paginalengtes; om informatie te extraheren, moet de gebruiker (bijvoorbeeld een bank) deze pdf uitsplitsen.

Hoewel we een specifiek voorbeeld laten zien voor hypotheekformulieren, kunt u deze aanpak in het algemeen schalen en toepassen op vrijwel elke set PDF-documenten met meerdere pagina's.

We gebruiken Amazon Textract om gegevens uit het document te extraheren en een Amazon Comprehend-compatibele dataset te bouwen om een documentclassificatiemodel. Vervolgens trainen we het classificatiemodel en creëren we een classificatie-eindpunt dat real-time documentanalyse kan uitvoeren. Houd er rekening mee dat er kosten in rekening worden gebracht voor Amazon Textract- en Amazon Comprehend-classificatie-eindpunten, dus raadpleeg Amazon Textract-prijzen en Amazon begrijpt prijzen voor meer informatie. Tot slot laten we zien hoe we met dit eindpunt documenten kunnen classificeren en documenten kunnen splitsen op basis van de classificatieresultaten.

Deze oplossing maakt gebruik van de volgende AWS-services:

Voorwaarden

U moet aan de volgende vereisten voldoen om deze oplossing te bouwen en te implementeren:

  1. Install Python 3.8.x.
  2. Install jq.
  3. Install de AWS SAM CLI.
  4. Install havenarbeider.
  5. Zorg dat je hebt pip geïnstalleerd.
  6. Installeren en configureren de AWS-opdrachtregelinterface (AWS CLI).
  7. Configure uw AWS-referenties.

De oplossing is ontworpen om optimaal te werken in de us-east-1 en us-west-2 Regio's om te profiteren van hogere standaardquota voor Amazon Textract. Raadpleeg voor specifieke regionale workloads Amazon Textract-eindpunten en quota. Zorg ervoor dat u één regio gebruikt voor de hele oplossing.

Kloon de opslagplaats

Om te beginnen, kloont u de repository door de volgende opdracht uit te voeren; dan schakelen we over naar de werkdirectory:

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

Oplossingsworkflows

De oplossing bestaat uit drie workflows:

  • workflow1_endpointbuilder – Neemt de trainingsdocumenten en bouwt een aangepast classificatie-eindpunt op Amazon Comprehend.
  • workflow2_docsplitter – Fungeert als service voor het splitsen van documenten, waarbij documenten per klasse worden gesplitst. Het gebruikt het classificatie-eindpunt dat is gemaakt in workflow1.
  • werkstroom3_lokaal - Is bedoeld voor klanten die zich in sterk gereguleerde sectoren bevinden en geen gegevens in Amazon S3 kunnen bewaren. Deze workflow bevat lokale versies van workflow1 en workflow2.

Laten we dieper ingaan op elke workflow en hoe ze werken.

Workflow 1: bouw een Amazon Comprehend-classificatie van PDF-, JPG- of PNG-documenten

De eerste workflow neemt documenten die zijn opgeslagen op Amazon S3 en stuurt ze door een reeks stappen om de gegevens uit de documenten te extraheren via Amazon Textract. Vervolgens worden de geëxtraheerde gegevens gebruikt om een ​​Amazon Comprehend aangepast classificatie-eindpunt te maken. Dit wordt gedemonstreerd in het volgende architectuurdiagram.

Lanceren workflow1, hebt u de Amazon S3-URI nodig van de map met de trainingsgegevenssetbestanden (dit kunnen afbeeldingen, PDF's van één pagina of PDF's met meerdere pagina's zijn). De structuur van de map moet als volgt zijn:

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

Als alternatief kan de structuur extra geneste submappen hebben:

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

De namen van de klassensubmappen (het tweede mapniveau) worden de namen van de klassen die worden gebruikt in het aangepaste classificatiemodel van Amazon Comprehend. In de volgende bestandsstructuur is bijvoorbeeld de klasse voor form123.pdf is tax_forms:

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

Voer de volgende stappen uit om de workflow te starten:

  1. Upload de dataset naar een S3-bucket waarvan u de eigenaar bent.

De aanbeveling is om meer dan 50 monsters te hebben voor elke klasse waarop u wilt classificeren. De volgende schermafbeelding toont een voorbeeld van deze structuur van documentklassen.

  1. Bouw het sam-app door de volgende opdrachten uit te voeren (wijzig de verstrekte opdrachten indien nodig):
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

De output van de build is een ARN voor een Step Functions state machine.

  1. Wanneer de build is voltooid, navigeert u naar de Staatsmachines pagina op de Step Functions-console.
  2. Kies de statusmachine die u hebt gemaakt.
  3. Kies Start de uitvoering.
  4. Voer de volgende vereiste invoerparameters in:
{
“folder_uri”: “s3://{your dataset}”
}

  1. Kies Start de uitvoering.

De toestandsmachine start de workflow. Dit kan meerdere uren duren, afhankelijk van de grootte van de dataset. De volgende schermafbeelding toont onze toestandsmachine in uitvoering.

Wanneer de toestandsmachine is voltooid, is elke stap in de grafiek groen, zoals te zien is in de volgende schermafbeelding.

U kunt naar de Amazon Comprehend-console navigeren om het geïmplementeerde eindpunt te zien.

U heeft nu uw aangepaste classificatie gebouwd met behulp van uw documenten. Dit markeert het einde van workflow1.

Workflow 2: bouw een eindpunt

De tweede werkstroom neemt het eindpunt waarin u hebt gemaakt workflow1 en splitst de documenten op basis van de klassen waarmee het model is getraind. Dit wordt gedemonstreerd in het volgende architectuurdiagram.

Lanceren workflow2, wij bouwen de sam-app. Pas de verstrekte opdrachten naar behoefte aan:

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

Nadat de stapel is gemaakt, ontvangt u een Load Balancer DNS op de Uitgangen tabblad van de CloudFormation-stack. U kunt verzoeken indienen bij dit eindpunt.

Een voorbeeldaanvraag is beschikbaar in de workflow2_docsplitter/sample_request_folder/sample_s3_request.py bestand. De API gebruikt drie parameters: de S3-bucketnaam, de Amazon S3-URI van het document en het Amazon Comprehend-classificatie-eindpunt ARN. Workflow2 ondersteunt alleen PDF-invoer.

Voor onze test gebruiken we een hypotheekdocument van 11 pagina's met vijf verschillende documenttypes.

Het antwoord voor de API is een Amazon S3 URI voor een .zip-bestand met alle gesplitste documenten. U kunt dit bestand ook vinden in de bucket die u hebt opgegeven in uw API-aanroep.

Download het object en bekijk de gesplitste documenten op basis van de klasse.

Dit markeert het einde van workflow2. We hebben nu laten zien hoe we een aangepast Amazon Comprehend-classificatie-eindpunt kunnen gebruiken om documenten te classificeren en te splitsen.

Workflow 3: lokale documentsplitsing

Onze derde workflow volgt een soortgelijk doel als workflow1 en workflow2 om een ​​Amazon Comprehend-eindpunt te genereren; alle verwerking wordt echter gedaan met behulp van uw lokale computer om een ​​Amazon Comprehend-compatibel CSV-bestand te genereren. Deze workflow is gemaakt voor klanten in sterk gereguleerde branches waar het niet mogelijk is om PDF-documenten op Amazon S3 te bewaren. Het volgende architectuurdiagram is een visuele weergave van de werkstroom van de lokale eindpuntbouwer.

Het volgende diagram illustreert de architectuur van de lokale documentsplitser.

Alle code voor de oplossing is beschikbaar in de workflow3_local/local_endpointbuilder.py bestand om het Amazon Comprehend-classificatie-eindpunt te bouwen en workflow3_local/local_docsplitter.py om documenten te verzenden voor splitsing.

Conclusie

Het splitsen van documenten is de sleutel tot het bouwen van een succesvolle en intelligente documentverwerkingsworkflow. Het is nog steeds een zeer relevant probleem voor bedrijven, met name organisaties die meerdere documenttypen samenvoegen voor hun dagelijkse activiteiten. Enkele voorbeelden zijn het verwerken van documenten voor verzekeringsclaims, aanvragen voor verzekeringspolissen, SEC-documenten, belastingformulieren en formulieren voor inkomensverificatie.

In dit bericht hebben we een reeks algemene documenten gebruikt voor het verwerken van leningen, de gegevens geëxtraheerd met Amazon Textract en een aangepast Amazon Comprehend-classificatie-eindpunt gebouwd. Met dat eindpunt hebben we inkomende documenten geclassificeerd en opgesplitst op basis van hun respectievelijke klasse. U kunt dit proces toepassen op vrijwel elke set documenten met toepassingen in verschillende sectoren, zoals de gezondheidszorg en de financiële dienstverlening. Voor meer informatie over Amazon Textract, bezoek de webpagina.


Over de auteurs

Aditi Rajnish is een eerstejaars student software engineering aan de Universiteit van Waterloo. Haar interesses omvatten computervisie, natuurlijke taalverwerking en edge computing. Ze is ook gepassioneerd door community-based STEM-outreach en belangenbehartiging. In haar vrije tijd kan ze rotsklimmen, piano spelen of leren hoe ze de perfecte scone moet bakken.

Raj Pathak is Solutions Architect en technisch adviseur voor Fortune 50- en middelgrote FSI-klanten (Banking, Insurance, Capital Markets) in Canada en de Verenigde Staten. Raj is gespecialiseerd in Machine Learning met toepassingen in Document Extraction, Contact Center Transformation en Computer Vision.

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

Tijdstempel:

Meer van AWS Blog over machine learning