

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

# Amazon Textract を使用して PDF ファイルからコンテンツを自動的に抽出する
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract"></a>

*Tianxia Jia (Amazon Web Services)*

## 概要
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-summary"></a>

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

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

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

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

## 前提条件と制限事項
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント
+ Amazon Textract で処理するために JPEG 形式に変換された PDF ファイルを保存するための既存の Amazon Simple Storage Service (Amazon S3) バケット。S3 バケットの詳細については、Amazon S3 ドキュメントの「[バケットの概要](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html)」を参照してください。
+ `Textract_PostProcessing.ipynb` Jupyter Notebook (添付)、インストール、設定。Jupyter Notebook の詳細については、Amazon SageMaker ドキュメントの「[Jupyter Notebook の作成](https://docs.aws.amazon.com/sagemaker/latest/dg/ex1-prepare.html)」を参照してください。
+ 同じ形式の既存の PDF ファイル。
+ Python について理解していること。

**制限**
+ PDF ファイルは高品質で、読みやすいものでなければなりません。ネイティブ PDF ファイルを使用することをお勧めしますが、個々の単語がすべて鮮明であれば、スキャンして PDF 形式に変換した文書も使用できます。詳細については、AWS 機械学習のブログの「[PDF document pre-processing with Amazon Textract: Visuals detection and removal](https://aws.amazon.com/blogs/machine-learning/process-text-and-images-in-pdf-documents-with-amazon-textract/)」を参照してください。
+ 複数ページのファイルの場合は、非同期操作を使用するか、PDF ファイルを 1 ページに分割して同期操作を使用できます。この 2 つのオプションの詳細については、Amazon Textract ドキュメントの「[Detecting and analyzing text in multipage documents](https://docs.aws.amazon.com/textract/latest/dg/async.html)」と「[Detecting and analyzing text in single-page documents](https://docs.aws.amazon.com/textract/latest/dg/sync.html)」を参照してください。

## アーキテクチャ
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-architecture"></a>

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

![\[Amazon Textract を使用して PDF ファイルからコンテンツを抽出する\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/2d724523-2cab-42c9-a773-65857014d9ec/images/9e20070f-3e0c-46aa-aa98-a8b1eb3395dc.png)


 

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

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

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

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

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

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

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

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

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

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

**ターゲットテクノロジースタック**
+ Amazon SageMaker 
+ Amazon S3 
+ Amazon Textract

**自動化とスケール**

新しい PDF ファイルが Amazon S3 に追加されたときに Amazon Textract を開始する AWS Lambda 関数を使用することにより、*繰り返し実行*ワークフローを自動化できます。次に Amazon Textract が処理スクリプトを実行し、最終出力を保存場所に保存できます。詳細については、Lambda ドキュメントの [Amazon S3 トリガーを使用して Lambda 関数を呼び出す](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html)を参照してください。

## ツール
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-tools"></a>
+ [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) は、ML モデルを迅速かつ簡単に構築およびトレーニングし、本番環境に対応したホスト環境に直接デプロイするのに役立つフルマネージド ML サービスです。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。
+ [Amazon Textract](https://docs.aws.amazon.com/textract/latest/dg/what-is.html) を使用すると、ドキュメントテキストの検出と分析をアプリケーションに簡単に追加できます。

## エピック
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-epics"></a>

### 初回の実行
<a name="first-time-run"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| PDF ファイルを変換します。 | PDF ファイルを 1 ページに分割し、Amazon Textract [同期オペレーション](https://docs.aws.amazon.com/textract/latest/dg/sync.html) (`Syn API`) 用に JPEG 形式に変換して、初回実行に備えて準備します。Amazon Textract [非同期オペレーション](https://docs.aws.amazon.com/textract/latest/dg/async.html) (`Asyn API`) は、複数ページの PDF ファイルにも使用できます。 | データサイエンティスト/デベロッパー | 
| Amazon Textract レスポンス JSON を解析します。 | `Textract_PostProcessing.ipynb` Jupyter Notebook (添付ファイル) を開き、次のコードを使用して Amazon Textract API を呼び出します。<pre>response = textract.analyze_document(<br />Document={<br />        'S3Object': {<br />            'Bucket': BUCKET,<br />            'Name': '{}'.format(filename)<br />                    }<br />                },<br />        FeatureTypes=["TABLES", "FORMS"])</pre>次のコードを使用して、応答 JSON を解析してフォームとテーブルにします。<pre>parseformKV=form_kv_from_JSON(response)<br />parseformTables=get_tables_fromJSON(response)</pre> | データサイエンティスト/デベロッパー | 
| TemplateJSON ファイルを編集します。 | 各 `KeyName` および対応する `DataType` (文字列、浮動小数点数、整数、日付など)、およびテーブルヘッダー (`ColumnNames` および `RowNames` など) の解析された JSON を編集します。このテンプレートは個々の PDF ファイルタイプに使用されるため、同じ形式の PDF ファイルでもテンプレートを再利用できます。 | データサイエンティスト/デベロッパー | 
| 後処理補正関数を定義します。 | `TemplateJSON` ファイルに対する Amazon Textract のレスポンス内の値は文字列です。日付、浮動小数点数、整数、通貨には区別がありません。これらの値は、ダウンストリームのユースケースに適したデータ型に変換する必要があります。 次のコードを使用して、`TemplateJSON` ファイルに従って各データ型を修正します。<pre>finalJSON=postprocessingCorrection(parsedJSON,templateJSON)</pre> | データサイエンティスト/デベロッパー | 

### 繰り返し実行
<a name="repeat-run"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| PDF ファイルを準備します。 | PDF ファイルを 1 ページに分割し、Amazon Textract [同期オペレーション](https://docs.aws.amazon.com/textract/latest/dg/sync.html) (`Syn API`) 用に JPEG 形式に変換して準備します。Amazon Textract [非同期オペレーション](https://docs.aws.amazon.com/textract/latest/dg/async.html) (`Asyn API`) は、複数ページの PDF ファイルにも使用できます。 | データサイエンティスト/デベロッパー | 
| Amazon Textract API を呼び出す | 以下のコードを使用して Amazon Textract API を呼び出します。<pre>response = textract.analyze_document(<br />        Document={<br />        'S3Object': {<br />            'Bucket': BUCKET,<br />            'Name': '{}'.format(filename)<br />                    }<br />                },<br />        FeatureTypes=["TABLES", "FORMS"])</pre> | データサイエンティスト/デベロッパー | 
| Amazon Textract レスポンス JSON を解析します。 | 次のコードを使用して、応答 JSON を解析してフォームとテーブルにします。<pre>parseformKV=form_kv_from_JSON(response)<br />parseformTables=get_tables_fromJSON(response)</pre> | データサイエンティスト/デベロッパー | 
| TemplateJSON ファイルをロードし、解析された JSON と照合します。 | `TemplateJSON` ファイルを使用して、以下のコマンドを使用して正しいキーと値のペアとテーブルを抽出します。<pre>form_kv_corrected=form_kv_correction(parseformKV,templateJSON)<br />form_table_corrected=form_Table_correction(parseformTables, templateJSON)<br />form_kv_table_corrected_final={**form_kv_corrected , **form_table_corrected}</pre> | データサイエンティスト/デベロッパー | 
| 後処理修正。 | 次のコードを使用して、`TemplateJSON` ファイルと後処理関数で `DataType` を使用してデータを修正します。 <pre>finalJSON=postprocessingCorrection(form_kv_table_corrected_final,templateJSON)</pre> | データサイエンティスト/デベロッパー | 

## 関連リソース
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-resources"></a>
+ [Automatically extract text and structured data from documents with Amazon Textract](https://aws.amazon.com/blogs/machine-learning/automatically-extract-text-and-structured-data-from-documents-with-amazon-textract/)
+ [Extract text and structured data with Amazon Textract](https://aws.amazon.com/getting-started/hands-on/extract-text-with-amazon-textract/)
+ [Amazon Textract resources](https://aws.amazon.com/textract/resources/?blog-posts-cards.sort-by=item.additionalFields.createdDate&blog-posts-cards.sort-order=desc)

## アタッチメント
<a name="attachments-2d724523-2cab-42c9-a773-65857014d9ec"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/2d724523-2cab-42c9-a773-65857014d9ec/attachments/attachment.zip)」