发送处理请求
设置 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:处理器版本标识符。如需了解详情,请参阅选择处理器版本。例如:
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 存储分区。
如果您要访问的输入文件位于其他项目的存储分区中,则必须先提供对该存储分区的访问权限,然后才能访问这些文件。请参阅设置文件访问权限。
向处理器发送请求
以下代码示例展示了如何向处理器发送批处理请求。
REST
此示例展示了如何向
batchProcess
方法发送 POST
请求,以进行大型文档异步处理。
该示例使用通过 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
- 示例:
† 您也可以使用 documents
单独列出每个文件,而不是使用 gcsPrefix
包含 GCS 文件夹中的所有文件:
"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:处理器版本标识符。如需了解详情,请参阅选择处理器版本。例如:
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
- 示例:
† 您也可以使用 documents
单独列出每个文件,而不是使用 gcsPrefix
包含 GCS 文件夹中的所有文件:
"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 将返回操作的名称。
获取结果
如需获取请求的结果,您必须向 operations
资源发送 GET
请求。下面演示了如何发送此类请求。
如需了解详情,请参阅长时间运行的操作文档。
在使用任何请求数据之前,请先进行以下替换:
- 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。