Workflows でドキュメント処理パイプラインを構築する
Document AI を使用して、ドキュメントを処理するステップが複数含まれるワークフローを構築する場合は、サーバーレス オーケストレーションを使用してワークフローを管理することをおすすめします。
Workflows は、一連のタスクを定義した順序でまとめてリンクできます。さらに、インフラストラクチャの管理は不要であり、需要に応じてシームレスにスケールします(ゼロへのスケールダウンも可能)。料金モデルは従量課金制で、料金は実行時間に対してのみ発生します。
Workflows には、Document AI API のコネクタが組み込まれています。コネクタでは、構成ファイルを使用して手順を定義する以外に、追加のコードは必要ありません。コネクタはリクエストの形式設定を処理し、API の詳細を非表示にします。コネクタには、認証、再試行と長時間実行オペレーションを処理する組み込みの動作もあります。
詳細については、コネクタを理解するをご覧ください。
このガイドでは、バッチ処理で Invoice パーサー プロセッサを使用して、一連のサンプル請求書を処理します。
このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、「ガイドを表示」をクリックしてください。
始める前に
- Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Document AI, Cloud Storage, Workflows APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Document AI, Cloud Storage, Workflows APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
必要なロール
カスタム分類子の作成に必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
Document AI 管理者 (
roles/documentai.admin) -
プロジェクト IAM 管理者(
roles/resourcemanager.projectIamAdmin) -
サービス アカウント ユーザー(
roles/iam.serviceAccountUser) -
ストレージ管理者(
roles/storage.admin) -
ワークフロー編集者(
roles/workflows.editor) -
新しいサービス アカウントを作成します。
サービス アカウントの作成 (
roles/iam.serviceAccountCreator)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
Invoice パーサーを作成する
Google Cloud コンソールを使用して、新しい Invoice パーサーを作成します。詳細については、プロセッサの作成と管理のページをご覧ください。
Google Cloud コンソールのナビゲーション メニューで [Document AI] をクリックし、[プロセッサ ギャラリー] を選択します。
[プロセッサ ギャラリー] で、[Invoice パーサー] を
検索 して [作成] を選択します。
[プロセッサ名] を入力します(例:
workflows-invoice-processor)。プロセッサをホストするリージョン(Document AI API の
location)を選択します。[作成] をクリックします。[プロセッサの詳細] タブが表示されます。
プロセッサ ID をコピーします。これは、後でコード内で使用します。
Cloud Storage で出力バケットを構成する
バッチ(非同期)処理を使用する場合は、入力ファイルと出力ファイルを Cloud Storage に保存する必要があります。次のバケットには、このガイドの入力として使用するサンプル ファイルが含まれています。
gs://cloud-samples-data/documentai/workflows
プロジェクトに出力ファイルを保存するようにバケットを構成します。
Cloud Storage ドキュメントのバケットの作成ガイドに沿ってバケットを作成するか、既存のバケットを使用します。
バケットにフォルダを作成します(
docai-workflows-outputなど)。
ワークフローの作成
Google Cloud コンソールで Workflows ダッシュボードを開きます。
[
作成 ] をクリックして、最初のワークフローを作成します。[ワークフローの作成] ページが表示されます。
ワークフローの名前を変更 してdocai-workflows-quickstartにします。説明を追加し、このプロジェクトにサービス アカウントがある場合はそれを選択します。
- サービス アカウントがない場合は、[新しいサービス アカウントを作成] を選択します。
- サービス アカウントに名前を付け、[作成して続行] を選択します。
- 次のロールを付与します。
Document AI API UserWorkflows InvokerLogs WriterService Usage Consumer
- サービス アカウントに名前を付け、[作成して続行] を選択します。
- サービス アカウントがない場合は、[新しいサービス アカウントを作成] を選択します。
[ワークフローの作成] ページで、[
次へ ] をクリックします。
ワークフローの定義
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}
[デプロイ] を選択します。
ワークフローのテスト
ワークフローがデプロイされたので、[ワークフローの詳細] ページが表示されます。
ページの上部にある [
実行 ] をクリックして、[ワークフローを実行] ページに移動します。このページでは、コンソールでワークフローをテストできます。次の入力 JSON のプレースホルダ変数を置き換えます。
- OUTPUT_BUCKET_PATH: 先ほど作成した出力バケットとフォルダのフルパス。
- PROCESSOR_ID: 先ほど作成したプロセッサのプロセッサ ID。
- LOCATION: 先ほど作成したプロセッサのリージョン。
{ "inputBucket": "gs://cloud-samples-data/documentai/workflows", "outputBucket": "OUTPUT_BUCKET_PATH", "processorId": "PROCESSOR_ID", "location": "LOCATION" }JSON をコピーして
入力テキスト ボックス に貼り付けます。ワークフローの下部にある [
実行 ] をクリックして入力内容をテストし、プロセスが完了するまで待ちます。ワークフローが完了すると、出力 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" } }出力ストレージ バケットを開くと、オペレーション ID 名が付いたフォルダに、処理された各請求書の出力が表示されます。
このフォルダ内にはサブフォルダがあり、
DocumentJSON ファイルを含む入力バッチから処理されたドキュメントごとにサブフォルダが作成されます。各 JSON ファイルを検査するか、ユースケースに関連するフィールドを使用するためのコードを記述できます。詳細については、レスポンスの処理ガイドをご覧ください。
ワークフローで追加のステップをリンクして、抽出されたエンティティを分析用のデータベースに挿入するなど、出力をさらに処理できるようになりました。
ワークフローをトリガーする方法の詳細については、ワークフローのドキュメントをご覧ください。
クリーンアップ
このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、次の手順を実施します。
不要な Google Cloud 料金が発生しないようにするには、Google Cloud console を使用して、不要なプロセッサ、バケット、ワークフロー、プロジェクトを削除します。
次のステップ
- ワークフローの詳細
- Document AI Workflows コネクタの詳細を確認する
- 現在利用可能なプロセッサのリストと説明をご覧ください。
- 処理レスポンスを処理する方法を学習する。