尝试翻译有格式的文档

Vertex AI Translation 和光学字符识别 (OCR) 服务相结合,可提供名为“文档翻译”的文档处理功能。

Document Translate 可直接翻译 PDF 文件等格式化文档。与普通文本翻译相比,该功能会保留已翻译文档中的原始格式和布局,可帮助您保留很多段落内容,例如段落中断。

Document Translate 支持内嵌、从存储桶和批量翻译文档。

本页面将引导您通过互动式体验,使用 Google Distributed Cloud (GDC) 网闸隔离配置上的文档处理功能翻译文档,同时保留其格式。

支持的格式

文档翻译支持以下输入文件类型及其关联的输出文件类型:

输入 MIME 类型文档 输出
PDF 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 字段的输出中。

请按照以下步骤翻译存储桶中的文档:

  1. 为对象存储区配置 gdcloud CLI。
  2. 在 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
    
  3. 向 Vertex AI Translation 服务使用的服务账号(ai-translation-system-sa 和 g-vai-translation-sie-sa)授予对存储桶的 read 和 write 权限。

    请按照以下步骤在 Management API 服务器上使用自定义资源创建角色和角色绑定:

    1. 通过在 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
      
    2. 通过在 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
      
  4. 将文档上传到您创建的存储桶。如需了解详情,请参阅在项目中上传和下载存储对象。

  5. 向 Vertex AI Translation 预训练 API 发出请求:

    curl

    请按照以下步骤发出 curl 请求:

    1. 保存以下 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 值。

    2. 获取身份验证令牌。

    3. 发出请求:

      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 请求:

  1. 获取身份验证令牌。

  2. 发出请求:

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

替换以下内容:

  • PROJECT_ID:您的项目 ID。
  • SOURCE_LANGUAGE:文档所用的语言。查看支持的语言及其各自语言代码的列表。
  • TARGET_LANGUAGE:您要将文档翻译成的一种或多种语言。查看支持的语言及其各自语言代码的列表。
  • INPUT_FILE_PATH:文档文件的本地路径。
  • TOKEN:您获取的身份验证令牌。
  • ENDPOINT:您为组织使用的 Vertex AI Translation 端点。如需了解详情,请查看服务状态和端点

批量翻译文档

借助批量翻译,您可以在单个请求中将多个文件翻译成多种语言。对于每个请求,您可以发送最多 100 个文件,总内容大小不超过 1 GB 或 1 亿 Unicode 代码点,以最先达到的限额为准。您可以为每种语言指定特定的翻译模型。

如需了解详情,请参阅 batchTranslateDocument。

翻译多个文档

以下示例包含多个输入配置。每个输入配置都是一个指向存储桶中的文件的指针。

向 Vertex AI Translation 预训练 API 发出请求:

curl

请按照以下步骤发出 curl 请求:

  1. 将以下请求正文保存在名为 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"
        }
      }
    }
    

    替换以下内容:

    • SOURCE_LANGUAGE:输入文档的语言代码。查看支持的语言及其各自语言代码的列表。
    • TARGET_LANGUAGE:要将输入文档翻译成的一种或多种目标语言。查看支持的语言及其各自语言代码的列表。
    • INPUT_FILE_PATH_1 和 INPUT_FILE_PATH_2:输入文档的存储桶位置和文件名。
    • OUTPUT_FILE_PREFIX:存储所有输出文档的存储桶位置。
  2. 获取身份验证令牌。

  3. 发出请求:

    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 请求:

  1. 将以下请求正文保存在名为 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"
      }
    }
    

    替换以下内容:

    • SOURCE_LANGUAGE:输入文档的语言代码。查看支持的语言及其各自语言代码的列表。
    • TARGET_LANGUAGE:要将输入文档翻译成的一种或多种目标语言。查看支持的语言及其各自语言代码的列表。
    • INPUT_FILE_PATH_1 和 INPUT_FILE_PATH_2:输入文档的存储桶位置和文件名。
    • OUTPUT_FILE_PREFIX:存储所有输出文档的存储桶位置。
  2. 获取身份验证令牌。

  3. 发出请求:

    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 请求:

  1. 将以下请求正文保存在名为 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"
        }
      }
    }
    

    替换以下内容:

    • SOURCE_LANGUAGE:输入文档的语言代码。查看支持的语言及其各自语言代码的列表。
    • TARGET_LANGUAGE:要将输入文档翻译成的一种或多种目标语言。查看支持的语言及其各自语言代码的列表。
    • INPUT_FILE_PATH:一个或多个输入文档的存储桶位置和文件名。
    • OUTPUT_FILE_PREFIX:存储所有输出文档的存储桶位置。
    • GLOSSARY_PROJECT_ID:术语表所在项目的 ID。
    • GLOSSARY_ID:术语表的 ID。
  2. 获取身份验证令牌。

  3. 发出请求:

    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"
}
}