AmazonTextractとAmazonComprehendを使用してマルチフォームドキュメントパッケージをインテリジェントに分割

ソースノード: 1372716

規模や業種が異なる多くの組織は、依然として日常業務を遂行するために大量のドキュメントに依存しています。 このビジネス課題を解決するために、お客様は AWS の次のようなインテリジェントなドキュメント処理サービスを利用しています。 アマゾンテキストラック & Amazon Comprehend 助けるために 抽出とプロセスの自動化。 テキスト、キーと値のペア、テーブル、エンティティを抽出するには、異種フォーム タイプが含まれることが多い複数ページの PDF ドキュメントを分割できる必要があります。 たとえば、住宅ローンの処理では、ブローカーまたはローン処理担当者が、住宅ローン申請書 (ファニーメイ フォーム 1003)、W2、収入証明、1040 納税フォームなどを含む統合 PDF ローン パッケージを分割する必要がある場合があります。

この問題に取り組むために、組織はルールベースの処理を使用します。つまり、フォームのタイトル、ページ番号、フォームの長さなどによってドキュメントの種類を識別します。 これらのアプローチはエラーが発生しやすく、特にフォーム タイプに複数のバリエーションがある場合には拡張が困難です。 したがって、これらの回避策は実際にはすぐに機能しなくなり、人間の介入の必要性が増大します。

この投稿では、カスタム ルールを構築したりワークフローを処理したりせずに、フォームのセットに対してわずかなコードを使用して独自のドキュメント分割ソリューションを作成する方法を示します。

ソリューションの概要

この投稿では、一連の一般的な住宅ローン申請フォームを使用して、Amazon Textract と Amazon Comprehend を使用して、以前のアプローチよりも堅牢なインテリジェントなドキュメント スプリッターを作成する方法を示します。 住宅ローン申請用の書類を処理する際、借り手はさまざまなページ長の異種の種類の書類で構成される複数ページの PDF を送信します。 情報を抽出するには、ユーザー (銀行など) がこの PDF を分解する必要があります。

ここでは住宅ローンフォームの具体的な例を示していますが、一般に、このアプローチを複数ページの PDF ドキュメントのほぼすべてのセットに拡大縮小して適用できます。

Amazon Textract を使用してドキュメントからデータを抽出し、Amazon Comprehend と互換性のあるデータセットを構築してトレーニングします。 文書分類モデル。 次に、分類モデルをトレーニングし、リアルタイムのドキュメント分析を実行できる分類エンドポイントを作成します。 Amazon Textract および Amazon Comprehend 分類エンドポイントには料金が発生することに注意してください。そのため、以下を参照してください。 AmazonTextractの価格 & Amazonは価格を理解します 詳細については。 最後に、このエンドポイントを使用してドキュメントを分類し、分類結果に基づいてドキュメントを分割する方法を示します。

このソリューションでは、次の AWS サービスを使用します。

前提条件

このソリューションを構築して展開するには、次の前提条件を満たしている必要があります。

  1. インストールを開始する Python 3.8.x。
  2. インストールを開始する jq。
  3. インストールを開始する AWS SAM CLI。
  4. インストールを開始する デッカー.
  5. あなたが持っていることを確認する ピップがインストールされました.
  6. インストールと設定   AWSコマンドラインインターフェイス (AWS CLI)。
  7. 構成 AWS 認証情報。

このソリューションは、次の環境で最適に動作するように設計されています。 us-east-1 & us-west-2 Amazon Textract のより高いデフォルト クォータを利用するリージョン。 特定の地域のワークロードについては、以下を参照してください。 AmazonTextractのエンドポイントとクォータ。 ソリューション全体に対して必ず XNUMX つのリージョンを使用してください。

レポのクローンを作成する

まず、次のコマンドを実行してリポジトリのクローンを作成します。 次に、作業ディレクトリに切り替えます。

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

ソリューションのワークフロー

このソリューションは XNUMX つのワークフローで構成されます。

  • ワークフロー1_エンドポイントビルダー – トレーニングドキュメントを取得し、Amazon Comprehend 上にカスタム分類エンドポイントを構築します。
  • workflow2_docsplitter – ドキュメント分割サービスとして機能し、ドキュメントがクラスごとに分割されます。 で作成された分類エンドポイントを使用します。 workflow1.
  • ワークフロー3_ローカル – 高度に規制された業界に従事しており、Amazon S3 にデータを保持できない顧客を対象としています。 このワークフローには、ローカル バージョンの workflow1 & workflow2.

各ワークフローとその仕組みを詳しく見てみましょう。

ワークフロー 1: PDF、JPG、または PNG ドキュメントから Amazon Comprehend 分類器を構築する

最初のワークフローは、Amazon S3 に保存されているドキュメントを取得し、Amazon Textract を介してドキュメントからデータを抽出する一連の手順を通じて送信します。 次に、抽出されたデータを使用して、Amazon Comprehend カスタム分類エンドポイントを作成します。 これは、次のアーキテクチャ図に示されています。

打ち上げへ workflow1、トレーニング データセット ファイル (画像、単一ページの PDF、または複数ページの PDF を含む) が含まれるフォルダーの Amazon S3 URI が必要です。 フォルダーの構造は次のようにする必要があります。

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

あるいは、構造に追加のネストされたサブディレクトリを含めることもできます。

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

クラスのサブディレクトリ (XNUMX 番目のディレクトリレベル) の名前は、Amazon Comprehend カスタム分類モデルで使用されるクラスの名前になります。 たとえば、次のファイル構造では、 form123.pdf is tax_forms:

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

ワークフローを開始するには、次の手順を実行します。

  1. データセットを所有する S3 バケットにアップロードします。

分類するクラスごとに 50 以上のサンプルを用意することをお勧めします。 次のスクリーンショットは、このドキュメント クラス構造の例を示しています。

  1. ビルドする sam-app 次のコマンドを実行します (必要に応じて、提供されたコマンドを変更します)。
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

ビルドの出力は、Step Functions ステート マシンの ARN です。

  1. ビルドが完了したら、次の場所に移動します。 ステートマシン Step Functions コンソールのページ。
  2. 作成したステート マシンを選択します。
  3. 選択する 実行を開始します.
  4. 次の必須の入力パラメータを入力します。
{
“folder_uri”: “s3://{your dataset}”
}

  1. 選択する 実行を開始します.

ステート マシンがワークフローを開始します。 データセットのサイズによっては、これには数時間かかる場合があります。 次のスクリーンショットは、進行中のステート マシンを示しています。

ステート マシンが完了すると、次のスクリーンショットに示すように、グラフの各ステップが緑色になります。

Amazon Comprehend コンソールに移動して、デプロイされたエンドポイントを確認できます。

これで、ドキュメントを使用してカスタム分類器が構築されました。 これで終わりです workflow1.

ワークフロー 2: エンドポイントを構築する

XNUMX 番目のワークフローは、で作成したエンドポイントを取得します。 workflow1 そして、モデルがトレーニングされたクラスに基づいてドキュメントを分割します。 これは、次のアーキテクチャ図に示されています。

打ち上げへ workflow2を構築します。 sam-app。 必要に応じて、提供されたコマンドを変更します。

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

スタックが作成されると、ロード バランサー DNS を受け取ります。 出力 CloudFormation スタックのタブ。 このエンドポイントへのリクエストを開始できます。

サンプルリクエストは、 workflow2_docsplitter/sample_request_folder/sample_s3_request.py ファイル。 API は、S3 バケット名、ドキュメント Amazon S3 URI、Amazon Comprehend 分類エンドポイント ARN の XNUMX つのパラメータを受け取ります。 Workflow2 は PDF 入力のみをサポートします。

このテストでは、11 つの異なる種類の書類を含む XNUMX ページの住宅ローン書類を使用します。

API の応答は、すべての分割ドキュメントを含む .zip ファイルの Amazon S3 URI です。 このファイルは、API 呼び出しで指定したバケット内にもあります。

オブジェクトをダウンロードし、クラスに基づいて分割されたドキュメントを確認します。

これで終わりです workflow2。 ここまで、カスタム Amazon Comprehend 分類エンドポイントを使用してドキュメントを分類および分割する方法を示しました。

ワークフロー 3: ローカル文書の分割

XNUMX 番目のワークフローは、次と同様の目的に従います。 workflow1 & workflow2 Amazon Comprehend エンドポイントを生成します。ただし、すべての処理はローカルマシンを使用して行われ、Amazon Comprehend と互換性のある CSV ファイルが生成されます。このワークフローは、Amazon S3 上で PDF ドキュメントを永続化することができない可能性がある高度に規制された業界の顧客向けに作成されました。次のアーキテクチャ図は、ローカル エンドポイント ビルダーのワークフローを視覚的に表現したものです。

次の図は、ローカル ドキュメント スプリッターのアーキテクチャを示しています。

ソリューションのコードはすべて次の場所にあります。 workflow3_local/local_endpointbuilder.py Amazon Comprehend 分類エンドポイントを構築するためのファイルと workflow3_local/local_docsplitter.py 分割するための書類を送信します。

まとめ

ドキュメントの分割は、成功したインテリジェントなドキュメント処理ワークフローを構築するための鍵です。 これは、企業、特に日常業務で複数の種類のドキュメントを集約する組織にとって、依然として非常に関連性のある問題です。 例としては、保険請求書類、保険契約申請書、SEC 書類、納税フォーム、収入確認フォームの処理などが挙げられます。

この投稿では、ローン処理に使用される一連の一般的なドキュメントを取得し、Amazon Textract を使用してデータを抽出し、Amazon Comprehend カスタム分類エンドポイントを構築しました。 このエンドポイントを使用して、受信したドキュメントを分類し、それぞれのクラスに基づいて分割しました。 このプロセスは、医療や金融サービスなど、さまざまな業界のアプリケーションを含むほぼすべてのドキュメント セットに適用できます。 Amazon Textract について詳しくは、 Webページにアクセス.


著者について

アディティ・ラジニッシュ ウォータールー大学のソフトウェア工学のXNUMX年生です。 彼女の興味には、コンピュータービジョン、自然言語処理、エッジコンピューティングが含まれます。 彼女はまた、コミュニティベースのSTEMアウトリーチとアドボカシーにも情熱を注いでいます。 余暇には、ロッククライミング、ピアノの演奏、完璧なスコーンの焼き方を学ぶことができます。

ラジ・パタク は、カナダと米国のFortune 50および中規模FSI(銀行、保険、資本市場)の顧客のソリューションアーキテクトおよびテクニカルアドバイザーです。 Rajは、ドキュメント抽出、コンタクトセンター変換、コンピュータービジョンのアプリケーションを使用した機械学習を専門としています。

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

タイムスタンプ:

より多くの AWS機械学習ブログ