「カスタムクエリを使用してビジネス特有のドキュメントでAmazon Textractをカスタマイズする」
「ビジネスドキュメントに特化したAmazon Textractのカスタマイズ方法としてカスタムクエリを活用する」
Amazon Textractは、スキャンされた文書からテキスト、手書き、およびデータを自動的に抽出する機械学習(ML)サービスです。Queriesは、自然言語を使用してさまざまな複雑な文書から特定の情報を抽出する機能です。カスタムクエリは、自動車貸付契約書、小切手、給与明細書など、ビジネス固有の非標準文書に対してクエリ機能をカスタマイズする自己サービスの方法を提供します。これらの文書タイプに固有の固有の用語、構造、および主要な情報を認識するために機能をカスタマイズすることで、より高い精度と最小限の人間介入でダウンストリーム処理ニーズを満たすことができます。カスタムクエリは既存のTextractパイプラインに簡単に統合でき、MLの専門知識やインフラストラクチャ管理に投資する必要がなく、Amazon Textractのフルマネージドのインテリジェントドキュメント処理機能の利点を引き続き享受することができます。
この記事では、カスタムクエリが複雑な非標準の文書である小切手からデータを正確に抽出する方法を紹介します。さらに、カスタムクエリの利点と、この機能を効果的に使用するためのベストプラクティスについても説明します。
解決策の概要
新しいユースケースを開始する際には、Textractコンソールに移動して解析ドキュメントデモまたは一括ドキュメントアップローダーを使用して、Textractクエリがドキュメントでどのように動作するかを評価することができます。使用ケースに適用可能なクエリを作成するためには、クエリのベストプラクティスを参照してください。ビジネスドキュメントの性質によってクエリの応答にエラーがある場合は、カスタムクエリを使用して精度を向上させることができます。数時間以内に、サンプルドキュメントをAWS Management Consoleを使用して注釈を付け、アダプタをトレーニングすることができます。アダプタは、Amazon Textractの事前トレーニング済みのディープラーニングモデルにプラグインできるコンポーネントであり、注釈付きドキュメントに基づいて出力をカスタマイズします。ドキュメントクエリの分析APIリクエストに追加のパラメータとしてアダプタ識別子を渡すことで、推論にアダプタを使用することができます。
小切手からデータを抽出するなどの現実のチャレンジングなシナリオでカスタムクエリがデータ抽出の精度を向上させる方法を調査しましょう。小切手の処理における主な課題は、種類(個人用または出納小切手)、金融機関、および国(MICR行形式など)による高いバリエーションです。これらのバリエーションには、受取人名の配置、金額(数字および言葉で)、日付、署名などが含まれます。これらのバリエーションを認識し、適応することは、データ抽出中の複雑なタスクになる場合があります。データ抽出の改善のために、組織はしばしば手作業の検証および承認プロセスを使用し、抽出プロセスのコストと時間を増やしています。
カスタムクエリでは、異なる小切手のバリエーションに合わせて事前トレーニングされたクエリ機能をカスタマイズすることで、これらの課題に対応することができます。事前トレーニングされた機能のカスタマイズにより、処理するレイアウトの特定のバラエティにおいて高いデータ抽出精度を実現することができます。
私たちのユースケースでは、金融機関は小切手から次のフィールドを抽出したいと考えています:受取人名、支払人名、口座番号、ルーティング番号、支払額(数字)、支払額(言葉)、小切手番号、日付、およびメモ。
小切手処理のアダプタ(出力をカスタマイズするコンポーネント)の生成プロセスを探ってみましょう。アダプタはコンソールを介して作成することも、APIを介してプログラムで作成することもできます。この記事ではコンソールのエクスペリエンスについて詳しく説明しますが、プログラムでアダプタを作成したい場合は、custom-queries-checks-blog.ipynb Jupyterノートブック(オプション2)のコードサンプルを参照してください。
アダプタの生成プロセスは、以下の5つの高レベルなステップで行われます:アダプタの作成、サンプルドキュメントのアップロード、ドキュメントの注釈付け、アダプタのトレーニング、パフォーマンスメトリックの評価です。
アダプタを作成する
Amazon Textractコンソールで、名前、説明、およびアダプタを特定するのに役立つオプションのタグを提供して、新しいアダプタを作成します。オプションで自動更新を有効にすることもできます。これにより、Amazon Textractがクエリの機能が新しい機能で更新されるとアダプタも更新されるようになります。
アダプタが作成されると、「これがどのように機能するか」のセクションにステップのリストが表示されます。このセクションでは、完了するごとに次のステップが有効になります。
サンプルドキュメントをアップロードする
アダプタ生成の最初のフェーズでは、注釈、トレーニング、テストに適したサンプルドキュメントの適切なセットを慎重に選択する必要があります。ドキュメントをテストデータセットとトレーニングデータセットに自動分割するオプションがありますが、このプロセスではデータセットを手動で分割します。
重要なポイントは、少なくとも5つのテストサンプルと5つのトレーニングサンプルを使用してアダプタを構築できるということですが、このサンプルセットが多様で、プロダクション環境で遭遇するワークロードを正確に表していることを確認することが重要です。
このチュートリアルでは、以下からサンプルチェックデータセットをダウンロードできます。ダウンロード。データセットには、個人用小切手、出納小切手、スティミュラス小切手、給与明細内に埋め込まれた小切手などのバリエーションが含まれています。手書きと印刷された小切手も含まれており、メモ行などのフィールドもバリエーションがあります。
サンプルドキュメントに注釈を付ける
次のステップとして、コンソールを介してクエリとそれに対応する回答をサンプルドキュメントに関連付けて注釈を付けます。自動ラベリングまたは手動ラベリングで注釈を開始することができます。自動ラベリングでは、Amazon Textractクエリを使用してデータセットに事前ラベルを付けます。注釈プロセスを迅速に進めるために、自動ラベリングの使用をおすすめします。
このチェック処理ユースケースでは、次のクエリを使用します。他のドキュメントタイプに関わるユースケースの場合は、クエリのベストプラクティスを参照して、ユースケースに適用可能なクエリを作成してください。
- 支払先は誰ですか?
- 小切手番号は何ですか?
- 支払先の住所はどこですか?
- 日付はいつですか?
- 口座番号は何ですか?
- 金額は言葉でどのくらいですか?
- 口座名/支払人/切手引き出し人の名前は何ですか?
- 金額はいくらですか?
- 銀行名/引受人名は何ですか?
- 銀行ルーティング番号は何ですか?
- MICR行は何ですか?
- メモは何ですか?
自動ラベリングプロセスが完了すると、各ドキュメントに対して提供された回答を確認して編集するオプションがあります。注釈を確認するには、レビューを開始を選択してください。
クエリへの応答が不足または間違っている場合、バウンディングボックスを描画するか、応答を手動で入力して応答を追加または編集することができます。
操作を加速するために、AWSアカウントにコピーするための事前注釈付きのチェックサンプルを用意しました。アノテーションを自動更新するには、custom-queries-checks-blog.ipynb JupyterノートブックをAmazon Textract code samplesライブラリ内で実行します。
アダプタのトレーニング
サンプルドキュメントをすべて確認し、アノテーションの正確性を確認した後、アダプタのトレーニングプロセスを開始できます。このステップでは、アダプタを保存するためのストレージ場所を指定する必要があります。トレーニングプロセスの期間は、トレーニングに使用されるデータセットのサイズによって異なります。トレーニングAPIは、独自のアノテーションツールを使用して適切な入力ファイルをAPIに渡す場合にもプログラム的に呼び出すことができます。詳細については、Custom Queriesを参照してください。
パフォーマンスメトリクスの評価
アダプタのトレーニングが完了したら、F1スコア、適合率と再現率などの評価メトリクスを調査して、そのパフォーマンスを評価することができます。これらのメトリクスを集合的にまたはドキュメント毎に分析することができます。サンプルチェックデータセットを使用すると、トレーニングされたアダプタによる正確性メトリクス(F1スコア)が68%から92%に向上します。
さらに、アダプタの試用を選択することで、新しいドキュメント上でアダプタの出力をテストすることもできます。
評価後、トレッショールドよりも低いスコアを持つドキュメントを再注釈によってアダプタのパフォーマンスを向上させることができます。ドキュメントを再注釈するには、アダプタ詳細ページでドキュメントを確認し、注釈をレビューを選択します。
アダプタのプログラムテスト
トレーニングが成功したら、AnalyzeDocument API呼び出しでアダプタを使用することができます。APIリクエストはAmazon Textract Queries APIリクエストと似ており、AdaptersConfig
オブジェクトが追加されています。
次のサンプルコードを実行するか、custom-queries-checks-blog.ipynbのJupyterノートブック内で直接実行できます。サンプルノートブックには、Amazon TextractクエリとAmazon Textractカスタムクエリの結果を比較するためのコードも提供されています。
アダプターIDとアダプターバージョンを含め、適用するページを任意で指定してAdaptersConfigオブジェクトを作成します:
!python -m pip install amazon-textract-caller --upgrade!python -m pip install amazon-textract-response-parser –upgradeimport boto3from textractcaller.t_call import call_textract, Textract_Features, Query, QueriesConfig, Adapter, AdaptersConfigimport trp.trp2 as t2from tabulate import tabulate# AdaptersConfigを作成adapter1 = Adapter(adapter_id=”111111111”, version="1", pages=["*"])adapters_config = AdaptersConfig(adapters=[adapter1])
クエリでアダプターをトレーニングしたQueriesConfig
オブジェクトを作成し、Amazon Textract APIを呼び出します。なお、アダプターにトレーニングされていない追加のクエリも含めることができます。Amazon Textractは、これらの質問に対してクエリ機能を自動的に使用し、必要な場所でのみカスタムクエリを使用できる柔軟性を提供します。
# QueriesConfigを作成queries = []queries.append(Query(text="チェック番号は何ですか?", alias="CHECK_NUMBER", pages=["*"]))queries.append(Query(text="日付は何ですか?", alias="DATE", pages=["*"]))queries.append(Query(text="金額は文字で何ドルですか?", alias="CHECK_AMOUNT_WORDS", pages=["*"]))queries.append(Query(text="金額は何ドルですか?", alias="DOLLAR_AMOUNT", pages=["*"]))queries.append(Query(text="受取人は誰ですか?", alias="PAYEE_NAME", pages=["*"]))queries.append(Query(text="顧客アカウント番号は何ですか?", alias="ACCOUNT_NUMBER", pages=["*"]))queries.append(Query(text="受取人の住所は何ですか?", alias="PAYEE_ADDRESS", pages=["*"]))queries.append(Query(text="銀行ルーティング番号は何ですか?", alias="BANK_ROUTING_NUMBER", pages=["*"]))queries.append(Query(text="メモは何ですか?", alias="MEMO", pages=["*"]))queries.append(Query(text="口座名/支払人/引出人の名前は何ですか?", alias="ACCOUNT_NAME", pages=["*"]))queries.append(Query(text="銀行名/受取人名は何ですか?", alias="BANK_NAME", pages=["*"]))queries_config = QueriesConfig(queries=queries)document_name = "<image_name>"textract_json_with_adapter = call_textract(input_document=document_name, boto3_textract_client=textract_client, features=[Textract_Features.QUERIES], queries_config=queries_config, adapters_config=adapters_config)
最後に、結果をより読みやすく表示します:
def tabulate_query_answers(textract_json): d = t2.TDocumentSchema().load(textract_json) for page in d.pages: query_answers = d.get_query_answers(page=page) print(tabulate(query_answers, tablefmt="github"))tabulate_query_answers(textract_json_with_adapter)
クリーンアップ
リソースをクリーンアップするには、以下の手順を完了します:
- Amazon Textractコンソールで、ナビゲーションペインでCustom Queriesを選択します。
- 削除するアダプターを選択します。
- Deleteを選択します。
アダプターの管理
以前に生成されたアダプターの新しいバージョンを作成することで、定期的にアダプターを改善できます。既存のアダプターに新しいサンプルドキュメントを追加し、ドキュメントにラベルを付けてトレーニングを実行することで、アダプターの新しいバージョンを作成できます。開発パイプラインで使用するために、複数のバージョンのアダプターを同時に管理できます。アダプターをシームレスに更新するためには、アダプター生成に必要なファイルが保存されているAmazon Simple Storage Service(Amazon S3)バケットを変更または削除しないでください。
ベストプラクティス
ドキュメントにカスタムクエリを使用する場合、追加の考慮事項とベストプラクティスについては、Amazon Textractカスタムクエリのベストプラクティスを参照してください。
カスタムクエリの利点
カスタムクエリには以下の利点があります:
- 高度なドキュメント理解 – 高い精度でデータを抽出および正規化する能力により、カスタムクエリは手動レビューや監査への依存を減らし、より信頼性の高いインテリジェントドキュメント処理ワークフローを構築できます。
- より速い価値実現 – 高い精度が必要な新しいドキュメントタイプに遭遇した場合、カスタムクエリを使用して数時間以内にセルフサービスで適応器を生成できます。ワークフローで新しいドキュメントタイプや既存のバリエーションに遭遇した場合に、事前トレーニングモデルの更新を待つ必要はありません。パイプラインの完全な制御が可能であり、新しいドキュメントタイプのサポートにAmazon Textractに依存する必要はありません。
- データプライバシー – カスタムクエリは、すべての顧客に利用可能な一般的な事前学習済みモデルを強化するために使用されたデータを保持したり使用したりしません。適応器は、顧客のアカウントまたは顧客によって明示的に指定された他のアカウントに制限されており、顧客のデータを使用して行われた改善に対してアクセスできるのはそのようなアカウントのみです。
- 利便性 – カスタムクエリは、クエリと同様の完全に管理された推論体験を提供します。適応器のトレーニングは無料であり、推論のみを支払う必要があります。カスタムクエリは、カスタムモデルのトレーニングと運用にかかるオーバーヘッドと費用を削減します。
結論
この記事では、カスタムクエリの利点、カスタムクエリを使用して小切手からデータを正確に抽出する方法、およびこの機能を効果的に活用するためのベストプラクティスについて説明しました。数時間でアダプタを作成し、AnalyzeDocument APIでデータ抽出に使用できます。詳細については、カスタムクエリを参照してください。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles