処理リクエストの送信
Google Cloud アカウントを設定し、プロセッサを作成したら、Document AI プロセッサにリクエストを送信できます。
リクエストの送信に使用されるコードは、すべてのプロセッサで同じです。各プロセッサが出力する情報に、プロセッサの機能の違いが示されます。
Document AI の v1
API バージョンを使用するか、Google Cloud コンソールで、特定のプロセッサ バージョンに処理リクエストを送信できます。プロセッサ バージョンを指定しない場合、デフォルトのバージョンが使用されます。詳細については、プロセッサ バージョンの管理をご覧ください。
オンライン処理
オンライン(同期)リクエストでは、1 つのドキュメントを送信して処理できます。Document AI はリクエストをすぐに処理し、document
を返します。
プロセッサにリクエストを送信する
次のコードサンプルは、プロセッサにリクエストを送信する方法を示しています。
REST
このサンプルは、rawDocument
オブジェクトにドキュメント コンテンツ(Base64 でエンコードされた文字列を介したバイト単位の未加工ドキュメント コンテンツ)を指定する方法を示しています。
また、Document AI から返される Document
JSON 形式と同じ inlineDocument
を指定することもできます。これにより、同じ形式をやり取りしてリクエストを連結できます(ドキュメントを分類してからそのコンテンツを抽出する場合など)。
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION: プロセッサのロケーション(例:
us
- 米国eu
- 欧州連合
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- PROCESSOR_ID: カスタム プロセッサの ID。
- skipHumanReview: 人間による確認を無効にするブール値(人間参加型プロセッサでのみサポート)。
true
- 人間による審査をスキップfalse
- 人間による確認を有効にする(デフォルト)
- MIME_TYPE†: 有効な MIME タイプ オプションのいずれか。
- IMAGE_CONTENT†: バイト ストリームとして表される、有効なインライン ドキュメント コンテンツの 1 つ。JSON 表現の場合、バイナリ画像データの base64 エンコード(ASCII 文字列)。これは次のような文字列になります。
/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==
- FIELD_MASK:
Document
出力に含めるフィールドを指定します。FieldMask
形式の完全修飾フィールド名のカンマ区切りリストです。- 例:
text,entities,pages.pageNumber
- 例:
- INDIVIDUAL_PAGES: 処理する個々のページのリスト。
† このコンテンツは、inlineDocument
オブジェクトで Base64 エンコードされたコンテンツを使用して指定することもできます。
HTTP メソッドと URL:
POST https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:process
リクエストの本文(JSON):
{ "skipHumanReview": skipHumanReview, "rawDocument": { "mimeType": "MIME_TYPE", "content": "IMAGE_CONTENT" }, "fieldMask": "FIELD_MASK", "processOptions": { "individualPageSelector" { "pages": [INDIVIDUAL_PAGES] } } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:process"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:process" | Select-Object -Expand Content
リクエストが成功すると、サーバーは 200 OK
HTTP ステータス コードと JSON 形式のレスポンスを返します。レスポンスの本文には Document
のインスタンスが含まれます。
プロセッサ バージョンにリクエストを送信する
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION: プロセッサのロケーション(例:
us
- 米国eu
- 欧州連合
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- PROCESSOR_ID: カスタム プロセッサの ID。
- PROCESSOR_VERSION: プロセッサのバージョン ID。詳細については、プロセッサ バージョンを選択するをご覧ください。例:
pretrained-TYPE-vX.X-YYYY-MM-DD
stable
rc
- skipHumanReview: 人間による確認を無効にするブール値(人間参加型プロセッサでのみサポート)。
true
- 人間による審査をスキップfalse
- 人間による確認を有効にする(デフォルト)
- MIME_TYPE†: 有効な MIME タイプ オプションのいずれか。
- IMAGE_CONTENT†: バイト ストリームとして表される、有効なインライン ドキュメント コンテンツの 1 つ。JSON 表現の場合、バイナリ画像データの base64 エンコード(ASCII 文字列)。これは次のような文字列になります。
/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==
- FIELD_MASK:
Document
出力に含めるフィールドを指定します。FieldMask
形式の完全修飾フィールド名のカンマ区切りリストです。- 例:
text,entities,pages.pageNumber
- 例:
† このコンテンツは、inlineDocument
オブジェクトで Base64 エンコードされたコンテンツを使用して指定することもできます。
HTTP メソッドと URL:
POST https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION:process
リクエストの本文(JSON):
{ "skipHumanReview": skipHumanReview, "rawDocument": { "mimeType": "MIME_TYPE", "content": "IMAGE_CONTENT" }, "fieldMask": "FIELD_MASK" }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION:process"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION:process" | Select-Object -Expand Content
リクエストが成功すると、サーバーは 200 OK
HTTP ステータス コードと JSON 形式のレスポンスを返します。レスポンスの本文には Document
のインスタンスが含まれます。
C#
詳細については、Document AI C# API のリファレンス ドキュメントをご覧ください。
Document AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
詳細については、Document AI Java API のリファレンス ドキュメントをご覧ください。
Document AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
詳細については、Document AI Node.js API のリファレンス ドキュメントをご覧ください。
Document AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
詳細については、Document AI Python API のリファレンス ドキュメントをご覧ください。
Document AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
バッチ処理
バッチ(非同期)リクエストを使用すると、1 つのリクエストで複数のドキュメントを送信できます。Document AI は operation
を返します。これを使用して、リクエストのステータスをポーリングできます。このオペレーションが完了すると、処理された結果が保存されている Cloud Storage バケットを参照する BatchProcessMetadata
が含まれます。
アクセスする入力ファイルが別のプロジェクトのバケットにある場合は、そのバケットへのアクセス権を付与してからファイルにアクセスする必要があります。ファイル アクセスを設定するをご覧ください。
プロセッサにリクエストを送信する
次のコードサンプルは、バッチ処理リクエストをプロセッサに送信する方法を示しています。
REST
このサンプルでは、大規模なドキュメントの非同期処理のために POST
リクエストを
batchProcess
メソッドに送信する方法を示します。この例では、Google Cloud CLI を使用するプロジェクト用に設定されたサービス アカウントのアクセス トークンを使用します。Google Cloud CLI のインストール、サービス アカウントでのプロジェクトの設定、アクセス トークンの取得を行う手順については、始める前にをご覧ください。
batchProcess
リクエストは長時間実行オペレーションを開始し、結果を Cloud Storage バケットに保存します。このサンプルでは、この長時間実行オペレーションの開始後にステータスを取得する方法も示しています。
プロセス リクエストを送信する
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION: プロセッサのロケーション(例:
us
- 米国eu
- 欧州連合
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- PROCESSOR_ID: カスタム プロセッサの ID。
- INPUT_BUCKET_FOLDER†: 入力ファイルを読み取る Cloud Storage バケット/ディレクトリ。次の形式で指定します。
gs://bucket/directory/
- MIME_TYPE: 有効な MIME タイプ オプションのいずれか。
- OUTPUT_BUCKET_FOLDER: 次の形式で出力ファイルを保存する Cloud Storage バケット/ディレクトリ。
gs://bucket/directory/
- skipHumanReview: 人間による確認を無効にするブール値(人間参加型プロセッサでのみサポート)。
true
- 人間による審査をスキップfalse
- 人間による確認を有効にする(デフォルト)
- FIELD_MASK:
Document
出力に含めるフィールドを指定します。FieldMask
形式の完全修飾フィールド名のカンマ区切りリストです。- 例:
text,entities,pages.pageNumber
- 例:
† gcsPrefix
を使用してすべてのファイルを GCS フォルダに含める代わりに、documents
を使用して各ファイルを個別にリストすることもできます。
"inputDocuments": { "gcsDocuments": { "documents": [ { "gcsUri": "gs://BUCKET/PATH/TO/DOCUMENT1.ext", "mimeType": "MIME_TYPE" }, { "gcsUri": "gs://BUCKET/PATH/TO/DOCUMENT2.ext", "mimeType": "MIME_TYPE" } ] } }
HTTP メソッドと URL:
POST https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:batchProcess
リクエストの本文(JSON):
{ "inputDocuments": { "gcsPrefix": { "gcsUriPrefix": "INPUT_BUCKET_FOLDER" } }, "documentOutputConfig": { "gcsOutputConfig": { "gcsUri": "OUTPUT_BUCKET_FOLDER", "fieldMask": "FIELD_MASK" } }, "skipHumanReview": BOOLEAN }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:batchProcess"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:batchProcess" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID" }
プロセッサ バージョンにリクエストを送信する
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION: プロセッサのロケーション(例:
us
- 米国eu
- 欧州連合
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- PROCESSOR_ID: カスタム プロセッサの ID。
- PROCESSOR_VERSION: プロセッサのバージョン ID。詳細については、プロセッサ バージョンを選択するをご覧ください。例:
pretrained-TYPE-vX.X-YYYY-MM-DD
stable
rc
- INPUT_BUCKET_FOLDER†: 入力ファイルを読み取る Cloud Storage バケット/ディレクトリ。次の形式で指定します。
gs://bucket/directory/
- MIME_TYPE: 有効な MIME タイプ オプションのいずれか。
- OUTPUT_BUCKET_FOLDER: 次の形式で出力ファイルを保存する Cloud Storage バケット/ディレクトリ。
gs://bucket/directory/
- skipHumanReview: 人間による確認を無効にするブール値(人間参加型プロセッサでのみサポート)。
true
- 人間による審査をスキップfalse
- 人間による確認を有効にする(デフォルト)
- FIELD_MASK:
Document
出力に含めるフィールドを指定します。FieldMask
形式の完全修飾フィールド名のカンマ区切りリストです。- 例:
text,entities,pages.pageNumber
- 例:
† gcsPrefix
を使用してすべてのファイルを GCS フォルダに含める代わりに、documents
を使用して各ファイルを個別にリストすることもできます。
"inputDocuments": { "gcsDocuments": { "documents": [ { "gcsUri": "gs://BUCKET/PATH/TO/DOCUMENT1.ext", "mimeType": "MIME_TYPE" }, { "gcsUri": "gs://BUCKET/PATH/TO/DOCUMENT2.ext", "mimeType": "MIME_TYPE" } ] } }
HTTP メソッドと URL:
POST https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION:batchProcess
リクエストの本文(JSON):
{ "inputDocuments": { "gcsPrefix": { "gcsUriPrefix": "INPUT_BUCKET_FOLDER" } }, "documentOutputConfig": { "gcsOutputConfig": { "gcsUri": "OUTPUT_BUCKET_FOLDER", "fieldMask": "FIELD_MASK" } }, "skipHumanReview": BOOLEAN }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION:batchProcess"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION:batchProcess" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID" }
リクエストが成功すると、Document AI API はオペレーションの名前を返します。
結果を取得する
リクエストの結果を取得するには、GET
リクエストを operations
リソースに送信する必要があります。このようなリクエストを送信する方法は次のとおりです。詳細については、長時間実行オペレーションのドキュメントをご覧ください。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- LOCATION: LRO を実行しているロケーション。次に例を示します。
us
- 米国eu
- 欧州連合
- OPERATION_ID: オペレーションの ID。この ID は、オペレーションの名前の最後の要素です。例:
- オペレーション名:
projects/PROJECT_ID/locations/LOCATION/operations/bc4e1d412863e626
- オペレーション ID:
bc4e1d412863e626
- オペレーション名:
HTTP メソッドと URL:
GET https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"
PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.documentai.v1.BatchProcessMetadata", "state": "SUCCEEDED", "stateMessage": "Processed 1 document(s) successfully", "createTime": "TIMESTAMP", "updateTime": "TIMESTAMP", "individualProcessStatuses": [ { "inputGcsSource": "INPUT_BUCKET_FOLDER/DOCUMENT1.ext", "status": {}, "outputGcsDestination": "OUTPUT_BUCKET_FOLDER/OPERATION_ID/0", "humanReviewStatus": { "state": "ERROR", "stateMessage": "Sharded document protos are not supported for human review." } } ] }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.documentai.v1.BatchProcessResponse" } }
レスポンスの本文には、オペレーションのステータスに関する情報を含む Operation
のインスタンスが含まれます。オペレーションが正常に完了すると、metadata
フィールドに、処理されたドキュメントに関する情報が含まれる BatchProcessMetadata
のインスタンスが入力されます。
C#
詳細については、Document AI C# API のリファレンス ドキュメントをご覧ください。
Document AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
詳細については、Document AI Go API のリファレンス ドキュメントをご覧ください。
Document AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
詳細については、Document AI Java API のリファレンス ドキュメントをご覧ください。
Document AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
詳細については、Document AI Node.js API のリファレンス ドキュメントをご覧ください。
Document AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
詳細については、Document AI Python API のリファレンス ドキュメントをご覧ください。
Document AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
詳細については、Document AI Go API のリファレンス ドキュメントをご覧ください。
Document AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Ruby
詳細については、Document AI Ruby API のリファレンス ドキュメントをご覧ください。
Document AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python SDK を使用してドキュメント バッチを作成する
バッチ処理では、リクエストごとに最大 1,000 個のファイルを処理できます。処理するドキュメントがさらにある場合は、ドキュメントを複数のバッチに分割して処理する必要があります。
Document AI Toolbox は、Document AI のユーティリティ関数を提供する Python 用 SDK です。関数の 1 つは、Cloud Storage フォルダから処理するドキュメントのバッチを作成することです。
Document AI Toolbox がポスト処理を支援する方法について詳しくは、処理レスポンスの処理をご覧ください。
コードサンプル
次のコードサンプルは、Document AI Toolbox の使用方法を示しています。