尝试翻译有格式的文档

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 会为您检测语言。检测到的语言包含在 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) 授予存储桶的 readwrite 权限。

    您可以按照以下步骤使用自定义资源创建角色和角色绑定:

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

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

    curl

    如需提交curl请求,请按以下步骤操作:

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

    2. 获取身份验证令牌

    3. 发出请求:

      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请求,请按以下步骤操作:

  1. 获取身份验证令牌

  2. 发出请求:

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

替换以下内容:

  • 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:一个或多个输入文档的存储桶位置和文件名。
    • 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: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请求,请按以下步骤操作:

  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:一个或多个输入文档的存储桶位置和文件名。
    • 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: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"
        },
        ...
      }
    }
    

    替换以下内容:

    • SOURCE_LANGUAGE:输入文档的语言代码。请参阅支持的语言及其各自的语言代码列表。
    • TARGET_LANGUAGE:要将输入文档翻译成的指定语言或目标语言。请参阅支持的语言及其各自的语言代码列表。
    • INPUT_FILE_PATH:一个或多个输入文档的存储桶位置和文件名。
    • OUTPUT_FILE_PREFIX:存储所有输出文档的存储桶位置。
    • GLOSSARY_PROJECT_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:batchTranslateDocument"
    

    替换以下内容:

响应包含长时间运行的操作的 ID:

{
"name": "projects/PROJECT_ID/operations/OPERATION_ID",
"metadata": {
  "@type": "type.googleapis.com/google.cloud.translation.v3.BatchTranslateDocumentMetadata",
  "state": "RUNNING"
}
}