Intelligente Aufteilung von Dokumentenpaketen mit mehreren Formularen mit Amazon Textract und Amazon Comprehend

Quellknoten: 1372716

Viele Unternehmen unterschiedlicher Größe und Branche sind für ihre täglichen Abläufe immer noch auf große Mengen an Dokumenten angewiesen. Um diese geschäftliche Herausforderung zu lösen, nutzen Kunden intelligente Dokumentenverarbeitungsdienste von AWS, wie z Amazontext und Amazon verstehen zu helfen Extraktion und Prozessautomatisierung. Bevor Sie Text, Schlüssel-Wert-Paare, Tabellen und Entitäten extrahieren können, müssen Sie in der Lage sein, mehrseitige PDF-Dokumente aufzuteilen, die häufig heterogene Formulartypen enthalten. Bei der Hypothekenbearbeitung muss beispielsweise ein Makler oder eine Kreditbearbeitungsperson möglicherweise ein konsolidiertes PDF-Kreditpaket aufteilen, das den Hypothekenantrag (Fannie Mae-Formular 1003), W2s, Einkommensnachweise, 1040-Steuerformulare und mehr enthält.

Um dieses Problem anzugehen, verwenden Unternehmen eine regelbasierte Verarbeitung: Sie identifizieren Dokumenttypen anhand von Formulartiteln, Seitenzahlen, Formularlängen usw. Diese Ansätze sind fehleranfällig und schwierig zu skalieren, insbesondere wenn die Formulartypen mehrere Variationen aufweisen können. Dementsprechend scheitern diese Workarounds in der Praxis schnell und erhöhen den Bedarf an menschlichem Eingreifen.

In diesem Beitrag zeigen wir, wie Sie mit wenig Code für beliebige Formularsätze Ihre eigene Lösung zur Dokumentenaufteilung erstellen können, ohne benutzerdefinierte Regeln oder Verarbeitungsworkflows zu erstellen.

Lösungsüberblick

In diesem Beitrag verwenden wir eine Reihe gängiger Hypothekenantragsformulare, um zu zeigen, wie Sie mit Amazon Textract und Amazon Comprehend einen intelligenten Dokumentensplitter erstellen können, der robuster ist als frühere Ansätze. Bei der Bearbeitung von Dokumenten für Hypothekenanträge reicht der Kreditnehmer ein mehrseitiges PDF ein, das aus heterogenen Dokumenttypen unterschiedlicher Seitenlänge besteht; Um Informationen zu extrahieren, muss der Benutzer (z. B. eine Bank) dieses PDF aufschlüsseln.

Obwohl wir ein spezifisches Beispiel für Hypothekenformulare zeigen, können Sie diesen Ansatz im Allgemeinen skalieren und auf nahezu jeden Satz mehrseitiger PDF-Dokumente anwenden.

Wir verwenden Amazon Textract, um Daten aus dem Dokument zu extrahieren und einen mit Amazon Comprehend kompatiblen Datensatz zu erstellen, um a zu trainieren Dokumentenklassifizierungsmodell. Als Nächstes trainieren wir das Klassifizierungsmodell und erstellen einen Klassifizierungsendpunkt, der eine Dokumentenanalyse in Echtzeit durchführen kann. Beachten Sie, dass für die Klassifizierungsendpunkte Amazon Textract und Amazon Comprehend Gebühren anfallen Preisgestaltung für Amazon Textract und Amazon Preisgestaltung verstehen für mehr Informationen. Abschließend zeigen wir, wie wir Dokumente mit diesem Endpunkt klassifizieren und Dokumente basierend auf den Klassifizierungsergebnissen aufteilen können.

Diese Lösung nutzt die folgenden AWS-Dienste:

Voraussetzungen:

Sie müssen die folgenden Voraussetzungen erfüllen, um diese Lösung zu erstellen und bereitzustellen:

  1. Installieren Python 3.8.x.
  2. Installieren jq.
  3. Installieren die AWS SAM CLI.
  4. Installieren Docker.
  5. Upewnij się, że pip installiert.
  6. Installieren und konfigurieren AWS-Befehlszeilenschnittstelle (AWS-CLI).
  7. Einrichtung Ihre AWS-Anmeldeinformationen.

Die Lösung ist so konzipiert, dass sie optimal funktioniert us-east-1 und us-west-2 Regionen sollen von höheren Standardkontingenten für Amazon Textract profitieren. Informationen zu spezifischen regionalen Workloads finden Sie unter Amazon Textract-Endpunkte und -Kontingente. Stellen Sie sicher, dass Sie für die gesamte Lösung eine einzige Region verwenden.

Klonen Sie das Repo

Klonen Sie zunächst das Repository, indem Sie den folgenden Befehl ausführen: dann wechseln wir in das Arbeitsverzeichnis:

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

Lösungsworkflows

Die Lösung besteht aus drei Workflows:

  • Workflow1_endpointbuilder – Nimmt die Schulungsunterlagen und erstellt einen benutzerdefinierten Klassifizierungsendpunkt auf Amazon Comprehend.
  • Workflow2_docsplitter – Fungiert als Dokumentenaufteilungsdienst, bei dem Dokumente nach Klasse aufgeteilt werden. Es verwendet den in erstellten Klassifizierungsendpunkt workflow1.
  • Workflow3_local – Ist für Kunden gedacht, die in stark regulierten Branchen tätig sind und keine Daten in Amazon S3 speichern können. Dieser Workflow enthält lokale Versionen von workflow1 und workflow2.

Lassen Sie uns einen tiefen Einblick in jeden Workflow und seine Funktionsweise werfen.

Arbeitsablauf 1: Erstellen Sie einen Amazon Comprehend-Klassifikator aus PDF-, JPG- oder PNG-Dokumenten

Der erste Workflow nimmt auf Amazon S3 gespeicherte Dokumente und sendet sie durch eine Reihe von Schritten, um die Daten über Amazon Textract aus den Dokumenten zu extrahieren. Anschließend werden die extrahierten Daten verwendet, um einen benutzerdefinierten Amazon Comprehend-Klassifizierungsendpunkt zu erstellen. Dies wird im folgenden Architekturdiagramm veranschaulicht.

Starten workflow1benötigen Sie den Amazon S3-URI des Ordners, der die Trainingsdatensatzdateien enthält (dies können Bilder, einseitige PDFs oder mehrseitige PDFs sein). Die Struktur des Ordners muss wie folgt sein:

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

Alternativ kann die Struktur zusätzlich verschachtelte Unterverzeichnisse haben:

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

Die Namen der Klassenunterverzeichnisse (zweite Verzeichnisebene) werden zu den Namen der Klassen, die im benutzerdefinierten Klassifizierungsmodell von Amazon Comprehend verwendet werden. In der folgenden Dateistruktur ist beispielsweise die Klasse für form123.pdf is tax_forms:

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

Um den Workflow zu starten, führen Sie die folgenden Schritte aus:

  1. Laden Sie den Datensatz in einen S3-Bucket hoch, der Ihnen gehört.

Die Empfehlung lautet, über 50 Stichproben für jede Klasse zu haben, nach der Sie klassifizieren möchten. Der folgende Screenshot zeigt ein Beispiel dieser Dokumentklassenstruktur.

  1. Baue die sam-app indem Sie die folgenden Befehle ausführen (ändern Sie die bereitgestellten Befehle nach Bedarf):
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

Die Ausgabe des Builds ist ein ARN für eine Step Functions-Zustandsmaschine.

  1. Wenn der Build abgeschlossen ist, navigieren Sie zu Zustandsautomaten Seite auf der Step Functions-Konsole.
  2. Wählen Sie den von Ihnen erstellten Zustandsautomaten aus.
  3. Auswählen Starten Sie die Ausführung.
  4. Geben Sie die folgenden erforderlichen Eingabeparameter ein:
{
“folder_uri”: “s3://{your dataset}”
}

  1. Auswählen Starten Sie die Ausführung.

Die Zustandsmaschine startet den Workflow. Dies kann je nach Größe des Datensatzes mehrere Stunden dauern. Der folgende Screenshot zeigt unseren Zustandsautomaten im laufenden Betrieb.

Wenn die Zustandsmaschine abgeschlossen ist, ist jeder Schritt im Diagramm grün, wie im folgenden Screenshot dargestellt.

Sie können zur Amazon Comprehend-Konsole navigieren, um den bereitgestellten Endpunkt anzuzeigen.

Sie haben jetzt Ihren benutzerdefinierten Klassifikator anhand Ihrer Dokumente erstellt. Dies markiert das Ende von workflow1.

Workflow 2: Erstellen Sie einen Endpunkt

Der zweite Workflow verwendet den Endpunkt, den Sie erstellt haben workflow1 und teilt die Dokumente basierend auf den Klassen auf, mit denen das Modell trainiert wurde. Dies wird im folgenden Architekturdiagramm veranschaulicht.

Starten workflow2, wir bauen das sam-app. Ändern Sie die bereitgestellten Befehle nach Bedarf:

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

Nachdem der Stack erstellt wurde, erhalten Sie einen Load Balancer-DNS auf dem Ausgänge Registerkarte des CloudFormation-Stacks. Sie können damit beginnen, Anfragen an diesen Endpunkt zu stellen.

Eine Musteranfrage finden Sie im workflow2_docsplitter/sample_request_folder/sample_s3_request.py Datei. Die API benötigt drei Parameter: den S3-Bucket-Namen, den Amazon S3-URI des Dokuments und den Amazon Comprehend-Klassifizierungsendpunkt-ARN. Workflow2 unterstützt nur die PDF-Eingabe.

Für unseren Test verwenden wir ein 11-seitiges Hypothekendokument mit fünf verschiedenen Dokumenttypen.

Die Antwort für die API ist ein Amazon S3-URI für eine ZIP-Datei mit allen geteilten Dokumenten. Sie finden diese Datei auch in dem Bucket, den Sie in Ihrem API-Aufruf bereitgestellt haben.

Laden Sie das Objekt herunter und überprüfen Sie die nach Klasse aufgeteilten Dokumente.

Dies markiert das Ende von workflow2. Wir haben nun gezeigt, wie wir einen benutzerdefinierten Amazon Comprehend-Klassifizierungsendpunkt verwenden können, um Dokumente zu klassifizieren und aufzuteilen.

Workflow 3: Lokale Dokumentenaufteilung

Unser dritter Workflow verfolgt einen ähnlichen Zweck wie workflow1 und workflow2 um einen Amazon Comprehend-Endpunkt zu generieren; Die gesamte Verarbeitung erfolgt jedoch über Ihren lokalen Computer, um eine mit Amazon Comprehend kompatible CSV-Datei zu generieren. Dieser Workflow wurde für Kunden in stark regulierten Branchen entwickelt, in denen die Beibehaltung von PDF-Dokumenten auf Amazon S3 möglicherweise nicht möglich ist. Das folgende Architekturdiagramm ist eine visuelle Darstellung des lokalen Endpunkt-Builder-Workflows.

Das folgende Diagramm veranschaulicht die lokale Dokument-Splitter-Architektur.

Der gesamte Code für die Lösung ist im verfügbar workflow3_local/local_endpointbuilder.py Datei zum Erstellen des Amazon Comprehend-Klassifizierungsendpunkts und workflow3_local/local_docsplitter.py um Dokumente zur Aufteilung zu versenden.

Zusammenfassung

Die Dokumentenaufteilung ist der Schlüssel zum Aufbau eines erfolgreichen und intelligenten Dokumentenverarbeitungsworkflows. Dies ist immer noch ein sehr relevantes Problem für Unternehmen, insbesondere für Organisationen, die für ihre täglichen Abläufe mehrere Dokumenttypen zusammenfassen. Einige Beispiele umfassen die Bearbeitung von Versicherungsanspruchsdokumenten, Versicherungsanträgen, SEC-Dokumenten, Steuerformularen und Formularen zur Einkommensüberprüfung.

In diesem Beitrag haben wir eine Reihe gängiger Dokumente, die für die Kreditbearbeitung verwendet werden, genommen, die Daten mit Amazon Textract extrahiert und einen benutzerdefinierten Amazon Comprehend-Klassifizierungsendpunkt erstellt. Mit diesem Endpunkt haben wir eingehende Dokumente klassifiziert und nach ihrer jeweiligen Klasse aufgeteilt. Sie können diesen Prozess auf nahezu jeden Dokumentensatz mit Anwendungen in einer Vielzahl von Branchen anwenden, beispielsweise im Gesundheitswesen und im Finanzdienstleistungsbereich. Um mehr über Amazon Textract zu erfahren, Besuchen Sie die Webseite.


Über die Autoren

Aditi Rajnisch ist Student im ersten Jahr Software Engineering an der University of Waterloo. Ihre Interessen umfassen Computer Vision, Natural Language Processing und Edge Computing. Sie engagiert sich auch leidenschaftlich für Community-basierte MINT-Aufklärung und Interessenvertretung. In ihrer Freizeit findet man sie beim Klettern, Klavierspielen oder lernt, wie man den perfekten Scone backt.

Raj Pathak ist Lösungsarchitekt und technischer Berater für Fortune-50- und mittelständische FSI-Kunden (Banken, Versicherungen, Kapitalmärkte) in Kanada und den Vereinigten Staaten. Raj ist spezialisiert auf maschinelles Lernen mit Anwendungen in den Bereichen Dokumentenextraktion, Contact Center Transformation und Computer Vision.

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

Zeitstempel:

Mehr von AWS-Blog für maschinelles Lernen