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

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

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

前提条件と制限

前提条件

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

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

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

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

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

機能制限

  • PDF ファイルは、品質が良く、明確に読み取れるものでなければなりません。ネイティブPDFファイルは推奨されますが、個々の単語がすべて明確であれば、PDF形式に変換されたスキャン済みドキュメントを使用できます。詳細については、AWSMachine LearningブログのPDF「Amazon Textract: Visuals によるドキュメントの前処理」を参照してください。

  • マルチページファイルの場合、非同期オペレーションを使用するか、PDFファイルを 1 ページに分割して同期オペレーションを使用できます。この 2 つのオプションの詳細については、Amazon Textract ドキュメントの「Detecting and analyzing text in multipage documents」と「Detecting and analyzing text in single-page documents」を参照してください。

アーキテクチャ

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

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

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

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

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

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

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

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

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

  7. 解析されたJSONファイルを TemplateJSON ファイルと一致させます。

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

最終JSON出力ファイルには、各必須フィールドValueに対して正しい KeyNameと があります。

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

  • 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 ファイルを変換します。

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

: マルチページPDFファイルには Amazon Textract 非同期オペレーション (Asyn API) を使用することもできます。

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

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

Textract_PostProcessing.ipynb Jupyter ノートブック (添付) を開き、次のコードAPIを使用して Amazon Textract を呼び出します。

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)
データサイエンティスト/デベロッパー

テンプレートJSONファイルを編集します。

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

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

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

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

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

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

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

PDF ファイルを作成します。

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

: マルチページPDFファイルには Amazon Textract 非同期オペレーション (Asyn API) を使用することもできます。

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

Amazon Textract を呼び出しますAPI。

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

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)
データサイエンティスト/デベロッパー

テンプレートJSONファイルをロードし、解析された と照合します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