Vertex AI Translation 和光学字符识别 (OCR) 服务相结合,可提供名为“文档翻译”的文档处理功能。
Document Translate 可直接翻译 PDF 文件等格式化文档。与普通文本翻译相比,该功能会保留已翻译文档中的原始格式和布局,可帮助您保留很多段落内容,例如段落中断。
Document Translate 支持内嵌、从存储桶和批量翻译文档。
本页面将引导您通过互动式体验,使用 Google Distributed Cloud (GDC) 网闸隔离配置上的文档处理功能翻译文档,同时保留其格式。
支持的格式
文档翻译支持以下输入文件类型及其关联的输出文件类型:
| 输入 | MIME 类型文档 | 输出 |
|---|---|---|
application/pdf |
PDF、DOCX | |
| DOC | application/msword |
DOC、DOCX |
| DOCX | application/vnd.openxmlformats-officedocument.wordprocessingml.document |
DOCX |
| PPT | application/vnd.ms-powerpoint |
PPT、PPTX |
| PPTX | application/vnd.openxmlformats-officedocument.presentationml.presentation |
PPTX |
| XLS | application/vnd.ms-excel |
XLS、XLSX |
| XLSX | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
XLSX |
原始和扫描的 PDF 文档翻译
文档翻译支持原生和扫描的 PDF 文件,包括与从右到左的语言之间的翻译。此外,文档翻译会保留文件中的超链接、字体大小和字体颜色。
准备工作
您必须先有一个名为 dt-project 的项目,然后才能开始使用文档处理功能。项目的自定义资源必须如以下示例所示:
apiVersion: resourcemanager.gdc.goog/v1
kind: Project
metadata:
labels:
atat.config.google.com/clin-number: CLIN_NUMBER
atat.config.google.com/task-order-number: TASK_ORDER_NUMBER
name: dt-project
namespace: platform
此外,您必须同时启用 Vertex AI Translation 和 OCR 预训练 API,并拥有适当的凭证。考虑安装 Vertex AI Translation 和 OCR 客户端库,以便于进行 API 调用。如需详细了解前提条件,请参阅设置翻译项目。
翻译存储桶中的文档
如需翻译存储在存储桶中的文档,您可以使用 Vertex AI Translation API。
本部分介绍如何翻译存储桶中的文档,并将结果存储到另一个输出存储桶路径。响应还会返回一个字节流。 您可以指定 MIME 类型;如果您不指定,Document Translate 会使用输入文件的扩展名来确定 MIME 类型。
Document Translate 支持对存储在存储桶中的文档进行语言自动检测。如果您未指定源语言代码,Document Translate 会为您检测语言。检测到的语言包含在 detectedLanguageCode 字段的输出中。
请按照以下步骤翻译存储桶中的文档:
- 为对象存储区配置 gdcloud CLI。
在
dt-project命名空间中创建存储桶。使用Standard存储类别。您可以通过在
dt-project命名空间中部署Bucket资源来创建存储桶:apiVersion: object.gdc.goog/v1 kind: Bucket metadata: name: dt-bucket namespace: dt-project spec: description: bucket for document vision service storageClass: Standard bucketPolicy: lockingPolicy: defaultObjectRetentionDays: 90向 Vertex AI Translation 服务使用的服务账号(
ai-translation-system-sa和g-vai-translation-sie-sa)授予对存储桶的read和write权限。请按照以下步骤在 Management API 服务器上使用自定义资源创建角色和角色绑定:
通过在
dt-project命名空间中部署Role资源来创建角色:apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: dvs-reader-writer namespace: dt-project rules: - apiGroups: - object.gdc.goog resources: - buckets verbs: - read-object - write-object通过在
dt-project命名空间中部署RoleBinding资源来创建角色绑定:apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: dvs-reader-writer-rolebinding namespace: dt-project roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: dvs-reader-writer subjects: - kind: ServiceAccount name: ai-translation-system-sa namespace: g-vai-translation-sie - kind: ServiceAccount name: g-vai-translation-sie-sa namespace: g-vai-translation-sie
将文档上传到您创建的存储桶。如需了解详情,请参阅在项目中上传和下载存储对象。
向 Vertex AI Translation 预训练 API 发出请求:
curl
请按照以下步骤发出
curl请求:保存以下
request.json文件:cat <<- EOF > request.json { "parent": "projects/PROJECT_ID/locations/PROJECT_ID", "source_language_code": "SOURCE_LANGUAGE", "target_language_code": "TARGET_LANGUAGE", "document_input_config": { "mime_type": "application/pdf", "s3_source": { "input_uri": "s3://INPUT_FILE_PATH" } }, "document_output_config": { "mime_type": "application/pdf" }, "enable_rotation_correction": "true" } EOF替换以下内容:
PROJECT_ID:您的项目 ID。SOURCE_LANGUAGE:文档所用的语言。查看支持的语言及其各自语言代码的列表。TARGET_LANGUAGE:您要将文档翻译成的一种或多种语言。查看支持的语言及其各自语言代码的列表。INPUT_FILE_PATH:存储桶中文档文件的路径。
根据您的文档修改
mime_type值。发出请求:
curl -vv --data-binary @- -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" https://ENDPOINT:443/v3/projects/PROJECT_ID/locations/PROJECT_ID:translateDocument < request.json替换以下内容:
翻译内嵌文档
本部分介绍了如何将文档作为 API 请求的一部分以内嵌方式发送。您必须添加内嵌文档翻译的 MIME 类型。
文档翻译功能支持自动检测内嵌文本翻译的语言。如果您未指定源语言代码,文档翻译会为您检测语言。检测到的语言包含在 detectedLanguageCode 字段的输出中。
向 Vertex AI Translation 预训练 API 发出请求:
curl
请按照以下步骤发出 curl 请求:
发出请求:
echo '{"parent": "projects/PROJECT_ID/locations/PROJECT_ID","source_language_code": "SOURCE_LANGUAGE", "target_language_code": "TARGET_LANGUAGE", "document_input_config": { "mime_type": "application/pdf", "content": "'$(base64 -w 0 INPUT_FILE_PATH)'" }, "document_output_config": { "mime_type": "application/pdf" }, "enable_rotation_correction": "true"}' | curl --data-binary @- -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" https://ENDPOINT/v3/projects/PROJECT_ID/locations/PROJECT_ID:translateDocument
替换以下内容:
批量翻译文档
借助批量翻译,您可以在单个请求中将多个文件翻译成多种语言。对于每个请求,您可以发送最多 100 个文件,总内容大小不超过 1 GB 或 1 亿 Unicode 代码点,以最先达到的限额为准。您可以为每种语言指定特定的翻译模型。
如需了解详情,请参阅 batchTranslateDocument。
翻译多个文档
以下示例包含多个输入配置。每个输入配置都是一个指向存储桶中的文件的指针。
向 Vertex AI Translation 预训练 API 发出请求:
curl
请按照以下步骤发出 curl 请求:
将以下请求正文保存在名为
request.json的文件中:{ "source_language_code": "SOURCE_LANGUAGE", "target_language_codes": ["TARGET_LANGUAGE"], "input_configs": [ { "s3_source": { "input_uri": "s3://INPUT_FILE_PATH_1" } }, { "s3_source": { "input_uri": "s3://INPUT_FILE_PATH_2" } } ], "output_config": { "s3_destination": { "output_uri_prefix": "s3://OUTPUT_FILE_PREFIX" } } }替换以下内容:
发出请求:
curl -X POST \ -H "Authorization: Bearer TOKEN" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://ENDPOINT:443/v3/projects/PROJECT_ID/locations/PROJECT_ID:batchTranslateDocument"替换以下内容:
响应包含长时间运行的操作的 ID:
{
"name": "projects/PROJECT_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.translation.v3.BatchTranslateDocumentMetadata",
"state": "RUNNING"
}
}
翻译和转换原始 PDF 文件
以下示例会将原始 PDF 文件翻译并转换为 DOCX 文件。您可以指定各种文件类型的多个输入,这些输入不一定都是原始 PDF 文件。但是,如果请求中包含转换,则不能包含扫描的 PDF 文件;否则请求会被拒绝,并且不会执行任何翻译。只有原始 PDF 文件会被翻译并转换为 DOCX 文件。例如,如果您添加了 PPTX 文件,这些文件会被翻译并以 PPTX 文件的形式返回。
如果您经常翻译扫描和原始 PDF 文件的混合内容,我们建议您将它们整理到不同的存储桶中。这样,在请求批量翻译和转换时,您可以排除包含扫描的 PDF 文件的存储桶,而不必排除个别文件。
向 Vertex AI Translation 预训练 API 发出请求:
curl
请按照以下步骤发出 curl 请求:
将以下请求正文保存在名为
request.json的文件中:{ "source_language_code": "SOURCE_LANGUAGE", "target_language_codes": ["TARGET_LANGUAGE"], "input_configs": [ { "s3_source": { "input_uri": "s3://INPUT_FILE_PATH_1" } }, { "s3_source": { "input_uri": "s3://INPUT_FILE_PATH_2" } } ], "output_config": { "s3_destination": { "output_uri_prefix": "s3://OUTPUT_FILE_PREFIX" } }, "format_conversions": { "application/pdf": "application/vnd.openxmlformats-officedocument.wordprocessingml.document" } }替换以下内容:
发出请求:
curl -X POST \ -H "Authorization: Bearer TOKEN" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://ENDPOINT:443/v3/projects/PROJECT_ID/locations/PROJECT_ID:batchTranslateDocument"替换以下内容:
响应包含长时间运行的操作的 ID:
{
"name": "projects/PROJECT_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.translation.v3.BatchTranslateDocumentMetadata",
"state": "RUNNING"
}
}
使用术语库
您可以添加术语表来处理特定领域的术语。如果您指定了术语表,则必须指定源语言。以下示例使用了术语表。您最多可以指定 10 种目标语言,每种语言都有自己的术语表。
如果您为某些目标语言指定了术语表,则系统不会对未指定的语言使用任何术语表。
向 Vertex AI Translation 预训练 API 发出请求:
curl
请按照以下步骤发出 curl 请求:
将以下请求正文保存在名为
request.json的文件中:{ "source_language_code": "SOURCE_LANGUAGE", "target_language_codes": ["TARGET_LANGUAGE"], "input_configs": [ { "s3_source": { "input_uri": "s3://INPUT_FILE_PATH" } } ], "output_config": { "s3_destination": { "output_uri_prefix": "s3://OUTPUT_FILE_PREFIX" } }, "glossaries": { "TARGET_LANGUAGE": { "glossary": "projects/GLOSSARY_PROJECT_ID/glossaries/GLOSSARY_ID" } } }替换以下内容:
发出请求:
curl -X POST \ -H "Authorization: Bearer TOKEN" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://ENDPOINT:443/v3/projects/PROJECT_ID/locations/PROJECT_ID:batchTranslateDocument"替换以下内容:
响应包含长时间运行的操作的 ID:
{
"name": "projects/PROJECT_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.translation.v3.BatchTranslateDocumentMetadata",
"state": "RUNNING"
}
}