Amazon Textract を使用して PDF ファイルからコンテンツを自動的に抽出する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Textract を使用して PDF ファイルからコンテンツを自動的に抽出する

作成者: Tianxia Jia (AWS)

環境:本稼働

テクノロジー: 機械学習と AI、分析、ビッグデータ

AWS サービス: Amazon S3、Amazon Textract、Amazon SageMaker

[概要]

多くの組織は、ビジネスアプリケーションにアップロードされた PDF ファイルから情報を抽出する必要があります。例えば、組織は税務分析や医療請求処理のために、税務または医療用 PDF ファイルから情報を正確に抽出する必要があるかもしれません。

Amazon Web Services (AWS) クラウドでは、Amazon Textract が PDF ファイルから情報 (印刷されたテキスト、フォーム、表など) を自動的に抽出し、元の PDF ファイルからの情報を含む JSON 形式のファイルを生成します。Amazon Textract は、AWS マネジメントコンソールまたは API コールを実装して使用できます。大量の PDF ファイルをスケーリングして自動的に処理するには、プログラムによる API 呼び出しを使用することをお勧めします。

Amazon Textract がファイルを処理すると、ページ、テキストの行と単語、フォーム (キーと値のペア)、テーブルとセル、選択要素の Block オブジェクトリストが作成されます。バウンディングボックス、信頼区間、ID、関係など、その他のオブジェクト情報も含まれます。Amazon Textract はコンテンツ情報を文字列として抽出します。データ値はダウンストリームアプリケーションでより簡単に使用できるため、正しく識別され変換されたデータ値が必要です。 

このパターンは、Amazon Textract を使用して PDF ファイルからコンテンツを自動的に抽出し、クリーンな出力に処理する step-by-step ワークフローを示しています。このパターンでは、テンプレートマッチング技術を使用して必要なフィールド、キー名、テーブルを正しく識別し、各データタイプに後処理による修正を適用します。このパターンを使用してさまざまな種類の PDF ファイルを処理し、このワークフローをスケーリングおよび自動化して同じ形式の PDF ファイルを処理できます。  

前提条件と制限

前提条件

  • アクティブなAWS アカウント

  • Amazon Textract で処理するために JPEG 形式に変換された PDF ファイルを保存するための既存の Amazon Simple Storage Service (Amazon S3) バケット。S3 バケットの詳細については、Amazon S3 ドキュメントの「バケットの概要」を参照してください。

  • Textract_PostProcessing.ipynb Jupyter Notebook (添付)、インストール、設定。Jupyter Notebook の詳細については、Amazon ドキュメントの「Create a Jupyter Notebook」を参照してください。 SageMaker

  • 同じ形式の既存の PDF ファイル。

  • Python について理解していること。

制限

アーキテクチャ

このパターンのワークフローは、最初にサンプル PDF ファイルで Amazon Textract を実行し (初回実行)、次に最初の PDF と同じ形式の PDF ファイルに対して実行します (繰り返し実行)。次の図は、同じ形式の PDF ファイルからコンテンツを自動的かつ繰り返し抽出する、初回実行と繰り返し実行を組み合わせたワークフローを示しています。

Amazon Textract を使用して PDF ファイルからコンテンツを抽出する

この図は、このパターンの次のワークフローを示しています。

  1. PDF ファイルを JPEG 形式に変換し、S3 バケットに保存します。 

  2. Amazon Textract API を呼び出し、Amazon Textract レスポンス JSON ファイルを解析します。 

  3. JSON ファイルを編集して、各必須フィールドに正しい KeyName:DataType ペアを追加します。繰り返し実行ステージ用の TemplateJSON ファイルを作成します。

  4. データタイプ (浮動小数点、整数、日付など) ごとに後処理補正関数を定義します。

  5. 最初の PDF ファイルと同じ形式の PDF ファイルを準備します。

  6. Amazon抽出API を呼び出し、Amazon Textract レスポンス JSON を解析します。

  7. 解析した JSON ファイルを TemplateJSON ファイルと照合します。

  8. 後処理による修正を実装します。

最終的な JSON 出力ファイルには、必須フィールドごとに正しい KeyName および Value が含まれています。

ターゲットテクノロジースタック

  • Amazon SageMaker 

  • Amazon S3 

  • Amazon Textract

自動化とスケール

新しい PDF ファイルが Amazon S3 に追加されたときに Amazon Textract を開始する AWS Lambda 関数を使用することにより、繰り返し実行ワークフローを自動化できます。次に Amazon Textract が処理スクリプトを実行し、最終出力を保存場所に保存できます。詳細については、Lambda ドキュメントの Amazon S3 トリガーを使用して Lambda 関数を呼び出すを参照してください。

ツール

  • Amazon SageMaker はフルマネージド型の ML サービスで、ML モデルをすばやく簡単に構築してトレーニングし、本番環境に対応したホスト環境に直接デプロイできます。

  • Amazon Simple Storage Service (Amazon S3) は、どのようなデータ量であっても、データを保存、保護、取得することを支援するクラウドベースのオブジェクトストレージサービスです。

  • Amazon Textract を使用すると、ドキュメントテキストの検出と分析をアプリケーションに簡単に追加できます。

エピック

タスク説明必要なスキル

PDF ファイルを変換します。

PDF ファイルを 1 ページに分割し、Amazon Textract 同期オペレーション (Syn API) 用に JPEG 形式に変換して、初回実行に備えて準備します。

注意: Amazon Textract 非同期オペレーション (Asyn API) は、複数ページの PDF ファイルにも使用できます。

データサイエンティスト/デベロッパー

Amazon Textract レスポンス JSON を解析します。

Textract_PostProcessing.ipynb Jupyter Notebook (添付ファイル) を開き、次のコードを使用して Amazon Textract API を呼び出します。

response = textract.analyze_document( Document={ 'S3Object': { 'Bucket': BUCKET, 'Name': '{}'.format(filename) } }, FeatureTypes=["TABLES", "FORMS"])

次のコードを使用して、応答 JSON を解析してフォームとテーブルにします。

parseformKV=form_kv_from_JSON(response) parseformTables=get_tables_fromJSON(response)
データサイエンティスト/デベロッパー

TemplateJSON ファイルを編集します。

KeyName および対応する DataType (文字列、浮動小数点数、整数、日付など)、およびテーブルヘッダー (ColumnNames および RowNames など) の解析された JSON を編集します。

このテンプレートは個々の PDF ファイルタイプに使用されるため、同じ形式の PDF ファイルでもテンプレートを再利用できます。

データサイエンティスト/デベロッパー

後処理補正関数を定義します。

TemplateJSON ファイルに対する Amazon Textract のレスポンス内の値は文字列です。日付、浮動小数点数、整数、通貨には区別がありません。これらの値は、ダウンストリームのユースケースに適したデータ型に変換する必要があります。 

次のコードを使用して、TemplateJSON ファイルに従って各データ型を修正します。

finalJSON=postprocessingCorrection(parsedJSON,templateJSON)
データサイエンティスト/デベロッパー
タスク説明必要なスキル

PDF ファイルを準備します。

PDF ファイルを 1 ページに分割し、Amazon Textract 同期オペレーション (Syn API) 用に JPEG 形式に変換して準備します。

注意: Amazon Textract 非同期オペレーション (Asyn API) は、複数ページの PDF ファイルにも使用できます。

データサイエンティスト/デベロッパー

Amazon Textract API を呼び出す

以下のコードを使用して Amazon Textract API を呼び出します。

response = textract.analyze_document( Document={ 'S3Object': { 'Bucket': BUCKET, 'Name': '{}'.format(filename) } }, FeatureTypes=["TABLES", "FORMS"])
データサイエンティスト/デベロッパー

Amazon Textract レスポンス JSON を解析します。

次のコードを使用して、応答 JSON を解析してフォームとテーブルにします。

parseformKV=form_kv_from_JSON(response) parseformTables=get_tables_fromJSON(response)
データサイエンティスト/デベロッパー

TemplateJSON ファイルをロードし、解析された JSON と照合します。

TemplateJSON ファイルを使用して、以下のコマンドを使用して正しいキーと値のペアとテーブルを抽出します。

form_kv_corrected=form_kv_correction(parseformKV,templateJSON) form_table_corrected=form_Table_correction(parseformTables, templateJSON) form_kv_table_corrected_final={**form_kv_corrected , **form_table_corrected}
データサイエンティスト/デベロッパー

後処理修正。

次のコードを使用して、TemplateJSON ファイルと後処理関数で DataType を使用してデータを修正します。 

finalJSON=postprocessingCorrection(form_kv_table_corrected_final,templateJSON)
データサイエンティスト/デベロッパー

関連リソース

添付ファイル

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「attachment.zip