ゼファーネットのロゴ

AWS AI サービスを使用したインテリジェントなドキュメント処理: パート 1

日付:

ヘルスケア、金融、融資、法律、小売、製造などのさまざまな業界の組織は、日常のビジネス プロセスで多くのドキュメントを処理する必要があります。 これらのドキュメントには、最高レベルの顧客満足度を維持し、顧客のオンボーディングを迅速化し、顧客離れを減らすために、時間どおりに決定を下すための鍵となる重要な情報が含まれています。 ほとんどの場合、ドキュメントは手動で処理されて情報と洞察を抽出しますが、これには時間がかかり、エラーが発生しやすく、費用がかかり、スケーリングが困難です。 現在、これらのドキュメントから情報を処理および抽出するために利用できる自動化は限られています。 AWS 人工知能 (AI) サービスを使用したインテリジェント ドキュメント処理 (IDP) は、機械学習 (ML) スキルを必要とせずに、さまざまな種類や形式のドキュメントからの情報抽出を迅速かつ高精度で自動化するのに役立ちます。 高精度で高速な情報抽出は、全体的なコストを削減しながら、質の高いビジネス上の意思決定を時間通りに下すのに役立ちます。

IDP ワークフローのステージはさまざまであり、ユース ケースやビジネス要件によって影響を受ける場合がありますが、次の図は、通常 IDP ワークフローの一部であるステージを示しています。 税務フォーム、請求書、医療記録、新規顧客フォーム、請求書、法的契約などのドキュメントの処理は、IDP の使用例のほんの一部です。

この XNUMX 部構成のシリーズでは、AWS AI サービスを使用してドキュメントを大規模に自動化し、インテリジェントに処理する方法について説明します。 この投稿では、IDP ワークフローの最初の XNUMX つのフェーズについて説明します。 の 一部2では、残りのワークフロー フェーズについて説明します。

ソリューションの概要

次のアーキテクチャ図は、IDP ワークフローの段階を示しています。 さまざまなファイル形式 (PDF、JPEG、PNG、TIFF) とドキュメントのレイアウトを安全に保存および集約するためのデータ キャプチャ段階から始まります。 次の段階は分類です。ここでは、文書 (契約書、請求書、請求書、領収書など) を分類してから、文書を抽出します。 抽出段階では、ドキュメントから意味のあるビジネス情報を抽出できます。 この抽出されたデータは、多くの場合、データ分析によって洞察を収集するために使用されるか、データベースやトランザクション システムなどのダウンストリーム システムに送信されます。 次の段階はエンリッチメントです。ここでは、保護された医療情報 (PHI) または個人を特定できる情報 (PII) データの編集、カスタム ビジネス用語の抽出などによってドキュメントをエンリッチできます。 最後に、レビューと検証の段階では、結果が正確であることを確認するためにドキュメント レビューに人員を含めることができます。

この投稿では、銀行取引明細書、請求書、店舗の領収書などの一連のサンプル ドキュメントを検討します。 ドキュメント サンプルとサンプル コードは、 GitHubリポジトリ. 次のセクションでは、これらのコード サンプルと実際の実用的なアプリケーションについて説明します。 ML 機能を活用する方法を示します。 アマゾンテキストラック, Amazon Comprehend, Amazon拡張AI (Amazon A2I) ドキュメントを処理し、ドキュメントから抽出されたデータを検証します。

Amazon Textract は、スキャンしたドキュメントからテキスト、手書き、およびデータを自動的に抽出する ML サービスです。 単純な光学式文字認識 (OCR) を超えて、フォームやテーブルからデータを識別、理解し、抽出します。 Amazon Textract は ML を使用してあらゆるタイプのドキュメントを読み取って処理し、テキスト、手書き、表、およびその他のデータを手作業なしで正確に抽出します。

Amazon Comprehend は、ML を使用してドキュメントのコンテンツに関する洞察を抽出する自然言語処理 (NLP) サービスです。 Amazon Comprehend は、言語、人物、場所への言及など、ドキュメント内の重要な要素を特定し、それらを関連するトピックまたはクラスターに分類できます。 感情分析を実行して、単一のドキュメントまたはバッチ検出を使用してリアルタイムでドキュメントの感情を判断できます。 たとえば、ブログ投稿のコメントを分析して、読者がその投稿を気に入っているかどうかを知ることができます。 Amazon Comprehend は、リアルタイムおよび非同期のバッチ ジョブで、テキスト ドキュメント内の住所、銀行口座番号、電話番号などの PII も検出します。 また、非同期バッチ ジョブで PII エンティティを編集することもできます。

Amazon A2I は、人間によるレビューに必要なワークフローの構築を容易にする ML サービスです。 Amazon A2I はすべての開発者に人間によるレビューをもたらし、AWS で実行されているかどうかに関係なく、人間によるレビュー システムの構築や多数の人間によるレビュー担当者の管理に関連する差別化されていない重労働を取り除きます。 Amazon A2I は両方を アマゾンテキストラック & Amazon Comprehend インテリジェントなドキュメント処理ワークフロー内に人間によるレビュー手順を導入する機能を提供します。

データ取得フェーズ

次のような高度にスケーラブルで耐久性のあるストレージにドキュメントを保存できます Amazon シンプル ストレージ サービス (アマゾン S3)。 Amazon S3 は、業界をリードするスケーラビリティ、データの可用性、セキュリティ、およびパフォーマンスを提供するオブジェクト ストレージ サービスです。 Amazon S3 はイレブン ナインの耐久性を実現するように設計されており、世界中の何百万もの顧客のデータを保存しています。 ドキュメントはさまざまな形式やレイアウトで提供され、Web ポータルや電子メールの添付ファイルなどのさまざまなチャネルから提供されます。

分類フェーズ

前のステップでは、さまざまな種類と形式のドキュメントを収集しました。 このステップでは、さらに抽出を行う前に、ドキュメントを分類する必要があります。 そのために、Amazon Comprehend を使用します。 カスタム分類. ドキュメントの分類は XNUMX 段階のプロセスです。 まず、Amazon Comprehend カスタム分類子をトレーニングして、関心のあるクラスを認識します。 次に、モデルをデプロイします。 カスタム分類器のリアルタイム エンドポイント ラベル付けされていないドキュメントをリアルタイム エンドポイントに送信して分類します。

次の図は、典型的なドキュメント分類ワークフローを表しています。

分類フェーズ

分類器をトレーニングするには、関心のあるクラスを特定し、各クラスのサンプル ドキュメントをトレーニング資料として提供します。 指定したオプションに基づいて、Amazon Comprehend は、指定したドキュメントに基づいてトレーニングするカスタム ML モデルを作成します。 このカスタム モデル (分類子) は、送信された各ドキュメントを調べます。 コンテンツを最もよく表す特定のクラス (マルチクラス モードを使用している場合) またはコンテンツに適用されるクラスのセット (マルチラベル モードを使用している場合) のいずれかを返します。

トレーニング データの準備

最初のステップは、Amazon Comprehend カスタム分類子に必要なドキュメントからテキストを抽出することです。 Amazon S3 のすべてのドキュメントの未加工のテキスト情報を抽出するために、Amazon Textract を使用します。 detect_document_text() API。 また、カスタム Amazon Comprehend 分類器のトレーニングに使用されるドキュメント タイプに従ってデータにラベルを付けます。

次のコードは、簡略化のために削除されています。 完全なコードについては、GitHub を参照してください。 サンプルコード for textract_extract_text()。 関数 call_textract() を呼び出す wr4apper 関数です。 ドキュメントの分析 API は内部で使用され、メソッドに渡されるパラメーターは、API が抽出タスクを実行するために必要な構成の一部を抽象化します。

def textract_extract_text(document, bucket=data_bucket):        
    try:
        print(f'Processing document: {document}')
        lines = ""
        row = []
        
        # using amazon-textract-caller
        response = call_textract(input_document=f's3://{bucket}/{document}') 
        # using pretty printer to get all the lines
        lines = get_string(textract_json=response, output_type=[Textract_Pretty_Print.LINES])
        
        label = [name for name in names if(name in document)]  
        row.append(label[0])
        row.append(lines)        
        return row
    except Exception as e:
        print (e)        

カスタム分類器をトレーニングする

このステップでは、Amazon Comprehend カスタム分類を使用して、ドキュメントを分類するモデルをトレーニングします。 私たちは、 CreateDocumentClassifier ラベル付けされたデータを使用してカスタム モデルをトレーニングする分類器を作成するための API。 次のコードを参照してください。

create_response = comprehend.create_document_classifier(
        InputDataConfig={
            'DataFormat': 'COMPREHEND_CSV',
            'S3Uri': f's3://{data_bucket}/{key}'
        },
        DataAccessRoleArn=role,
        DocumentClassifierName=document_classifier_name,
        VersionName=document_classifier_version,
        LanguageCode='en',
        Mode='MULTI_CLASS'
    )

リアルタイム エンドポイントをデプロイする

Amazon Comprehend カスタム分類子を使用するには、 CreateEndpoint API:

endpoint_response = comprehend.create_endpoint(
        EndpointName=ep_name,
        ModelArn=model_arn,
        DesiredInferenceUnits=1,    
        DataAccessRoleArn=role
    )
    ENDPOINT_ARN=endpoint_response['EndpointArn']
print(f'Endpoint created with ARN: {ENDPOINT_ARN}')  

リアルタイム エンドポイントでドキュメントを分類する

Amazon Comprehend エンドポイントが作成されたら、リアルタイム エンドポイントを使用してドキュメントを分類できます。 私たちは、 comprehend.classify_document() 抽出されたドキュメント テキストと推論エンドポイントを入力パラメーターとして使用する関数:

response = comprehend.classify_document(
      Text= document,
      EndpointArn=ENDPOINT_ARN
      )

Amazon Comprehend は、ドキュメントのすべてのクラスを、キーと値のペア (name-score) の配列内の各クラスにリンクされた信頼スコアとともに返します。 信頼スコアが最も高いドキュメント クラスを選択します。 次のスクリーンショットはサンプル応答です。

リアルタイム エンドポイントでドキュメントを分類する

詳細なドキュメント分類のサンプル コードを確認することをお勧めします。 GitHubの.

抽出段階

Amazon Textract では、Amazon Textract を使用してテキストおよび構造化データ情報を抽出できます ドキュメントテキストの検出 & ドキュメントの分析 API、それぞれ。 これらの API は、WORDS、LINES、FORMS、TABLES、ジオメトリまたはバウンディング ボックスの情報、関係などを含む JSON データで応答します。 両方 DetectDocumentText & AnalyzeDocument 同期操作です。 ドキュメントを非同期的に分析するには、次を使用します。 startdocumentTextDetection.

構造化データの抽出

検出されたアイテム間のデータ構造と関係を保持しながら、ドキュメントからテーブルなどの構造化データを抽出できます。 を使用できます。 ドキュメントの分析 とのAPI FeatureType as TABLE ドキュメント内のすべてのテーブルを検出します。 次の図は、このプロセスを示しています。

構造化データの抽出

次のコードを参照してください。

response = textract.analyze_document(
    Document={
        'S3Object': {
            'Bucket': s3BucketName,
            'Name': documentName
        }
    },
    FeatureTypes=["TABLES"])

実行します analyze_document() メソッドと FeatureType as TABLES 従業員履歴書で、次の結果のテーブル抽出を取得します。

テーブル抽出のためのドキュメント API 応答の分析

半構造化データの抽出

フォームやキーと値のペアなどの半構造化データを、データ構造と検出されたアイテム間の関係を保持しながら、ドキュメントから抽出できます。 を使用できます。 ドキュメントの分析 とのAPI FeatureType as FORMS ドキュメント内のすべてのフォームを検出します。 次の図は、このプロセスを示しています。

半構造化データの抽出

次のコードを参照してください。

response = textract.analyze_document(
    Document={
        'S3Object': {
            'Bucket': s3BucketName,
            'Name': documentName
        }
    },
    FeatureTypes=["FORMS"])

ここでは、 analyze_document() メソッドと FeatureType as FORMS 従業員のアプリケーション ドキュメントで、結果のテーブル抽出を取得します。

非構造化データの抽出

Amazon Textract は、業界をリードする OCR 精度を備えた高密度テキスト抽出に最適です。 を使用できます。 ドキュメントテキストの検出 次の図に示すように、テキスト行とテキスト行を構成する単語を検出する API。

非構造化データの抽出

次のコードを参照してください。

response = textract.detect_document_text(Document={'Bytes': imageBytes})

# Print detected text
for item in response["Blocks"]:
	if item["BlockType"] == "LINE":
 		print (item["Text"])

今、私たちは実行します detect_document_text() サンプル画像に対してメソッドを実行し、結果から生のテキスト抽出を取得します。

請求書と領収書

Amazon Textract は、請求書と領収書を大規模に処理するための特別なサポートを提供します。 の 分析費用 API は、テンプレートや設定なしで、ほぼすべての請求書や領収書から商品やサービスの明細リストから、明示的にラベル付けされたデータ、暗黙のデータ、および項目を抽出できます。 次の図は、このプロセスを示しています。

請求書と領収書の抽出

次のコードを参照してください。

response = textract.analyze_expense(
    Document={
        'S3Object': {
            'Bucket': s3BucketName,
            'Name': documentName
        }
    })

Amazon Textract は、「ベンダー」と呼ばれる明示的なラベルがなく、ページのロゴ内にのみ示されている場合でも、レシートでベンダー名を見つけることができます。 また、明細項目の列ヘッダーでラベル付けされていない経費項目、数量、および価格を検索して抽出することもできます。

経費 API 応答の分析

身分証明書

アマゾンのテキストラクト 分析ID API を使用すると、テンプレートや構成を必要とせずに、運転免許証やパスポートなどの身分証明書から情報を自動的に抽出できます。 有効期限や生年月日などの特定の情報を抽出したり、名前や住所などの暗黙の情報をインテリジェントに識別して抽出したりできます。 次の図は、このプロセスを示しています。

本人確認書類の抽出

次のコードを参照してください。

textract_client = boto3.client('textract')
j = call_textract_analyzeid(document_pages=["s3://amazon-textract-public-content/analyzeid/driverlicense.png"],boto3_textract_client=textract_client)

我々は使用することができます tabulate きれいに印刷された出力を取得するには:

from tabulate import tabulate

print(tabulate([x[1:3] for x in result]))

詳細なドキュメントの抽出を行うことをお勧めします サンプルコード GitHub で。 この投稿の完全なコード サンプルの詳細については、 GitHubレポ.

まとめ

XNUMX 回シリーズの最初の投稿では、IDP のさまざまな段階とソリューション アーキテクチャについて説明しました。 また、Amazon Comprehend カスタム分類子を使用したドキュメント分類についても説明しました。 次に、Amazon Textract を使用して、非構造化、半構造化、構造化、および特殊化されたドキュメント タイプから情報を抽出する方法を調べました。

In 一部2 このシリーズでは、Amazon Textract の抽出機能とクエリ機能について引き続き説明します。 Amazon Comprehend の事前定義されたエンティティとカスタム エンティティを使用して、高密度のテキストを含むドキュメントから重要なビジネス用語を抽出する方法と、IDP プロセスに Amazon A2I ヒューマン イン ザ ループ レビューを統合する方法について説明します。

のセキュリティ セクションを確認することをお勧めします。 アマゾンテキストラック, Amazon Comprehend, アマゾンA2I ドキュメンテーションおよび提供されたガイドラインに従うこと。 また、価格を確認して理解するために少し時間を取ってください アマゾンテキストラック, Amazon Comprehend, アマゾンA2I.


著者について

スプラカシュ・ダッタ アマゾン ウェブ サービスのソリューション アーキテクトです。 彼は、デジタル トランスフォーメーション戦略、アプリケーションのモダナイゼーションと移行、データ分析、機械学習に重点を置いています。

ソナリ・サフ アマゾン ウェブ サービスのインテリジェント ドキュメント処理 AI/ML ソリューション アーキテクト チームを率いています。 彼女は情熱的な技術愛好家であり、イノベーションを使用して複雑な問題を解決するために顧客と協力することを楽しんでいます。 彼女の主な専門分野は、インテリジェントなドキュメント処理のための人工知能と機械学習です。

アンジャンビスワス AI/ML とデータ分析を専門とするシニア AI サービス ソリューション アーキテクトです。 Anjan は、世界規模の AI サービス チームの一員であり、お客様と協力して、AI と ML を使用したビジネス上の問題に対するソリューションの理解と開発を支援しています。 Anjan は、グローバルサプライチェーン、製造、および小売組織との 14 年以上の経験を持ち、お客様が AWS AI サービスを開始してスケールするのを積極的に支援しています。

チンマイ・レーン アマゾン ウェブ サービスの AI/ML スペシャリスト ソリューション アーキテクトです。 彼女は応用数学と機械学習に情熱を注いでいます。 彼女は、AWS の顧客向けのインテリジェントなドキュメント処理ソリューションの設計に重点を置いています。 仕事以外では、サルサとバチャータ ダンスを楽しんでいます。

スポット画像

最新のインテリジェンス

スポット画像