傳送處理要求
設定Google Cloud 帳戶並建立處理器後,即可向 Document AI 處理器提出要求。
所有處理器都使用相同的程式碼傳送要求。您會發現每個處理器輸出的資訊中,處理器運作方式有所差異。
使用 Document AI 的 v1
API 版本或 Google Cloud 控制台時,您可以將處理要求傳送至該特定處理器版本。如果您未指定處理器版本,系統會使用預設版本。詳情請參閱「管理處理器版本」。
線上處理
線上 (同步) 要求可讓您傳送單一文件進行處理。
Document AI 會立即處理要求,並傳回 document
。
向處理器傳送要求
下列程式碼範例說明如何將要求傳送至處理器。
REST
這個範例說明如何在 rawDocument
物件中提供文件內容 (以位元組為單位的原始文件內容,透過 Base64 編碼字串)。
或者,您也可以指定 inlineDocument
,這與 Document AI 傳回的 Document
JSON 格式相同。這樣一來,您就能來回傳遞相同格式,串連要求 (例如分類文件,然後擷取內容)。
使用任何要求資料之前,請先替換以下項目:
- LOCATION:處理器的位置,例如:
us
- 美國eu
- 歐盟
- PROJECT_ID:您的 Google Cloud 專案 ID。
- PROCESSOR_ID:自訂處理器的 ID。
- skipHumanReview:用來停用人工審查的布林值 (僅限人機迴圈處理器支援)。
true
- 略過人工審查false
- 啟用人工審查 (預設)
- MIME_TYPE†:其中一個有效的 MIME 類型選項。
- IMAGE_CONTENT†:其中一個有效
內嵌文件內容,表示為
位元組串流。如果是 JSON 表示法,則為二進位圖片資料的 base64 編碼 (ASCII 字串)。這個字串應類似下列字串:
/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==
- FIELD_MASK:指定要納入
Document
輸出內容的欄位。這是以半形逗號分隔的FieldMask
格式完整欄位名稱清單。- 範例:
text,entities,pages.pageNumber
- 範例:
- INDIVIDUAL_PAGES:要處理的個別頁面清單。
† 您也可以在 inlineDocument
物件中使用 Base64 編碼的內容指定這項內容。
HTTP 方法和網址:
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†:其中一個有效
內嵌文件內容,表示為
位元組串流。如果是 JSON 表示法,則為二進位圖片資料的 base64 編碼 (ASCII 字串)。這個字串應類似下列字串:
/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==
- FIELD_MASK:指定要納入
Document
輸出內容的欄位。這是以半形逗號分隔的FieldMask
格式完整欄位名稱清單。- 範例:
text,entities,pages.pageNumber
- 範例:
† 您也可以在 inlineDocument
物件中使用 Base64 編碼的內容指定這項內容。
HTTP 方法和網址:
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 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
批次處理
批次 (非同步) 要求可讓您在單一要求中傳送多份文件。Document AI 會傳送 operation
,您可以輪詢要求狀態。這項作業完成後,會包含 BatchProcessMetadata
,指向儲存處理結果的 Cloud Storage bucket。
如要存取的輸入檔案位於其他專案的值區中,您必須先提供該值區的存取權,才能存取檔案。請參閱設定檔案存取權。
向處理器傳送要求
下列程式碼範例說明如何將批次處理要求傳送至處理器。
REST
這個範例顯示如何將 POST
要求傳送至
batchProcess
方法,以非同步處理大型文件。範例中使用的存取憑證,屬於透過 Google Cloud CLI 建立的專案服務帳戶。如需安裝 Google Cloud CLI、使用服務帳戶建立專案,以及取得存取憑證的操作說明,請參閱「事前準備」。
batchProcess
要求會啟動長時間執行的作業,並將結果儲存在 Cloud Storage bucket 中。這個範例也說明如何取得這項長時間執行的作業在啟動後的狀態。
傳送處理要求
使用任何要求資料之前,請先替換以下項目:
- LOCATION:處理器的位置,例如:
us
- 美國eu
- 歐盟
- PROJECT_ID:您的 Google Cloud 專案 ID。
- PROCESSOR_ID:自訂處理器的 ID。
- INPUT_BUCKET_FOLDER†:用來讀取輸入檔案的 Cloud Storage bucket/目錄,格式如下:
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 方法和網址:
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 bucket/目錄,格式如下:
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 方法和網址:
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 方法和網址:
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 是 Python 適用的 SDK,提供 Document AI 的公用程式函式。其中一項功能是從 Cloud Storage 資料夾建立批次文件,以供處理。
如要進一步瞭解 Document AI Toolbox 如何協助後續處理,請參閱「處理回應」。
程式碼範例
下列程式碼範例說明如何使用 Document AI Toolbox。