ゼファーネットのロゴ

AWS Textract Teardown – 2021年にAmazonのTextractを使用することの長所と短所

日付:


2021年のテキスト認識

多くの企業や組織では、多くの貴重なビジネスデータがドキュメントに保存されています。 このデータは、デジタルトランスフォーメーションの中心です。 残念ながら、統計によると、このすべてのデータの80%は、ビジネスの請求書、電子メール、領収書、PDFドキュメントなどの構造化されていない形式で埋め込まれています。 したがって、これらのドキュメントから情報を抽出して最大限に活用するために、企業は徐々に人工知能(AI)ベースのサービスに依存し始めました。 AIベースのサービスを提供するものの中で、Amazonは長い間最も著名なプレーヤーのXNUMXつでした。 文書処理、音声認識、テキスト分析など、さまざまなソリューションにその翼が広がっていました。

このブログでは、スキャンされたドキュメントから印刷されたテキスト、手書き、表、その他のデータを自動的に抽出する、フルマネージドの機械学習サービスであるAmazonのAWSTextractについて説明します。 始めましょう!

簡単に言うと、AWS Textractは、さまざまなタイプのドキュメントを編集可能な形式に変換するディープラーニングベースのサービスです。 さまざまな会社からの請求書のハードコピーがあり、それらからのすべての重要な情報をExcel /スプレッドシートに保存していると考えてください。 通常、データ入力演算子を使用して手動で入力しますが、これは多忙で時間がかかり、エラーが発生しやすくなります。 しかし、Textractを使用すると、請求書をアップロードするだけで、ドキュメント内のすべてのテキスト、フォーム、キーと値のペア、およびテーブルがより構造化された方法で返されます。 以下は、AWSがインテリジェントな情報抽出を行う方法のスクリーンショットです。

AWSTextractでの情報抽出

AWS Textractは、入力されたテキストだけでなく、ドキュメント内の手書きのテキストも識別します。 これにより、手書きテキストの抽出が入力されたテキストよりも抽出が複雑になる場合があるため、情報抽出がより便利になります。 次に、Textractを使用するための一般的な使用例をいくつか見てみましょう。

堅牢で正規化されたデータキャプチャ: Amazon Textractを使用すると、財務文書、調査レポート、医療メモなど、さまざまな文書からテキストおよび表形式のデータを抽出できます。 ただし、これらはカスタムメイドのAPIではありませんが、毎日膨大な量のデータから学習します。この継続的な学習により、ドキュメントから非構造化データと構造化データを抽出するのがはるかに簡単になります。

キーと値のペアの抽出: キーと値のペアの抽出はドキュメント処理の一般的な問題になっていますが、AmazonTextractを使用するとこれを簡単に解決できます。 ドキュメントのスキャンからデータのプッシュ、Excelシートなどまで、ドキュメント処理を自動化するTextractを使用して、キーと値のペアを抽出するためのパイプラインを構築できます。

インテリジェントな検索インデックスの作成: Amazon Textractを使用すると、画像およびPDFファイルで検出されたテキストのライブラリを作成できます。

自然言語処理(NLP)にインテリジェントなテキスト抽出を使用する– Amazon Textractを使用すると、テキストを単語や行に抽出できます。 また、Amazon Textractドキュメントテーブル分析が有効になっている場合は、テキストをテーブルセルごとにグループ化します。 Amazon Textractを使用すると、NLPの入力としてテキストをグループ化する方法を制御できます。


インテリジェントなテキスト認識ソリューションをお探しですか? に向かいます ナノネット 95%を超える精度でソリューションを使用します。


このセクションでは、AWSTextractがどのように機能するかについて説明します。 強力なAIおよびMLアルゴリズムがその背後にあることを私たちは知っています。 ただし、詳細を掘り下げるオープンソースモデルはありません。 しかし、私はここにあるドキュメントを要約することによって、動作をデコードしようとします。 始めましょう!

Amazon(AWS)Textractはどのように機能しますか?
Amazon(AWS)Textractはどのように機能しますか? (出典:Dev.to)

まず、新しいドキュメントまたはスキャンされたドキュメントがTextractに送信されるたびに、検出されたすべてのテキストのブロックオブジェクトのリストが作成されます。 たとえば、今日の請求書がXNUMX語で構成されているとすると、AWSはすべての単語に対してXNUMX個のブロックオブジェクトを作成します。 これらのブロックには、検出されたアイテム、その場所、およびAmazonTextractが処理の精度に自信を持っていることに関する情報が含まれています。

通常、ほとんどのドキュメントは次のブロックで構成されています。

  • ページへ移動します。
  • テキストの行と単語
  • フォームデータ(キーと値のペア)
  • テーブルとセル
  • 選択要素

以下は、AWSTextractの例とブロックデータ構造です。

{ "Blocks":[ { "Geometry": { "BoundingBox": { "Width": 1.0, "Top": 0.0, "Left": 0.0, "Height": 1.0 }, "Polygon": [ { "Y": 0.0, "X": 0.0 }, { "Y": 0.0, "X": 1.0 }, { "Y": 1.0, "X": 1.0 }, { "Y": 1.0, "X": 0.0 } ] }, "Relationships": [ { "Type": "CHILD", "Ids": [ "2602b0a6-20e3-4e6e-9e46-3be57fd0844b", "82aedd57-187f-43dd-9eb1-4f312ca30042", "52be1777-53f7-42f6-a7cf-6d09bdc15a30", "7ca7caa6-00ef-4cda-b1aa-5571dfed1a7c" ] } ], "BlockType": "PAGE", "Id": "8136b2dc-37c1-4300-a9da-6ed8b276ea97" }..... ], "DocumentMetadata": { "Pages": 1 }
}

ただし、ブロック内のコンテンツは、呼び出す操作に基づいて変化します。 テキスト検出操作の場合、ブロックは検出されたテキストのページ、行、および単語を返します。 ドキュメント分析操作を使用している場合、ブロックは検出されたページ、キーと値のペア、テーブル、選択要素、およびテキストを返します。 ただし、これはTextractの高レベルの動作を説明するだけです。次のセクションでは、Textractの背後にあるOCRについて詳しく見ていきましょう。

Amazon Textractは商用製品であるため、使用するOCRの種類に関する詳細はありません。 ただし、最も人気のあるオープンソースOCRのXNUMXつである「Tesseract」と比較して、さまざまなタイプのドキュメントを抽出する精度と機能を理解することができます。

AWS Textract OCR
AWS Textract OCR(出典:AWS Webサイト)

Tesseract OCRは、テキストデータで非常に優れたパフォーマンスを発揮するディープラーニングベースのニューラルネットワークアーキテクチャであるLSTMに基づいています。 tesseractがサポートするドキュメントの形式は次のとおりです。プレーンテキスト、hOCR(HTML)、PDF、非表示テキストのみのPDF、TSV。 Unicode(UTF-8)をサポートし、すぐに使用できる100を超える言語をサポートします。 ただし、すべてのコードはオープンソースであるため、他の言語を認識するようにトレーニングできますが、これにはディープラーニングとコンピュータービジョンの専門知識が必要です。 テーブルとキーと値のペアの抽出に関しては、tesseractは失敗します。 それでも、この問題を解決するためにカスタムパイプラインを構築できます。

Textract OCRもディープラーニングベースのニューラルネットワークアーキテクチャですが、これを完全にカスタマイズしたり、カスタムデータセットでトレーニングしたりすることはできません。 その仕事は、ドキュメント内にあるすべてのデータを解析して抽出することです。 ただし、Textractは自動的にデータを調整し、人間が抽出された情報を検証した場合(ループ内の人間)、外出先でより高い精度を実現します。 テーブル抽出やキーと値のペアの抽出などのタスクの場合、TextractはTesseractよりも高い精度を達成するために公正な仕事をします。 ただし、これはいくつかの言語とドキュメント形式に限定されています。

以下は、AWSTextractを使用して処理できるドキュメントタイプの一部です。

  • 通常の請求書/請求書
  • 財務書類
  • 医療文書
  • 手書き文書
  • 給与明細書または従業員文書

次のセクションでは、Textract PythonAPIを見てみましょう。


インテリジェントを探しています ドキュメントから情報を抽出するOCRソリューション? に向かいます ナノネット 任意の形式、任意の言語のドキュメントからテキストを抽出します。


Amazon Textract APIは、さまざまなプログラミング言語で利用できます。 このセクションでは、PythonでTextractを使用したKey-Value抽出のコードブロックについて説明します。 言語とAPIサポートの詳細については、こちらのドキュメントをご覧ください。

このコードスニペットは、TextractのPythonAPIを利用してドキュメントでキーと値のペアの抽出を実行する方法の例です。 これを機能させるには、AWSダッシュボードでAPIキーも設定する必要があります。 それでは、コードスニペットについて詳しく見ていきましょう。

まず、ドキュメントをAWSにプッシュし、抽出されたテキストを処理するために必要なすべてのパッケージをインポートします。

import boto3
import sys
import re
import json

次に、という名前の関数があります get_kv_map、ここでは使用します boto3 Amazon Textract APIと通信し、ドキュメントをアップロードして、ブロック応答をフェッチします。 'BlockType'をチェックしてすべてのキーと値のペアを取得し、辞書で返します。

def get_kv_map(file_name): with open(file_name, 'rb') as file: img_test = file.read() bytes_test = bytearray(img_test) print('Image loaded', file_name) # process using image bytes client = boto3.client('textract') response = client.analyze_document(Document={'Bytes': bytes_test}, FeatureTypes=['FORMS']) # Get the text blocks blocks=response['Blocks'] # get key and value maps key_map = {} value_map = {} block_map = {} for block in blocks: block_id = block['Id'] block_map[block_id] = block if block['BlockType'] == "KEY_VALUE_SET": if 'KEY' in block['EntityTypes']: key_map[block_id] = block else: value_map[block_id] = block return key_map, value_map, block_map

その後、ブロック項目を使用して、抽出されたキーと値のペア間の関係を取得する関数があります。 基本的に、この関数はブロック情報(JSON)に存在する関係を使用して、ドキュメント内のキーと値を関連付けます。

def get_kv_relationship(key_map, value_map, block_map): kvs = {} for block_id, key_block in key_map.items(): value_block = find_value_block(key_block, value_map) key = get_text(key_block, block_map) val = get_text(value_block, block_map) kvs[key] = val return kvs def find_value_block(key_block, value_map): for relationship in key_block['Relationships']: if relationship['Type'] == 'VALUE': for value_id in relationship['Ids']: value_block = value_map[value_id] return value_block

最後に、保存されたキーと値のペアに存在するテキストを返します。

def get_text(result, blocks_map): text = '' if 'Relationships' in result: for relationship in result['Relationships']: if relationship['Type'] == 'CHILD': for child_id in relationship['Ids']: word = blocks_map[child_id] if word['BlockType'] == 'WORD': text += word['Text'] + ' ' if word['BlockType'] == 'SELECTION_ELEMENT': if word['SelectionStatus'] == 'SELECTED': text += 'X' return text def print_kvs(kvs): for key, value in kvs.items(): print(key, ":", value) def search_value(kvs, search_key): for key, value in kvs.items(): if re.search(search_key, key, re.IGNORECASE): return value def main(file_name): key_map, value_map, block_map = get_kv_map(file_name) # Get Key Value relationship kvs = get_kv_relationship(key_map, value_map, block_map) print("nn== FOUND KEY : VALUE pairs ===n") print_kvs(kvs) # Start searching a key value while input('n Do you want to search a value for a key? (enter "n" for exit) ') != 'n': search_key = input('n Enter a search key:') print('The value is:', search_value(kvs, search_key)) if __name__ == "__main__": file_name = sys.argv[1] main(file_name)

このようにして、AWS Textract APIを使用して、さまざまな情報抽出タスクを実行できます。 関数/アプローチは、ほとんどのプログラミング言語に似ています。 APIを利用する場合は、ユースケースに基づいてアプローチをカスタマイズすることもできます。


ドキュメントからのデータ入力を自動化したいですか? NanonetsのAIベースのOCRソリューションは、構造化/非構造化ドキュメントから重要な情報を抽出し、プロセスを自動操縦に移すのに役立ちます。


AWSTextractを使用することの長所と短所

長所:

AWSサービスによる簡単なセットアップ: 別のAWSサービスでTextractをセットアップすることは、他のプロバイダーと比較して簡単な作業です。 たとえば、Amazon DynamoDBまたはS3で抽出されたドキュメント情報を保存するには、アドオンを設定します。

セキュア: Amazon Textractは、データ保護に関する規制とガイドラインを含むAWS共有責任モデルに準拠しています。 AWSは、すべてのAWSサービスを実行するグ​​ローバルインフラストラクチャを保護する責任があります。 したがって、データが漏洩したり、他の人に使用されたりすることを心配する必要はありません。

短所:

カスタムフィールドを抽出できない: 特定の請求書には、請求書ID、期日、取引日などの複数のデータフィールドが存在する可能性があります。これらのフィールドは、ほとんどの請求書に共通するものです。 しかし、請求書からカスタムフィールド、たとえばGST番号や銀行情報を抽出したい場合、Textractはうまく機能しません。

アップストリームおよびダウンストリームプロバイダーとの統合: Textractでは、さまざまなプロバイダーと簡単に統合することはできません。たとえば、サードパーティのサービスを使用してRPAパイプラインを構築する必要があります。 Textractに適した適切なプラグインを見つけるのは難しいでしょう。

テーブルヘッダーを定義する機能: テーブル抽出タスクの場合、textractではテーブルヘッダーを定義できません。 したがって、特定のドキュメント内の特定の列またはテーブルを検索または検索することは簡単ではありません。

不正チェックなし: 最新のOCRは、日付を検証してピクセル化された領域を見つけることにより、特定のドキュメントがオリジナルであるか偽物であるかを検出できるようになりました。 AWS Textractにはこれが付属していません。その唯一の仕事は、アップロードされたドキュメントからすべてのテキストを選択することです。

垂直方向のテキスト抽出なし: 一部のドキュメントでは、請求書番号または住所が縦に並んでいます。 現在、AWSはわずかな面内回転を伴う水平テキスト抽出のみをサポートしています。

言語制限: Amazon Textractは、英語、スペイン語、ドイツ語、フランス語、イタリア語、およびポルトガル語のテキスト検出をサポートしています。 Amazon Textractは、出力で検出された言語を返しません。

すべてのクラウド: Textractで処理されたドキュメントはすべてクラウドに入り、いくつかのリージョンのみをサポートします。 詳しくは こちら。 ただし、機密保持や法的要件などの理由で、ドキュメントをクラウドに移行することに関心がない企業もあります。 それでも、残念ながら、AWSTextractはドキュメント処理のオンプレミスデプロイをサポートしていません。

再訓練: 一連のドキュメントの情報抽出タスクの精度が低い場合、Textractではそれらを再トレーニングできません。 これを解決するには、人間によるレビューワークフローに再度投資する必要があります。このワークフローでは、オペレーターが誤って抽出された値を手動で確認して注釈を付ける必要があり、これも時間がかかります。

まとめ

ドキュメントからのデータ抽出/テキスト認識のさまざまなソリューションを検討する際に、AWSTextractのこのレビューがお役に立てば幸いです。 最新の変更をカバーするために、この投稿を定期的に更新します。

コメントセクションに、AmazonのTextractソリューションの使用に関する考えや質問を追加してください。

出典:AWSウェブサイトのヒーロー画像。

Nanonets for Automationの使用を開始する

今すぐモデルを試すか、デモをリクエストしてください!

今すぐやってみて下さい

コインスマート。 BesteBitcoin-ヨーロッパのBörse
ソース:https://nanonets.com/blog/aws-textract-teardown-pros-cons-review/

スポット画像

最新のインテリジェンス

スポット画像