Workflows でドキュメント処理パイプラインを構築する

Document AI を使用して、ドキュメントを処理するステップが複数含まれるワークフローを構築する場合は、サーバーレス オーケストレーションを使用してワークフローを管理することをおすすめします。

Workflows は、一連のタスクを定義した順序でまとめてリンクできます。さらに、インフラストラクチャの管理は不要であり、需要に応じてシームレスにスケールします(ゼロへのスケールダウンも可能)。料金モデルは従量課金制で、料金は実行時間に対してのみ発生します。

Workflows には、Document AI API 用のコネクタが組み込まれています。コネクタでは、構成ファイルを使用して手順を定義する以外に追加のコードは必要ありません。コネクタはリクエストのフォーマットを処理し、API の詳細を非表示にします。コネクタには、認証、再試行と長時間実行オペレーションを処理する組み込みの動作もあります。

詳細については、コネクタについてをご覧ください。

このガイドでは、バッチ処理Invoice パーサー プロセッサを使用して、一連のサンプル請求書を処理します。


このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、[ガイドを表示] をクリックしてください。

ガイドを表示


始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Document AI, Cloud Storage, Workflows APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Document AI, Cloud Storage, Workflows APIs.

    Enable the APIs

Invoice パーサーを作成する

Google Cloud コンソールを使用して、新しい Invoice パーサーを作成します。詳細については、プロセッサの作成と管理のページをご覧ください。

  1. Google Cloud コンソールのナビゲーション メニューで [Document AI] をクリックし、[プロセッサ ギャラリー] を選択します。

    プロセッサ ギャラリー

  2. [プロセッサ ギャラリー] で、[Invoice パーサー] を検索して [作成] を選択します。

    請求書プロセッサを作成する

  3. [プロセッサ名] を入力します(例: workflows-invoice-processor)。

  4. プロセッサをホストするリージョン(Document AI API の location)を選択します。

  5. [作成] をクリックします。[プロセッサの詳細] タブが表示されます。

  6. プロセッサ ID をコピーします。これは、後でコードを作成する際に使用します。

    プロセッサ ID

Cloud Storage で出力バケットを構成する

バッチ(非同期)処理を使用する場合は、入力ファイルと出力ファイルを Cloud Storage に保存する必要があります。次のバケットには、このガイドの入力として使用するサンプル ファイルが含まれています。

gs://cloud-samples-data/documentai/workflows

出力ファイルをプロジェクトに保存するようにバケットを構成します。

  1. Cloud Storage ドキュメントのバケットの作成ガイドに沿ってバケットを作成するか、既存のバケットを使用します。

  2. バケットにフォルダを作成します(例: docai-workflows-output)。

ワークフローの作成

  1. Google Cloud コンソールで ワークフロー ダッシュボードを開きます。

    [ワークフロー] ダッシュボードに移動

  2. [作成] をクリックして、最初のワークフローを作成します。[ワークフローの作成] ページが表示されます。

    ワークフローの作成

  3. ワークフローの名前を変更して docai-workflows-quickstart にします。

  4. 説明を追加し、このプロジェクトにサービス アカウントがある場合はそれを選択します。

    1. サービス アカウントがない場合は、[新しいサービス アカウントを作成] を選択します。
      • サービス アカウントに名前を付け、[作成して続行] を選択します。CreateServiceAccount
      • 次のロールを付与します。
      • Document AI API User
      • Workflows Invoker
      • Logs Writer
      • Service Usage Consumer
      • ServiceAccountRoles
  5. [ワークフローの作成] ページで、[次へ] をクリックします。

ワークフローの定義

  1. Workflows エディタでデフォルトの YAML を消去し、次のコードを貼り付けます。

    main:
      params: [input]
      steps:
        - start:
            call: sys.log
            args:
              text: ${input}
        - vars:
            assign:
              - input_gcs_bucket: ${input.inputBucket}
              - output_gcs_bucket: ${input.outputBucket}
              - processor_id: ${input.processorId}
              - location: ${input.location}
              - project_id: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
        - batch_process:
            call: googleapis.documentai.v1.projects.locations.processors.batchProcess
            args:
              name: ${"projects/" + project_id + "/locations/" + location + "/processors/" + processor_id}
              location: ${location}
              body:
                inputDocuments:
                  gcsPrefix:
                    gcsUriPrefix: ${input_gcs_bucket}
                documentOutputConfig:
                  gcsOutputConfig:
                    gcsUri: ${output_gcs_bucket}
                skipHumanReview: true
            result: batch_process_resp
        - return:
            return: ${batch_process_resp}
    
WorkflowsEditor
  1. [デプロイ] を選択します。

ワークフローのテスト

ワークフローがデプロイされたので、[ワークフローの詳細] ページが表示されます。

  1. ページの上部にある [実行] をクリックして、[ワークフローを実行] ページに移動します。このページでは、コンソールでワークフローをテストできます。

  2. 次の入力 JSON のプレースホルダ変数を置き換えます。

    • OUTPUT_BUCKET_PATH: 先ほど作成した出力バケットとフォルダのフルパス。
    • PROCESSOR_ID: 先ほど作成したプロセッサのプロセッサ ID。
    • LOCATION: 先ほど作成したプロセッサのリージョン。
    {
      "inputBucket": "gs://cloud-samples-data/documentai/workflows",
      "outputBucket": "OUTPUT_BUCKET_PATH",
      "processorId": "PROCESSOR_ID",
      "location": "LOCATION"
    }
    
  3. JSON をコピーして入力テキスト ボックスに貼り付けます。

  4. ワークフローの下部にある [実行] をクリックして入力内容をテストし、プロセスが完了するまで待ちます。

  5. ワークフローが完了すると、出力 JSON は次のようになります。

    {
      "done": true,
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.documentai.v1.BatchProcessMetadata",
        "createTime": "2023-02-24T18:31:18.521764Z",
        "individualProcessStatuses": [
          {
            "humanReviewStatus": {
              "state": "SKIPPED"
            },
            "inputGcsSource": "gs://cloud-samples-data/documentai/workflows/baking_technologies_invoice.pdf",
            "outputGcsDestination": "OUTPUT_BUCKET_PATH/11119195367705871803/0",
            "status": {}
          },
          {
            "humanReviewStatus": {
              "state": "SKIPPED"
            },
            "inputGcsSource": "gs://cloud-samples-data/documentai/workflows/generic_invoice.pdf",
            "outputGcsDestination": "OUTPUT_BUCKET_PATH/11119195367705871803/1",
            "status": {}
          },
          {
            "humanReviewStatus": {
              "state": "SKIPPED"
            },
            "inputGcsSource": "gs://cloud-samples-data/documentai/workflows/google_invoice.pdf",
            "outputGcsDestination": "OUTPUT_BUCKET_PATH/11119195367705871803/2",
            "status": {}
          }
        ],
        "state": "SUCCEEDED",
        "updateTime": "2023-02-24T18:31:52.543163Z"
      },
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/11119195367705871803",
      "response": {
        "@type": "type.googleapis.com/google.cloud.documentai.v1.BatchProcessResponse"
      }
    }
    
  6. 出力ストレージ バケットを開くと、オペレーション ID 名が付いたフォルダに、処理された各請求書の出力が表示されます。BatchGCSOutput

  7. このフォルダ内にはサブフォルダがあり、Document JSON ファイルを含む入力バッチから処理されたドキュメントごとにサブフォルダが作成されます。

  8. 各 JSON ファイルを検査するか、ユースケースに関連するフィールドを使用するコードを記述します。詳細については、レスポンスの処理ガイドをご覧ください。

  9. ワークフローで追加のステップをリンクして、抽出されたエンティティを分析用のデータベースに挿入するなど、出力をさらに処理できるようになりました。

  10. ワークフローをトリガーする方法の詳細については、ワークフローのドキュメントをご覧ください。

クリーンアップ

このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、次の手順を行います。

不要な Google Cloud 料金が発生しないようにするために、Google Cloud コンソールを使用して不要なプロセッサ、バケット、ワークフロー、プロジェクトを削除します。

次のステップ