Amazon Web Services ブログ

重要なドキュメントを処理するための Amazon Textract と Amazon Augmented AI の併用

ドキュメントは、金融、医療、法律、および不動産などの数多くの業界全体における記録管理、コミュニケーション、コラボレーション、そして取引のための主な手段です。たとえば、毎年、数百万の住宅ローン申請書と数億の納税申告書が処理されます。ドキュメントは構造化されていないことがよくあります。コンテンツの場所や形式は、2 つの類似したフォーム間で異なる場合があります。非構造化ドキュメントは、検索と検出、ビジネスプロセスの自動化、およびコンプライアンス管理を可能にするために、時間がかかる複雑なプロセスが必要になります。機械学習 (ML) を使用してこれらの非構造化ドキュメントの処理を自動化する場合、人間の判断を必要とする機密ワークフローの管理に役立つように人間のレビューを組み込むことができます。

Amazon Textract を使用すると、ほぼすべてのドキュメントからテキストとデータを簡単に抽出できます。Amazon Augmented AI (Amazon A2I) を使用すると、機械学習の予測で人間によるレビューを簡単に実装できます。この記事では、Amazon Textract と Amazon A2I を利用して、機械学習の経験がなくても、構造化ドキュメントと非構造化ドキュメントの両方から非常に正確なデータを自動的に抽出する方法を示します。Amazon Textract は、Amazon A2I と直接統合されているため、たとえば、低品質のスキャンや手書きの荒いドキュメントのレビューを人間が簡単に行えるようにします。Amazon A2I は、レビュー担当者がレビュータスクを完了するために必要な指示とツールを備えたウェブインターフェイスを提供します。

AWS が可用性に優れたスケーラブルな環境での高度な機械学習モデルの構築、トレーニング、およびデプロイメントを処理するので、皆さんには簡単に使用できる API アクションでこれらのサービスを活用していただきます。Amazon Textract フォームデータ抽出 API と Amazon A2I を使用して、人間のレビュー担当者が必要な条件を定義できます。これらのビジネス条件をいつでも調整して、精度と費用対効果の適切なバランスを実現できます。たとえば、モデルがその予測について 90% 未満の確信しか持っていない場合、機械学習モデルがドキュメントのコンテンツについて行う予測 (または推論) を人間が確認するように指定できます。また、ドキュメントで重要なフォームフィールドを指定して、人間によるレビューに送信することもできます。

Amazon A2I を使用して、Amazon Textract 予測のランダムなサンプルを人間のレビュー担当者に送信することもできます。これらの結果を使用して、利害関係者にモデルのパフォーマンスを通知し、モデルの予測を監査できます。

前提条件

この記事では、次の前提条件を満たす必要があります。

  • IAM ロールを作成する – 人間によるレビューのワークフローを作成するには、ヒューマンタスク UI でレンダリングするオブジェクトの読み取りと人間によるレビュー結果の書き込みの両方について、Amazon S3 にアクセスするための Amazon A2I アクセス許可を付与する IAM ロールを提供する必要があります。このロールは、Amazon SageMaker にロールを引き受けるアクセス許可を与えるために、添付された信頼ポリシーも必要とします。これにより、Amazon A2I は、ロールに添付したアクセス許可通りにアクションを実行できます。フロー定義の作成に使用するロールに変更して添付できるポリシーの例については、フロー定義の作成を有効にするを参照してください。
  • Amazon Textract 分析ドキュメント API を呼び出すためのアクセス許可を構成する – また、Amazon Textract 分析ドキュメント API を呼び出すために使用する IAM ユーザーに AmazonAugmentedAIFullAccess ポリシーを添付する必要があります。手順については、Amazon Augmented AI オペレーションを呼び出すことができる IAM ユーザーを作成するを参照してください。

ステップ 1: プライベート作業チームを作成する

作業チームは、ドキュメントをレビューするために選択したグループです。Amazon Mechanical Turk 作業者、ベンダーを管理する作業者、またはタスクに取り組むために招待する独自のプライベート作業者で構成される、労働力から作業チームを作成できます。どちらの労働力タイプを選択しても、Amazon A2I が労働者へのタスク送信を処理します。この記事では、プライベート作業者を使用して作業チームを作成し、自分をチームに追加して Amazon A2I ワークフローのプレビューを表示します。

プライベート作業者を作成して管理するには、Amazon SageMaker コンソールの [ラベル付け作業者] ページを使用できます。コンソールでは、作業者のメールアドレスを入力するか、Amazon Cognito ユーザープールから既存の労働力をインポートすることにより、プライベート作業者を作成するオプションがあります。

すでに Amazon SageMaker Ground Truth の作業チームがある場合は、Amazon A2I で同じ作業チームを使用して、次のセクションにスキップできます。

プライベートワークチームを作成するには、次の手順を実行します。

  • Amazon SageMaker コンソールの [ラベル付け作業者] ページに移動します。AWS リージョン us-east-1 (バージニア北部) にいることを確認します。
  • [プライベート] タブで、[プライベートチームを作成する] を選択します。
  • [E メールで新しい作業者を招待] を選択します。
  • この記事では、メールアドレスを入力して、ドキュメント処理タスクに取り組みます。
    [メールアドレス] ボックスには、カンマ区切りで最大 50 個のメールアドレスのリストを入力できます。
  • 組織名と連絡先メールアドレスを入力します。
  • [プライベートチームを作成する] を選択します。

プライベートチームを作成すると、招待メールが届きます。次のスクリーンショットは、E メールの例を示しています。

リンクをクリックしてパスワードを変更すると、このチームの確認済み作業者として登録されます。次のスクリーンショットは、[プライベート] タブでの更新された情報を示しています。

これで人間が 1 人含まれたチームが準備できました。人間によるレビューワークフローを作成できます。

ステップ 2: 人間によるレビューワークフローを作成する

人間によるレビューワークフローを使用して、次のことを行います。

  • ドキュメントコンテンツの Amazon Textract 予測がレビュー目的で人間に送信されるビジネス条件を定義します。たとえば、モデルが満たす必要のある形式で、重要な単語の信頼度しきい値を設定できます。その単語 (またはフォームキー) の推論信頼度が信頼度のしきい値を下回る場合、フォームと予測は人間によるレビューに使用されます。
  • 作業者がドキュメントのレビュータスクを完了するのに役立つ手順を作成します。Amazon SageMaker コンソールの Augmented AI セクションにある人間によるレビューのワークフローページ (https://console.aws.amazon.com/a2i/home) に移動します。[人間によるレビューのワークフローを作成する] ボタンをクリックします。
  • [ワークフロー設定] セクションの [名前] に、一意のワークフロー名を入力します。
  • S3 バケットには、人間によるレビュー結果を保存する S3 バケットを入力します。バケットはワークフローと同じリージョンに配置する必要があります。たとえば、a2i-demos というバケットを作成する場合は、パス s3://a2i-demos/ を入力します。
  • [IAM ロール] で、ドロップダウンメニューから [新しいロールを作成する] を選択します。Amazon A2I は自動的にロールを作成できます。
  • 指定する S3 バケットについては、[特定の S3 バケット] を選択します。
  • 前に指定した S3 バケット (例: a2i-demos) を入力します。
  • [作成] を選択します。ロールの作成が完了すると確認が表示され、IAM ロールのドロップダウンメニューにロールが事前入力されます。
  • [タスクタイプ] で、[Amazon Textract – キーと値のペアを抽出] を選択します。

    次に、人間によるレビューをトリガーする条件を定義します。

この記事では、キーのメールアドレスが 99% 未満の信頼スコアで識別されているか、ドキュメント内で Amazon Textract によって識別されていない場合に、人間によるレビューをトリガーします。他のすべてのキーについては、信頼スコア 90% 未満でキーが識別されると、人間によるレビューが開始されます。

  • [フォームキーの信頼スコアに基づいて、または特定のフォームキーがない場合に、特定のフォームキーの人間によるレビューをトリガーする] を選択します。
  • [キー名] に、メールアドレスを入力します。
  • 識別子の信頼しきい値を 0〜99 の範囲で設定します。
  • 修飾子の信頼しきい値を 0〜99 の範囲で設定します。
  • [特定の信頼スコア範囲で Amazon Textract によって識別されたすべてのフォームキーに対して人間によるレビューをトリガーする] を選択します。
  • 識別子の信頼しきい値を 0〜90 の範囲で設定します。
  • 修飾子の信頼しきい値を 0〜90 の範囲で設定します。

モデルを監視する目的で、ページの特定の割合をランダムに送信して人間が確認することもできます。これは、人間によるレビューのページを呼び出すための条件の 3 番目のオプションです。レビューフォームのサンプルをランダムに人間に送信します。この記事にはこの条件が含まれていません。

次のステップでは、ドキュメントをレビューするために作業者に表示される UI テンプレートを作成します。Amazon A2I は、事前に構築されたテンプレートを提供します。このテンプレートは、作業者がドキュメント内のキーと値のペアを識別するために使用されます。

  • [作業者タスクテンプレートの作成] セクションで、[デフォルトのテンプレートから作成する] を選択します。
  • [テンプレート名] に名前を入力します。

    デフォルトのテンプレートを使用する場合、作業者がタスクを完了できるように支援するタスク固有の指示を提供できます。この記事では、コンソールに表示されるデフォルトの手順と同様の手順を入力できます。
  • [タスクの説明] に、「このドキュメントのキーと値のペアを確認してください」と似た文章を追加します。
  • [指示] で、提供されているデフォルトの指示を確認し、必要に応じて変更を加えます。
  • [作業者] セクションで、[プライベート] を選択します。
  • [プライベートチーム] で、以前作成した作業チームを選択します。
  • [作成] を選択します。

    人間によるレビューのワークフローのページにリダイレクトされ、次のスクリーンショットのような確認メッセージが表示されます。
  • 次のセクションでヒューマンループを構成するために使用する、新しい人間によるレビューのワークフローの ARN を記録します。

ステップ 3: ドキュメントを Amazon Textract および Amazon A2I に送信する

このセクションでは、Amazon Textract API を使用してヒューマンループを開始し、人間がレビューできるようにドキュメントを送信します。

  • 次のドキュメントa2i-demos S3 バケットにアップロードします。

    次のスクリーンショットは、a2i-demos バケットにファイルをアップロードすることを示しています。
  • ファイルの詳細を表示するには、アップロードしたファイルを選択します。
  • Amazon S3 ドキュメントの場所をコピーするには、[パスをコピー] を選択します。

Amazon Textract 分析ドキュメント API オペレーションを呼び出す

この記事では、次の手順で AWS CLI を使用しています。Jupyter を使用する場合は、GitHub リポジトリの次のサンプルノートブックをご覧ください。

Amazon Textract 分析ドキュメント API を呼び出して、次のことを行います。

  • Amazon Textract からドキュメントの推論を取得します。
  • 人間によるレビューのワークフローで指定した条件に対して、Amazon Textract の出力を評価します。
  • 条件が true と評価された場合にヒューマンループを作成します (つまり、人間によるレビューを行うためにドキュメントを送信します) 。

この記事では、Amazon Textract 分析ドキュメント API 呼び出しに送信する入力ペイロードを作成します。 次のコードで、次の値を置き換えます。

  • {s3_bucket} および {s3_key} は、Amazon Textract および Amazon A2I を介して分析するドキュメントイメージ用です。
  • この呼び出しの一意の識別子を持つ {human-loop-name}。このデモでは、a2i-textract-demo-1 を使用します。
  • {flow_def_arn} は、ステップ 2 で作成した人間によるレビューのワークフロー ARN です。
    {
        "Document": {
            "S3Object": {                   
                "Bucket": "{s3_bucket}",
                "Name": "{s3_key}"
            }
        },
        "FeatureTypes": [
            "FORMS"
        ],
        "HumanLoopConfig": {
            "HumanLoopName": "{human-loop-name}",
            "FlowDefinitionArn": "{flow_def_arn}"
        }
    }
    
  • 上記のテキストを JSON ファイルとして保存します。この例では、ファイルの名前は textract-a2i-input.json で、/tmp/ に保存されます。
  • 入力ペイロードが設定されたら、AWS CLI を使用して Amazon Textract を呼び出します。次のコードを参照してください。
    aws textract analyze-document --cli-input-json file:/tmp/textract-a2i-input.json

この呼び出しへの応答には、Amazon Textract からの推論と、ヒューマンループの作成につながっているかどうかに関係なく評価されたアクティベーション条件が含まれています。ヒューマンループが作成された場合、出力には HumanLoopArn が含まれます。そのステータスは、DescribeHumanLoop API を使用して追跡できます。上記の CLI コマンドからの出力形式の次のコード:

{
    Blocks: [...], // Amazon textract inference
    DocumentMetadata: {...},
    AnalyzeDocumentModelVersion: "1.0",
    HumanLoopActivationOutput: {
        HumanLoopArn: "arn:aws:sagemaker:us-east-1:{account-id}:human-loop/{human-loop-name}", // successfully created human loop arn 
        HumanLoopActivationReasons: [
            "ConditionsEvaluation" // reason for human loop creation i.e. in this case, activation conditions were evaluated to true
        ],
        // evaludated conditions explaining individual conditions evaluation and overall evaluation to True
        HumanLoopActivationConditionsEvaluationResults: ""
    }
}

ヒューマンループが作成されていない場合、出力は次のようになり、HumanLoopArn は含まれません。

{
    Blocks: [...], // Amazon textract inference
    DocumentMetadata: {...},
    AnalyzeDocumentModelVersion: "1.0",
    HumanLoopActivationOutput: {
        // evaludated conditions explaining individual conditions evaluation and overall evaluation to False
        HumanLoopActivationConditionsEvaluationResults: ""
    }
}

分析するドキュメントごとにこのステップを繰り返します。

ステップ 4: 人間によるドキュメントのレビューを完了する

人間によるドキュメントのレビューを完了するには、次の手順を実行します。

  • 受信した E メールの URL を開きます。割り当てられているレビューのリストが表示されます。
  • レビューするドキュメントを選択します。
  • [作業を開始する] を選択します。

手順と最初に取り組むドキュメントが表示されます。ツールボックスを使用して、ズームインとズームアウト、画像の調整、ドキュメントの再配置を行うことができます。次のスクリーンショットを参照してください。

この UI は、ドキュメント処理タスク用に特別に設計されています。上のスクリーンショットの右側では、キーと値のペアに Amazon Textract の応答が自動的に事前入力されています。作業者は、このサイドバーをすばやく参照して、キーと値が正しく識別されていることを確認できます (この記事の場合)。

右側のフィールドを選択すると、対応する境界ボックスが表示され、ドキュメント上でその場所が強調表示されます。次のスクリーンショットを参照してください。

 

次のスクリーンショットでは、Amazon Textract はメールアドレスを識別していません。人間によるレビューのワークフローでは、これが重要なフィールドであると識別されました。Amazon Textract では識別しませんでしたが、作業者タスク UI は右側にメールアドレスの詳細を入力するように求めます。

  • 満足したら作業を提出します。

ステップ 5: S3 バケットで結果を確認する

ドキュメントのレビューを送信すると、人間によるレビューワークフローで指定した Amazon S3 出力場所に結果が書き戻されます。以下は、この場所の JSON ファイルに書き込まれます。

  • 人間によるレビューの応答
  • 元のリクエスト
  • Amazon Textract からの応答

この情報を使用して、機械学習の出力を追跡し、人間が確認した出力と関連付けることができます。結果を表示するには、次の手順を実行します。

  • Amazon A2I コンソールで、前に作成した人間によるレビューのワークフローを選択します。
  • 説明ページの下部までスクロールして、関連する HumanLoops を確認します。 [ヒューマンループ] セクションでは、関連するヒューマンループとそのステータスを確認できます。
  • 詳細を表示して出力ファイルにアクセスするには、ヒューマンループの名前を選択します。

出力ファイル (output.json) は次のように構成されています。

{
    // このヒューマンループ用の Textract に行われた元のリクエスト
    aiServiceRequest:
    {
        "Document": {.       // バイトは現在、ヒューマンループ構成ではサポートされていません
            "S3Object": {                   
                "Bucket": "{s3_bucket}",
                "Name": "{s3_key}",
            }
        },
        "FeatureTypes": [
            "FORMS" // キーと値のペアを抽出するための構成
        ],
        "HumanLoopConfig": {
            "HumanLoopName": "{human-loop-name}",  // ヒューマンループの名前 
            "FlowDefinitionArn": "{flow_def_arn}", // 上で作成されたヒューマンのワークフローを確認
            "DataAttributes": {
                "ContentClassifiers": [. // 公共の労働力に作業を送信するために必要
                    "FreeOfAdultContent",
                    "FreeOfPersonallyIdentifiableInformation"
                ]
            }
        }
    },
    // 上記のようなリクエストに対する、Textract からの元の応答
    aiServiceResponse: 
    {
        Blocks: [...], // Amazon textract inference
        DocumentMetadata: {...},
        AnalyzeDocumentModelVersion: "1.0",
        HumanLoopActivationOutput: {
            HumanLoopArn: "arn:aws:sagemaker:us-east-1:{account-id}:human-loop/{human-loop-name}", // successfully created human loop arn 
            HumanLoopActivationReasons: [
                "ConditionsEvaluation" // reason for human loop creation i.e. in this case, activation conditions were evaluated to true
            ],
            // 個々の条件の評価と全体的な評価を True に説明する評価された条件
            HumanLoopActivationConditionsEvaluationResults: ""
        }        
    },
    // アクティベーション条件に一致し、人間が変更した Amazon Textract の推論の全部分       
    selectedAiServiceResponse: 
    {...}
}

まとめ

この記事は、Amazon A2I ができることのほんの一部について触れたに過ぎません。これを書いている時点では、このサービスは米国東部 (バージニア北部) リージョンで利用できます。

コンテンツモデレーションや感情分析などのユースケースの詳細については、GitHub の Jupyter ノートブックページをご覧ください。Amazon A2I をカスタム機械学習ワークフローに統合する方法については、GitHub リポジトリで 60 個以上のビルド済み作業者テンプレートおよびカスタムタスクタイプでの Amazon Augmented AI の使用をご覧ください。


著者について

Anuj Gupta は、Amazon Augmented AI のプロダクトマネージャーです。顧客が機械学習をより簡単に導入できるようにする製品の提供に力を注いでいます。趣味は、ロードトリップやフォーミュラ 1 の視聴です。

 

 

Pranav Sachdeva は AWS AI のソフトウェア開発エンジニアです。高性能な分散システムを構築して現実の問題を解決することに情熱を傾けています。現在は、お客様が、待ち望まれている人間的側面を AI に付与できるよう、AWS AI エコシステムの機能の刷新と構築に取り組んでいます。

 

 

 

Talia Chopra は、機械学習と人工知能を専門とする AWS のテクニカルライターです。彼女は AWS の複数のチームと協力して、Amazon SageMaker、Amazon Augmented AI、MxNet、AutoGluon を使用しているお客様向けの技術ドキュメントとチュートリアルを作成しました。余暇には、自然の中を散歩するか、瞑想を楽しんでいます。