Amazon Textract PlatoBlockchain Data Intelligenceの新しいクエリ機能を使用して、ドキュメントから情報を指定および抽出します。 垂直検索。 愛。

Amazon Textractの新しいクエリ機能を使用して、ドキュメントから情報を指定および抽出します

アマゾンテキストラック は、あらゆるドキュメントや画像からテキスト、手書き文字、データを自動的に抽出する機械学習 (ML) サービスです。 Amazon Textract では、Analyze Document API 内の新しいクエリ機能を使用して、ドキュメントから抽出する必要があるデータを指定できる柔軟性が提供されるようになりました。ドキュメント内のデータの構造 (テーブル、フォーム、暗黙のフィールド、ネストされたデータ) を知る必要も、ドキュメントのバージョンや形式による違いを心配する必要もありません。

この投稿では、次のトピックについて説明します。

  • AWS のお客様の成功事例と新しいクエリ機能の利点
  • Analyze Document Queries API がドキュメントから情報を抽出するのにどのように役立つか
  • Amazon Textract コンソールのウォークスルー
  • Analyze Document Queries API を使用するコード例
  • Amazon Textract パーサーライブラリを使用してレスポンスを処理する方法

新しいクエリ機能の利点

従来の OCR ソリューションでは、ほとんどの半構造化文書および非構造化文書からデータを正確に抽出するのが困難でした。これは、これらの文書の複数のバージョンおよび形式間でデータのレイアウト方法が大きく異なるためです。カスタムの後処理コードを実装するか、これらのドキュメントから抽出された情報を手動で確認する必要があります。クエリ機能を使用すると、自然言語の質問の形式で必要な情報 (たとえば、「顧客名は何ですか」) を指定し、API 応答の一部として正確な情報 (「John Doe」) を受け取ることができます。この機能は、視覚、空間、言語モデルの組み合わせを使用して、求める情報を高精度に抽出します。クエリ機能は、さまざまな半構造化ドキュメントおよび非構造化ドキュメントに対して事前トレーニングされています。例としては、給与明細、銀行取引明細書、W-2、ローン申請書、住宅ローン手形、ワクチンおよび保険カードなどがあります。

Amazon Textract を使用すると、顧客のドキュメント処理ニーズを自動化できます。クエリ機能を使用すると、さまざまなドキュメントからさらに柔軟かつ正確にデータを抽出できるようになります。  TekStream Solutions の最高経営責任者、ロバート ジャンセン氏は次のように述べています。。 "これはビジネス顧客にとって大きな生産性の向上であり、IDP ソリューションの一部としてクエリ機能を使用してドキュメントから重要な情報を迅速に取得できるようになります。 

Amazon Textract を使用すると、テキストだけでなくフォームやテーブルなどの構造化要素も画像から高精度で抽出できます。 Amazon Textract クエリは、安全データシートや材料仕様書などのいくつかのビジネスクリティカルな文書からの情報抽出の品質を大幅に向上させるのに役立ちました。  トーステン・ウォーネッケ校長はこう語った。 Camelot Management Consultants、PC アナリティクス責任者。 "自然言語クエリ システムは優れた柔軟性と精度を提供するため、後処理の負荷が軽減され、データ抽出ツールに新しいドキュメントをより迅速に追加できるようになりました。 

Analyze Document Queries API がドキュメントから情報を抽出するのにどのように役立つか

特に新型コロナウイルス感染症のパンデミックを考慮して、企業はデジタル プラットフォームの導入を増やしています。現在、ほとんどの組織は、スマートフォンやその他のモバイル デバイスを利用してサービスや製品を取得するデジタル方法を提供しています。これにより、ユーザーに柔軟性が提供されますが、デジタル ドキュメントのレビュー、処理、分析の規模も増大します。たとえば、住宅ローン書類、ワクチン接種カード、給与明細、保険証、その他の書類をデジタル分析する必要がある一部のワークロードでは、これらの書類に標準形式がなかったり、データ形式が大きく異なったりするため、データ抽出の複雑さが急激に悪化する可能性があります。ドキュメントの異なるバージョン間で。

強力な OCR ソリューションでも、これらのドキュメントからデータを正確に抽出するのは困難であり、これらのドキュメントに対してカスタムの後処理を実装する必要がある場合があります。これには、フォーム キーの考えられるバリエーションを顧客固有のフィールド名にマッピングしたり、非構造化ドキュメント内の特定の情報を識別するためのカスタム機械学習を含めたりすることが含まれます。

Amazon Textract の新しい Analyze Document Queries API は、「金利はいくらですか?」などの自然言語で書かれた質問を受け取ることができます。また、ドキュメントに対して強力な AI および ML 分析を実行して、必要な情報を特定し、後処理を行わずにドキュメントから抽出します。クエリ機能では、カスタム モデルのトレーニングやテンプレートや構成のセットアップは必要ありません。 Amazon Textract コンソールを介してドキュメントをアップロードし、それらのドキュメントに関する質問を指定することで、すぐに開始できます。 AWSコマンドラインインターフェイス (AWS CLI)、または AWS SDK。

この投稿の後続のセクションでは、一般的なワークロードのユースケースでこの新機能を使用する方法と、Analyze Document Queries API を使用してワークロードのデジタル化プロセスに俊敏性を追加する方法の詳細な例を説明します。

Amazon Textract コンソールのクエリ機能を使用する

API とコードサンプルを始める前に、Amazon Textract コンソールを確認してみましょう。次の画像は、ワクチン接種カードの例を示しています。 クエリ Amazon Textract コンソールの [Analyze Document API] タブ。ドキュメントを Amazon Textract コンソールにアップロードした後、 クエリ セクションに ドキュメントの構成 セクション。その後、自然言語の質問の形式でクエリを追加できます。すべてのクエリを追加したら、選択します 構成の適用. 質問に対する答えは、 クエリ タブには何も表示されないことに注意してください。

Amazon Textract PlatoBlockchain Data Intelligenceの新しいクエリ機能を使用して、ドキュメントから情報を指定および抽出します。 垂直検索。 愛。

コード例

このセクションでは、Queries パラメーターを使用して Analyze Document API を呼び出し、ドキュメントに関する自然言語の質問に対する回答を取得する方法について説明します。入力ドキュメントはバイト配列形式であるか、 Amazon シンプル ストレージ サービス (Amazon S3) バケット。 Bytes プロパティを使用して、画像バイトを Amazon Textract API オペレーションに渡します。たとえば、次のように使用できます。 Bytes プロパティを使用して、ローカル ファイル システムからロードされたドキュメントを渡します。を使用して渡された画像バイト Bytes プロパティはbase64でエンコードされている必要があります。 AWS SDK を使用して Amazon Textract API オペレーションを呼び出している場合、コードでドキュメント ファイルのバイトをエンコードする必要がない場合があります。または、S3 バケットに保存されている画像を A​​mazon Textract API オペレーションに渡すこともできます。 S3Object 財産。 S3 バケットに保存されているドキュメントは、base64 でエンコードする必要はありません。

クエリ機能を使用すると、給与明細、ワクチン接種カード、住宅ローン書類、銀行取引明細書、W-2 フォーム、1099 フォームなどのさまざまな種類の文書から回答を得ることができます。次のセクションでは、これらのドキュメントのいくつかを説明し、クエリ機能がどのように機能するかを示します。

給与スタブ

この例では、次のサンプル画像に示すように、クエリ機能を使用して給与明細を分析する手順を説明します。

Amazon Textract PlatoBlockchain Data Intelligenceの新しいクエリ機能を使用して、ドキュメントから情報を指定および抽出します。 垂直検索。 愛。

次のサンプルPythonコードを使用します。

import boto3
import json #create a Textract Client
textract = boto3.client('textract') image_filename = "paystub.jpg" response = None
with open(image_filename, 'rb') as document: imageBytes = bytearray(document.read()) # Call Textract AnalyzeDocument by passing a document from local disk
response = textract.analyze_document( Document={'Bytes': imageBytes}, FeatureTypes=["QUERIES"], QueriesConfig={ "Queries": [{ "Text": "What is the year to date gross pay", "Alias": "PAYSTUB_YTD_GROSS" }, { "Text": "What is the current gross pay?", "Alias": "PAYSTUB_CURRENT_GROSS" }] })

次のコードは、AWS CLI コマンドのサンプルです。

aws textract analyze-document —document '{"S3Object":{"Bucket":"your-s3-bucket","Name":"paystub.jpg"}}' —feature-types '["QUERIES"]' —queries-config '{"Queries":[{"Text":"What is the year to date gross pay", "Alias": "PAYSTUB_YTD_GROSS"}]}' 

前の例で Analyze Document API に渡した 2 つのクエリに対して取得した応答を分析してみましょう。次の応答は、関連する部分のみを示すためにトリミングされています。

{ "BlockType":"QUERY", "Id":"cbbba2fa-45be-452b-895b-adda98053153", #id of first QUERY "Relationships":[ { "Type":"ANSWER", "Ids":[ "f2db310c-eaa6-481d-8d18-db0785c33d38" #id of first QUERY_RESULT ] } ], "Query":{ "Text":"What is the year to date gross pay", #First Query "Alias":"PAYSTUB_YTD_GROSS" } }, { "BlockType":"QUERY_RESULT", "Confidence":87.0, "Text":"23,526.80", #Answer to the first Query "Geometry":{...}, "Id":"f2db310c-eaa6-481d-8d18-db0785c33d38" #id of first QUERY_RESULT }, { "BlockType":"QUERY", "Id":"4e2a17f0-154f-4847-954c-7c2bf2670c52", #id of second QUERY "Relationships":[ { "Type":"ANSWER", "Ids":[ "350ab92c-4128-4aab-a78a-f1c6f6718959"#id of second QUERY_RESULT ] } ], "Query":{ "Text":"What is the current gross pay?", #Second Query "Alias":"PAYSTUB_CURRENT_GROSS" } }, { "BlockType":"QUERY_RESULT", "Confidence":95.0, "Text":"$ 452.43", #Answer to the Second Query "Geometry":{...}, "Id":"350ab92c-4128-4aab-a78a-f1c6f6718959" #id of second QUERY_RESULT }

応答には、 BlockType of QUERY これは尋ねられた質問と Relationships 答えのあるブロックの ID が含まれるセクション。答えは、 BlockType of QUERY_RESULT。 Analyze Document API への入力として渡されるエイリアスは、応答の一部として返され、回答のラベル付けに使用できます。

私たちは、使用 Amazon Textract ResponseParser 質問、エイリアス、およびそれらの質問に対応する回答だけを抽出するには、次のようにします。

import trp.trp2 as t2 d = t2.TDocumentSchema().load(response)
page = d.pages[0] # get_query_answers returns a list of [query, alias, answer]
query_answers = d.get_query_answers(page=page)
for x in query_answers: print(f"{image_filename},{x[1]},{x[2]}") from tabulate import tabulate
print(tabulate(query_answers, tablefmt="github"))

上記のコードは、次の結果を返します。

|------------------------------------|-----------------------|-----------|
| What is the current gross pay? | PAYSTUB_CURRENT_GROSS | $ 452.43 |
| What is the year to date gross pay | PAYSTUB_YTD_GROSS | 23,526.80 |

その他の質問と完全なコードは、次のノートブックにあります。 GitHubレポ.

抵当権状

Analyze Document Queries API は、次のような住宅ローン手形でも適切に機能します。

Amazon Textract PlatoBlockchain Data Intelligenceの新しいクエリ機能を使用して、ドキュメントから情報を指定および抽出します。 垂直検索。 愛。

API を呼び出して結果を処理するプロセスは前の例と同じです。完全なコード例は、 GitHubレポ.

次のコードは、API を使用して取得された応答の例を示しています。

|------------------------------------------------------------|----------------------------------|---------------|
| When is this document dated? | MORTGAGE_NOTE_DOCUMENT_DATE | March 4, 2022 |
| What is the note date? | MORTGAGE_NOTE_DATE | March 4, 2022 |
| When is the Maturity date the borrower has to pay in full? | MORTGAGE_NOTE_MATURITY_DATE | April, 2032 |
| What is the note city and state? | MORTGAGE_NOTE_CITY_STATE | Anytown, ZZ |
| what is the yearly interest rate? | MORTGAGE_NOTE_YEARLY_INTEREST | 4.150% |
| Who is the lender? | MORTGAGE_NOTE_LENDER | AnyCompany |
| When does payments begin? | MORTGAGE_NOTE_BEGIN_PAYMENTS | April, 2022 |
| What is the beginning date of payment? | MORTGAGE_NOTE_BEGIN_DATE_PAYMENT | April, 2022 |
| What is the initial monthly payments? | MORTGAGE_NOTE_MONTHLY_PAYMENTS | $ 2500 |
| What is the interest rate? | MORTGAGE_NOTE_INTEREST_RATE | 4.150% |
| What is the principal amount borrower has to pay? | MORTGAGE_NOTE_PRINCIPAL_PAYMENT | $ 500,000 |

予防接種カード

Amazon Textract クエリ機能は、次の例のように、ワクチン接種カードまたはそれに類似したカードから情報を抽出するのにも非常にうまく機能します。

Amazon Textract PlatoBlockchain Data Intelligenceの新しいクエリ機能を使用して、ドキュメントから情報を指定および抽出します。 垂直検索。 愛。

API を呼び出して結果を解析するプロセスは、給与明細の場合と同じです。応答を処理した後、次の情報を取得します。

|------------------------------------------------------------|--------------------------------------|--------------|
| What is the patients first name | PATIENT_FIRST_NAME | Major |
| What is the patients last name | PATIENT_LAST_NAME | Mary |
| Which clinic site was the 1st dose COVID-19 administrated? | VACCINATION_FIRST_DOSE_CLINIC_SITE | XYZ |
| Who is the manufacturer for 1st dose of COVID-19? | VACCINATION_FIRST_DOSE_MANUFACTURER | Pfizer |
| What is the date for the 2nd dose covid-19? | VACCINATION_SECOND_DOSE_DATE | 2/8/2021 |
| What is the patient number | PATIENT_NUMBER | 012345abcd67 |
| Who is the manufacturer for 2nd dose of COVID-19? | VACCINATION_SECOND_DOSE_MANUFACTURER | Pfizer |
| Which clinic site was the 2nd dose covid-19 administrated? | VACCINATION_SECOND_DOSE_CLINIC_SITE | CVS |
| What is the lot number for 2nd dose covid-19? | VACCINATION_SECOND_DOSE_LOT_NUMBER | BB5678 |
| What is the date for the 1st dose covid-19? | VACCINATION_FIRST_DOSE_DATE | 1/18/21 |
| What is the lot number for 1st dose covid-19? | VACCINATION_FIRST_DOSE_LOT_NUMBER | AA1234 |
| What is the MI? | MIDDLE_INITIAL | M |

完全なコードは、次のノートブックにあります。 GitHubレポ.

保険証

クエリ機能は、次のような保険カードでも機能します。

Amazon Textract PlatoBlockchain Data Intelligenceの新しいクエリ機能を使用して、ドキュメントから情報を指定および抽出します。 垂直検索。 愛。

API を呼び出して結果を処理するプロセスは、前に示したものと同じです。完全なコード例は、次のノートブックで入手できます。 GitHubレポ.

API を使用して取得される応答の例を次に示します。

|-------------------------------------|-----------------------------------|---------------|
| What is the insured name? | INSURANCE_CARD_NAME | Jacob Michael |
| What is the level of benefits? | INSURANCE_CARD_LEVEL_BENEFITS | SILVER |
| What is medical insurance provider? | INSURANCE_CARD_PROVIDER | Anthem |
| What is the OOP max? | INSURANCE_CARD_OOP_MAX | $6000/$12000 |
| What is the effective date? | INSURANCE_CARD_EFFECTIVE_DATE | 11/02/2021 |
| What is the office visit copay? | INSURANCE_CARD_OFFICE_VISIT_COPAY | $55/0% |
| What is the specialist visit copay? | INSURANCE_CARD_SPEC_VISIT_COPAY | $65/0% |
| What is the member id? | INSURANCE_CARD_MEMBER_ID | XZ 9147589652 |
| What is the plan type? | INSURANCE_CARD_PLAN_TYPE | Pathway X-EPO |
| What is the coinsurance amount? | INSURANCE_CARD_COINSURANCE | 30% |

クエリ作成のベスト プラクティス

クエリを作成するときは、次のベスト プラクティスを考慮してください。

  • 一般に、「何ですか」、「どこですか」、または「誰ですか」で始まる自然言語の質問をします。例外は、標準のキーと値のペアを抽出しようとする場合で、その場合はキー名をクエリとして渡すことができます。
  • 形式が正しくない質問や文法的に間違った質問は避けてください。予期しない答えが得られる可能性があります。たとえば、形式の悪いクエリは「いつ?」です。一方、適切な形式のクエリは「ワクチンの最初の投与はいつ行われましたか?」です。
  • 可能であれば、ドキュメントの単語を使用してクエリを作成します。クエリ機能は、「SSN」、「納税者番号」、「社会保障番号」などの一般的な業界用語の頭字語と同義語の照合を試みますが、文書から直接言語を使用すると結果が向上します。たとえば、文書に「仕事の進捗状況」と記載されている場合は、「プロジェクトの進捗状況」、「プログラムの進捗状況」、「ジョブのステータス」などの表現を避けるようにしてください。
  • 行ヘッダーと列ヘッダーの両方の単語を含むクエリを作成します。たとえば、前述のワクチン接種カードの例では、2 回目のワクチン接種の日付を知るために、「XNUMX 回目のワクチン接種が行われた日は何ですか?」というクエリを組み立てることができます。
  • 応答が長いと応答の待ち時間が長くなり、タイムアウトが発生する可能性があります。 100 ワード未満の回答で応答する質問をするようにしてください。
  • フォームから標準のキーと値のペアを抽出しようとする場合、質問としてキー名のみを渡すと機能します。他のすべての抽出ユースケースについては、完全な質問を構成することをお勧めします。
  • できるだけ具体的にしてください。例えば:
    • 文書に複数のセクション (「借入人」と「共同借入人」など) が含まれており、両方のセクションに「SSN」というフィールドがある場合は、「借入者の SSN は何ですか?」と尋ねます。 「共同借入者の SSN とは何ですか?」
    • 文書に複数の日付関連フィールドがある場合は、クエリ言語で具体的に「文書が署名された日付は何ですか?」と尋ねます。または「アプリケーションの生年月日はいつですか?」 「日付は何ですか?」などの曖昧な質問は避けてください。
  • ドキュメントのレイアウトが事前にわかっている場合は、位置のヒントを提供して結果の精度を高めます。たとえば、「一番上の日付は何ですか?」と尋ねます。または「左側の日付は何ですか?」または「一番下の日付は何ですか?」

クエリ機能の詳細については、Textract を参照してください。 ドキュメント.

まとめ

この投稿では、自然言語の質問に基づいて給与明細、住宅ローン手形、保険カード、ワクチン接種カードなどの文書から情報を迅速かつ簡単に取得するための、Amazon Textract の新しいクエリ機能の概要を説明しました。応答 JSON を解析する方法についても説明しました。

詳細については、を参照してください。 文書の分析 、または、Amazon Textract コンソールをチェックして、この機能を試してみてください。


著者について

Amazon Textract PlatoBlockchain Data Intelligenceの新しいクエリ機能を使用して、ドキュメントから情報を指定および抽出します。 垂直検索。 愛。ウダイナラヤナン AWS のシニア ソリューション アーキテクトです。彼は、顧客が複雑なビジネス課題に対する革新的なソリューションを見つけられるよう支援することに喜びを感じています。彼が主に注力している分野は、データ分析、ビッグデータ システム、機械学習です。余暇には、スポーツをしたり、テレビ番組を一気見したり、旅行を楽しんでいます。

Amazon Textract PlatoBlockchain Data Intelligenceの新しいクエリ機能を使用して、ドキュメントから情報を指定および抽出します。 垂直検索。 愛。ラファエル・カイシェタ カリフォルニアを拠点とする AWS のシニア ソリューション アーキテクトです。彼はクラウド用のアーキテクチャ開発に 10 年以上の経験があります。彼の中心となる分野は、サーバーレス、コンテナー、機械学習です。余暇には、フィクションの本を読んだり、世界を旅行したりすることを楽しんでいます。

Amazon Textract PlatoBlockchain Data Intelligenceの新しいクエリ機能を使用して、ドキュメントから情報を指定および抽出します。 垂直検索。 愛。 ナブニース・ネア Amazon Textract チームのテクニカル担当シニアプロダクトマネージャーです。彼は、AWS の顧客向けに機械学習ベースのサービスを構築することに重点を置いています。

Amazon Textract PlatoBlockchain Data Intelligenceの新しいクエリ機能を使用して、ドキュメントから情報を指定および抽出します。 垂直検索。 愛。マルティン・シャーデ は、AmazonTextractチームのシニアML製品SAです。 彼は、インターネット関連のテクノロジー、エンジニアリング、およびアーキテクチャソリューションで20年以上の経験があります。 彼は2014年にAWSに参加し、最初にAWSサービスの最も効率的でスケーラブルな使用法についてAWSの最大の顧客の一部を指導し、その後、コンピュータービジョンに焦点を当てたAI/MLに焦点を当てました。 現在、彼はドキュメントから情報を抽出することに夢中になっています。

タイムスタンプ:

より多くの AWS機械学習