Inteligentnie dziel wieloformatowe pakiety dokumentów za pomocą Amazon Text i Amazon Comprehend

Węzeł źródłowy: 1372716

Wiele organizacji o różnej wielkości i różnych branżach nadal polega na dużych ilościach dokumentów w celu prowadzenia codziennych operacji. Aby rozwiązać to wyzwanie biznesowe, klienci korzystają z inteligentnych usług przetwarzania dokumentów AWS, takich jak Ekstrakt z amazonki i Amazon Comprehend pomóc ekstrakcji i automatyzacji procesów. Zanim będzie można wyodrębnić tekst, pary klucz-wartość, tabele i jednostki, trzeba mieć możliwość dzielenia wielostronicowych dokumentów PDF, które często zawierają heterogeniczne typy formularzy. Na przykład w przypadku przetwarzania kredytów hipotecznych broker lub osoba przetwarzająca pożyczki może potrzebować podzielić skonsolidowany pakiet pożyczek PDF, zawierający wniosek o kredyt hipoteczny (formularz Fannie Mae 1003), W2, weryfikację dochodu, formularze podatkowe 1040 i inne.

Aby rozwiązać ten problem, organizacje stosują przetwarzanie oparte na regułach: identyfikują typy dokumentów za pomocą tytułów formularzy, numerów stron, długości formularzy itd. Podejścia te są podatne na błędy i trudne do skalowania, zwłaszcza gdy typy formularzy mogą mieć kilka odmian. W związku z tym te obejścia szybko psują się w praktyce i zwiększają potrzebę interwencji człowieka.

W tym poście pokazujemy, jak możesz stworzyć własne rozwiązanie do dzielenia dokumentów przy użyciu niewielkiej ilości kodu dla dowolnego zestawu formularzy, bez tworzenia niestandardowych reguł lub przetwarzania przepływów pracy.

Omówienie rozwiązania

W tym poście używamy zestawu typowych formularzy wniosków o kredyt hipoteczny, aby zademonstrować, w jaki sposób można wykorzystać Amazon Texttract i Amazon Comprehend do stworzenia inteligentnego rozdzielacza dokumentów, który jest bardziej niezawodny niż wcześniejsze podejścia. Podczas przetwarzania dokumentów wniosku o kredyt hipoteczny pożyczkobiorca przesyła wielostronicowy plik PDF składający się z heterogenicznych typów dokumentów o różnej długości stron; aby wyodrębnić informacje, użytkownik (na przykład bank) musi podzielić ten plik PDF.

Chociaż pokazujemy konkretny przykład formularzy hipotecznych, ogólnie można skalować i stosować to podejście do niemal dowolnego zestawu wielostronicowych dokumentów PDF.

Używamy Amazon Texttract do wyodrębniania danych z dokumentu i tworzenia zestawu danych zgodnego z Amazon Comprehend w celu szkolenia model klasyfikacji dokumentów. Następnie trenujemy model klasyfikacji i tworzymy punkt końcowy klasyfikacji, który może przeprowadzać analizę dokumentów w czasie rzeczywistym. Pamiętaj, że punkty końcowe klasyfikacji Amazon Text i Amazon Comprehend wiążą się z opłatami, więc zapoznaj się z Ceny Amazon Text i Ceny Amazon Comprehend po więcej informacji. Na koniec pokazujemy, jak możemy klasyfikować dokumenty z tym punktem końcowym i dzielić dokumenty na podstawie wyników klasyfikacji.

To rozwiązanie korzysta z następujących usług AWS:

Wymagania wstępne

Aby skompilować i wdrożyć to rozwiązanie, należy spełnić następujące wymagania wstępne:

  1. Zainstalować Python 3.8.x.
  2. Zainstalować jq.
  3. Zainstalować CLI AWS SAM.
  4. Zainstalować Doker.
  5. Upewnij się, że zainstalowany pip.
  6. Zainstaluj i skonfiguruj dotychczasowy Interfejs wiersza poleceń AWS (interfejs wiersza poleceń AWS).
  7. Konfigurowanie swoje dane uwierzytelniające AWS.

Rozwiązanie zostało zaprojektowane tak, aby optymalnie działać w środowisku us-east-1 i us-west-2 Regiony, aby skorzystać z wyższych domyślnych limitów dla Amazon Texttract. Aby zapoznać się z określonymi obciążeniami regionalnymi, zobacz Punkty końcowe i limity Amazon Text. Upewnij się, że używasz jednego regionu dla całego rozwiązania.

Sklonuj repozytorium

Aby rozpocząć, sklonuj repozytorium, uruchamiając następujące polecenie; następnie przechodzimy do katalogu roboczego:

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

Przepływy pracy rozwiązania

Rozwiązanie składa się z trzech przepływów pracy:

  • konstruktor przepływu pracy1_endpoint – Bierze dokumenty szkoleniowe i buduje niestandardowy punkt końcowy klasyfikacji na Amazon Comprehend.
  • przepływ pracy2_docsplitter – Działa jako usługa dzielenia dokumentów, gdzie dokumenty są dzielone według klas. Używa punktu końcowego klasyfikacji utworzonego w workflow1.
  • przepływ pracy3_lokalny – Jest przeznaczony dla klientów, którzy działają w ściśle regulowanych branżach i nie mogą utrwalać danych w Amazon S3. Ten przepływ pracy zawiera lokalne wersje programu workflow1 i workflow2.

Przyjrzyjmy się bliżej każdemu przepływowi pracy i sposobowi jego działania.

Przepływ pracy 1: Zbuduj klasyfikator Amazon Comprehend z dokumentów PDF, JPG lub PNG

Pierwszy przepływ pracy pobiera dokumenty przechowywane na Amazon S3 i wysyła je przez szereg kroków w celu wyodrębnienia danych z dokumentów za pośrednictwem Amazon Texttract. Następnie wyodrębnione dane są używane do tworzenia niestandardowego punktu końcowego klasyfikacji Amazon Comprehend. Jest to pokazane na poniższym diagramie architektury.

Wystrzelić workflow1, potrzebujesz identyfikatora URI Amazon S3 folderu zawierającego pliki zestawu danych szkoleniowych (mogą to być obrazy, jednostronicowe pliki PDF lub wielostronicowe pliki PDF). Struktura folderu musi wyglądać następująco:

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

Alternatywnie struktura może mieć dodatkowe zagnieżdżone podkatalogi:

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

Nazwy podkatalogów klas (drugi poziom katalogu) stają się nazwami klas używanych w niestandardowym modelu klasyfikacji Amazon Comprehend. Na przykład w poniższej strukturze plików klasa for form123.pdf is tax_forms:

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

Aby uruchomić przepływ pracy, wykonaj następujące kroki:

  1. Prześlij zestaw danych do zasobnika S3, którego jesteś właścicielem.

Zaleca się posiadanie ponad 50 próbek dla każdej klasy, według której chcesz sklasyfikować. Poniższy zrzut ekranu przedstawia przykład struktury klas tego dokumentu.

  1. Zbuduj sam-app uruchamiając następujące polecenia (w razie potrzeby zmodyfikuj dostarczone polecenia):
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

Dane wyjściowe kompilacji to ARN dla maszyny stanów Step Functions.

  1. Po zakończeniu kompilacji przejdź do pliku Maszyny państwowe na konsoli Step Functions.
  2. Wybierz utworzoną maszynę stanów.
  3. Dodaj Rozpocznij wykonanie.
  4. Wprowadź następujące wymagane parametry wejściowe:
{
“folder_uri”: “s3://{your dataset}”
}

  1. Dodaj Rozpocznij wykonanie.

Maszyna stanów uruchamia przepływ pracy. Może to zająć wiele godzin w zależności od rozmiaru zestawu danych. Poniższy zrzut ekranu pokazuje naszą maszynę stanów w toku.

Gdy maszyna stanów jest kompletna, każdy krok na wykresie jest zielony, jak pokazano na poniższym zrzucie ekranu.

Możesz przejść do konsoli Amazon Comprehend, aby zobaczyć wdrożony punkt końcowy.

Zbudowałeś teraz swój niestandardowy klasyfikator przy użyciu swoich dokumentów. Oznacza to koniec workflow1.

Przepływ pracy 2: Zbuduj punkt końcowy

Drugi przepływ pracy obejmuje punkt końcowy, w którym został utworzony workflow1 i dzieli dokumenty na podstawie klas, z którymi model został przeszkolony. Jest to pokazane na poniższym diagramie architektury.

Wystrzelić workflow2, budujemy sam-app. W razie potrzeby zmodyfikuj podane polecenia:

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

Po utworzeniu stosu otrzymasz usługę Load Balancer DNS na Wyjścia zakładka stosu CloudFormation. Możesz zacząć wysyłać żądania do tego punktu końcowego.

Przykładowe żądanie jest dostępne w workflow2_docsplitter/sample_request_folder/sample_s3_request.py plik. Interfejs API przyjmuje trzy parametry: nazwę zasobnika S3, identyfikator URI dokumentu Amazon S3 i punkt końcowy klasyfikacji Amazon Comprehend ARN. Workflow2 obsługuje tylko wejście PDF.

W naszym teście używamy 11-stronicowego dokumentu hipotecznego z pięcioma różnymi typami dokumentów.

Odpowiedzią dla interfejsu API jest identyfikator URI Amazon S3 dla pliku .zip ze wszystkimi podzielonymi dokumentami. Możesz również znaleźć ten plik w zasobniku podanym w wywołaniu interfejsu API.

Pobierz obiekt i przejrzyj dokumenty podzielone na podstawie klasy.

To oznacza koniec workflow2. Pokazaliśmy teraz, jak możemy użyć niestandardowego punktu końcowego klasyfikacji Amazon Comprehend do klasyfikowania i dzielenia dokumentów.

Przepływ pracy 3: Lokalne dzielenie dokumentów

Nasz trzeci przepływ pracy ma podobny cel workflow1 i workflow2 do generowania punktu końcowego Amazon Comprehend; jednak całe przetwarzanie odbywa się przy użyciu komputera lokalnego w celu wygenerowania pliku CSV zgodnego z Amazon Comprehend. Ten przepływ pracy został stworzony dla klientów z branż o wysokim stopniu regulacji, w których przechowywanie dokumentów PDF w usłudze Amazon S3 może nie być możliwe. Poniższy diagram architektury jest wizualną reprezentacją przepływu pracy lokalnego konstruktora punktów końcowych.

Poniższy diagram ilustruje architekturę lokalnego rozdzielacza dokumentów.

Cały kod rozwiązania jest dostępny w workflow3_local/local_endpointbuilder.py plik do zbudowania punktu końcowego klasyfikacji Amazon Comprehend i workflow3_local/local_docsplitter.py wysłać dokumenty do podziału.

Wnioski

Podział dokumentów jest kluczem do zbudowania udanego i inteligentnego przepływu pracy związanego z przetwarzaniem dokumentów. Jest to nadal bardzo istotny problem dla firm, zwłaszcza organizacji agregujących wiele typów dokumentów na potrzeby ich codziennej działalności. Niektóre przykłady obejmują przetwarzanie dokumentów roszczeń ubezpieczeniowych, wniosków o polisę ubezpieczeniową, dokumentów SEC, formularzy podatkowych i formularzy weryfikacji dochodów.

W tym poście wzięliśmy zestaw typowych dokumentów używanych do przetwarzania pożyczek, wyodrębniliśmy dane za pomocą Amazon Texttract i zbudowaliśmy niestandardowy punkt końcowy klasyfikacji Amazon Comprehend. Dzięki temu punktowi końcowemu sklasyfikowaliśmy przychodzące dokumenty i podzieliliśmy je na podstawie ich odpowiedniej klasy. Możesz zastosować ten proces do prawie każdego zestawu dokumentów z aplikacjami w różnych branżach, takich jak opieka zdrowotna i usługi finansowe. Aby dowiedzieć się więcej o Amazon Text, odwiedź stronę internetową.


O autorach

Aditi Rajnish jest studentem pierwszego roku inżynierii oprogramowania na Uniwersytecie Waterloo. Jej zainteresowania obejmują wizję komputerową, przetwarzanie języka naturalnego i przetwarzanie brzegowe. Pasjonuje się także społecznościowym zasięgiem i rzecznictwem w dziedzinie STEM. W wolnym czasie można ją spotkać wspinając się po skałkach, grając na pianinie lub ucząc się pieczenia idealnej bułki.

Raj Pathak jest architektem rozwiązań i doradcą technicznym dla klientów z listy Fortune 50 i średniej wielkości FSI (bankowość, ubezpieczenia, rynki kapitałowe) w Kanadzie i Stanach Zjednoczonych. Raj specjalizuje się w uczeniu maszynowym z aplikacjami do ekstrakcji dokumentów, transformacji Contact Center i komputerowej wizji.

Źródło: https://aws.amazon.com/blogs/machine-learning/intelligently-split-multi-form-document-packages-with-amazon-textract-and-amazon-comprehend/

Znak czasu:

Więcej z Blog dotyczący uczenia maszynowego AWS