Dividi in modo intelligente i pacchetti di documenti multiformi con Amazon Texttract e Amazon Comprehend

Nodo di origine: 1372716

Molte organizzazioni di diverse dimensioni e settori verticali si affidano ancora a grandi volumi di documenti per eseguire le proprie operazioni quotidiane. Per risolvere questa sfida aziendale, i clienti utilizzano servizi di elaborazione intelligente dei documenti di AWS come Testo Amazon ed Amazon Comprehend per aiutare con estrazione e automazione dei processi. Prima di poter estrarre testo, coppie chiave-valore, tabelle ed entità, devi essere in grado di dividere documenti PDF multipagina che spesso contengono tipi di modulo eterogenei. Ad esempio, nell'elaborazione dei mutui, un broker o un addetto all'elaborazione del prestito potrebbe dover dividere un pacchetto di prestito PDF consolidato, contenente la domanda di mutuo (modulo Fannie Mae 1003), W2, verifica del reddito, moduli fiscali 1040 e altro.

Per affrontare questo problema, le organizzazioni utilizzano l'elaborazione basata su regole: identificazione dei tipi di documenti tramite titoli dei moduli, numeri di pagina, lunghezze dei moduli e così via. Questi approcci sono soggetti a errori e difficili da scalare, soprattutto quando i tipi di modulo possono avere diverse varianti. Di conseguenza, queste soluzioni alternative si rompono rapidamente nella pratica e aumentano la necessità di intervento umano.

In questo post, mostriamo come creare la tua soluzione di suddivisione dei documenti con poco codice per qualsiasi set di moduli, senza creare regole personalizzate o elaborare flussi di lavoro.

Panoramica della soluzione

Per questo post, utilizziamo una serie di moduli di richiesta di mutuo comuni per dimostrare come è possibile utilizzare Amazon Textract e Amazon Comprehend per creare un divisore di documenti intelligente che è più robusto rispetto agli approcci precedenti. Durante l'elaborazione dei documenti per le domande di mutuo, il mutuatario invia un PDF multipagina composto da tipi di documenti eterogenei di diverse lunghezze di pagina; per estrarre informazioni, l'utente (ad esempio una banca) deve scomporre questo PDF.

Sebbene mostriamo un esempio specifico per i moduli di mutuo, in genere puoi ridimensionare e applicare questo approccio a quasi tutti i set di documenti PDF multipagina.

Utilizziamo Amazon Textract per estrarre i dati dal documento e creare un set di dati compatibile con Amazon Comprehend per addestrare a modello di classificazione dei documenti. Successivamente, addestriamo il modello di classificazione e creiamo un endpoint di classificazione in grado di eseguire l'analisi dei documenti in tempo reale. Tieni presente che gli endpoint di classificazione di Amazon Textract e Amazon Comprehend sono soggetti a costi, quindi fai riferimento a Prezzi di Amazon Textract ed Prezzi di Amazon Comprehend per maggiori informazioni. Infine, mostriamo come possiamo classificare i documenti con questo endpoint e dividere i documenti in base ai risultati della classificazione.

Questa soluzione utilizza i seguenti servizi AWS:

Prerequisiti

È necessario completare i seguenti prerequisiti per creare e distribuire questa soluzione:

  1. Installazione Python 3.8.x.
  2. Installazione jq.
  3. Installazione l'interfaccia a riga di comando di AWS SAM.
  4. Installazione docker.
  5. Assicurarsi di avere pip installato.
  6. Installa e configura , il Interfaccia della riga di comando di AWS (interfaccia a riga di comando dell'AWS).
  7. Configurazione le tue credenziali AWS.

La soluzione è progettata per funzionare in modo ottimale nel us-east-1 ed us-west-2 Regioni per sfruttare le quote predefinite più elevate per Amazon Text. Per i carichi di lavoro regionali specifici, fare riferimento a Endpoint e quote di Amazon Text. Assicurati di utilizzare un'unica regione per l'intera soluzione.

Clona il repo

Per iniziare, clona il repository eseguendo il seguente comando; quindi passiamo alla directory di lavoro:

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

Flussi di lavoro della soluzione

La soluzione si compone di tre flussi di lavoro:

  • flusso di lavoro1_endpointbuilder – Prende i documenti di formazione e crea un endpoint di classificazione personalizzato su Amazon Comprehend.
  • flusso di lavoro2_docsplitter – Agisce come il servizio di suddivisione dei documenti, in cui i documenti vengono suddivisi per classe. Utilizza l'endpoint di classificazione creato in workflow1.
  • flusso di lavoro3_locale – È destinato ai clienti che operano in settori altamente regolamentati e non possono conservare i dati in Amazon S3. Questo flusso di lavoro contiene versioni locali di workflow1 ed workflow2.

Diamo un'occhiata approfondita a ciascun flusso di lavoro e al modo in cui funzionano.

Flusso di lavoro 1: crea un classificatore Amazon Comprehend da documenti PDF, JPG o PNG

Il primo flusso di lavoro prende i documenti archiviati su Amazon S3 e li invia attraverso una serie di passaggi per estrarre i dati dai documenti tramite Amazon Textract. Quindi, i dati estratti vengono utilizzati per creare un endpoint di classificazione personalizzato Amazon Comprehend. Ciò è dimostrato nel diagramma dell'architettura seguente.

Lanciare workflow1, è necessario l'URI Amazon S3 della cartella contenente i file del set di dati di addestramento (che possono essere immagini, PDF a pagina singola o PDF a più pagine). La struttura della cartella deve essere la seguente:

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

In alternativa, la struttura può avere sottodirectory nidificate aggiuntive:

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

I nomi delle sottodirectory di classe (il secondo livello di directory) diventano i nomi delle classi utilizzate nel modello di classificazione personalizzato di Amazon Comprehend. Ad esempio, nella seguente struttura di file, la classe per form123.pdf is tax_forms:

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

Per avviare il flusso di lavoro, completare i seguenti passaggi:

  1. Carica il set di dati in un bucket S3 di tua proprietà.

La raccomandazione è di avere più di 50 campioni per ogni classe in cui vuoi classificare. La schermata seguente mostra un esempio di questa struttura di classi di documenti.

  1. Costruisci il sam-app eseguendo i seguenti comandi (modificare i comandi forniti secondo necessità):
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

L'output della build è un ARN per una macchina a stati di Step Functions.

  1. Quando la build è completa, vai a macchine di stato pagina sulla console Step Functions.
  2. Scegli la macchina a stati che hai creato.
  3. Scegli Inizia l'esecuzione.
  4. Immettere i seguenti parametri di input richiesti:
{
“folder_uri”: “s3://{your dataset}”
}

  1. Scegli Inizia l'esecuzione.

La macchina a stati avvia il flusso di lavoro. Questa operazione può richiedere più ore a seconda delle dimensioni del set di dati. Lo screenshot seguente mostra la nostra macchina a stati in corso.

Quando la macchina a stati è completa, ogni passaggio nel grafico è verde, come mostrato nella schermata seguente.

Puoi accedere alla console Amazon Comprehend per vedere l'endpoint distribuito.

Ora hai creato il tuo classificatore personalizzato usando i tuoi documenti. Questo segna la fine di workflow1.

Flusso di lavoro 2: crea un endpoint

Il secondo flusso di lavoro prende l'endpoint creato in workflow1 e suddivide i documenti in base alle classi con cui il modello è stato addestrato. Ciò è dimostrato nel diagramma dell'architettura seguente.

Lanciare workflow2, costruiamo il sam-app. Modifica i comandi forniti secondo necessità:

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

Dopo che lo stack è stato creato, ricevi un DNS Load Balancer sul Uscite scheda dello stack CloudFormation. Puoi iniziare a fare richieste a questo endpoint.

Una richiesta di campione è disponibile nel workflow2_docsplitter/sample_request_folder/sample_s3_request.py file. L'API accetta tre parametri: il nome del bucket S3, l'URI Amazon S3 del documento e l'ARN dell'endpoint di classificazione Amazon Comprehend. Workflow2 supporta solo l'input PDF.

Per il nostro test, utilizziamo un documento ipotecario di 11 pagine con cinque diversi tipi di documenti.

La risposta per l'API è un URI Amazon S3 per un file .zip con tutti i documenti divisi. Puoi anche trovare questo file nel bucket che hai fornito nella tua chiamata API.

Scarica l'oggetto e rivedi i documenti suddivisi in base alla classe.

Questo segna la fine di workflow2. Ora abbiamo mostrato come possiamo utilizzare un endpoint di classificazione Amazon Comprehend personalizzato per classificare e dividere i documenti.

Flusso di lavoro 3: suddivisione del documento locale

Il nostro terzo flusso di lavoro segue uno scopo simile a workflow1 ed workflow2 per generare un endpoint Amazon Comprehend; tuttavia, tutta l'elaborazione viene eseguita utilizzando il computer locale per generare un file CSV compatibile con Amazon Comprehend. Questo flusso di lavoro è stato creato per i clienti in settori altamente regolamentati in cui i documenti PDF persistenti su Amazon S3 potrebbero non essere possibili. Il diagramma dell'architettura seguente è una rappresentazione visiva del flusso di lavoro del generatore di endpoint locale.

Il diagramma seguente illustra l'architettura del separatore di documenti locale.

Tutto il codice per la soluzione è disponibile nel workflow3_local/local_endpointbuilder.py file per creare l'endpoint di classificazione Amazon Comprehend e workflow3_local/local_docsplitter.py inviare documenti per la scissione.

Conclusione

La suddivisione dei documenti è la chiave per creare un flusso di lavoro di elaborazione dei documenti efficace e intelligente. È ancora un problema molto rilevante per le aziende, in particolare le organizzazioni che aggregano più tipi di documenti per le loro operazioni quotidiane. Alcuni esempi includono l'elaborazione di documenti per richieste di risarcimento, domande di polizze assicurative, documenti SEC, moduli fiscali e moduli di verifica del reddito.

In questo post, abbiamo preso una serie di documenti comuni utilizzati per l'elaborazione del prestito, estratto i dati utilizzando Amazon Textract e creato un endpoint di classificazione personalizzato Amazon Comprehend. Con quell'endpoint, abbiamo classificato i documenti in arrivo e li abbiamo suddivisi in base alla rispettiva classe. Puoi applicare questo processo a quasi tutti i set di documenti con applicazioni in una varietà di settori, come i servizi sanitari e finanziari. Per saperne di più su Amazon Text, visita la pagina web.


Informazioni sugli autori

Aditi Rajnish è uno studente del primo anno di ingegneria del software presso l'Università di Waterloo. I suoi interessi includono la visione artificiale, l'elaborazione del linguaggio naturale e l'edge computing. È anche appassionata di divulgazione e advocacy STEM basata sulla comunità. Nel suo tempo libero, può essere trovata ad arrampicarsi su roccia, suonare il piano o imparare a cuocere la focaccina perfetta.

Raja Pathak è un Solutions Architect e un consulente tecnico per i clienti Fortune 50 e Mid-Sized FSI (Banking, Insurance, Capital Markets) in Canada e negli Stati Uniti. Raj è specializzato in Machine Learning con applicazioni in Document Extraction, Contact Center Transformation e Computer Vision.

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

Timestamp:

Di più da Blog di apprendimento automatico AWS