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 会为您检测语言。检测到的语言包含在 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
) 授予存储桶的read
和write
权限。您可以按照以下步骤使用自定义资源创建角色和角色绑定:
通过在
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: ai-translation-system
将文档上传到您创建的存储桶。如需了解详情,请参阅在项目中上传和下载存储对象。
向 Vertex AI Translation 预训练 API 发出请求:
curl
如需提交
curl
请求,请按以下步骤操作:保存以下
request.json
文件:cat <<- EOF > request.json { "parent": "projects/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:translateDocument < request.json
替换以下内容:
翻译内嵌文档
本部分介绍了如何通过 API 请求内嵌发送文档。 您必须添加内嵌文档翻译的 MIME 类型。
文档翻译支持内嵌文本翻译的语言自动检测功能。如果您不指定源语言代码,Document Translate 会为您检测语言。检测到的语言包含在 detectedLanguageCode
字段的输出中。
向 Vertex AI Translation 预训练 API 发出请求:
curl
如需提交curl
请求,请按以下步骤操作:
发出请求:
echo '{"parent": "projects/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: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: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 文件的混合文件,建议您将它们整理到单独的存储分区中。这样,在请求批量翻译和转换时,您可以排除包含扫描的 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: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" }, ... } }
替换以下内容:
发出请求:
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:batchTranslateDocument"
替换以下内容:
响应包含长时间运行的操作的 ID:
{
"name": "projects/PROJECT_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.translation.v3.BatchTranslateDocumentMetadata",
"state": "RUNNING"
}
}