試著翻譯具有格式的文件

Vertex AI Translation光學字元辨識 (OCR) 服務結合後,可提供名為「文件翻譯」的文件處理功能。

Document Translate 可直接翻譯格式化文件,例如 PDF 檔案。相較於純文字翻譯,這項功能可保留翻譯文件的原始格式和版面配置,協助您保留大部分的原始脈絡,例如段落分隔。

文件翻譯支援內嵌從儲存空間值區批次翻譯文件。

本頁面將引導您透過互動式體驗,使用 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。如要進一步瞭解必要條件,請參閱「設定翻譯專案」。

翻譯儲存空間 bucket 中的文件

如要翻譯儲存在 bucket 中的文件,請使用 Vertex AI Translation API。

本節說明如何翻譯值區中的文件,並將結果儲存至另一個輸出值區路徑。回應也會傳回位元組串流。 您可以指定 MIME 類型,如果沒有指定,文件翻譯會根據輸入檔案的副檔名判斷。

文件翻譯功能支援自動偵測儲存在 bucket 中的文件語言。如果您未指定原文語言代碼,Document Translate 就會為您偵測語言。輸出內容的 detectedLanguageCode 欄位會顯示偵測到的語言。

如要翻譯儲存空間值區中的文件,請按照下列步驟操作:

  1. 設定物件儲存空間的 gcloud CLI
  2. dt-project 命名空間中建立儲存空間 bucket。使用 Standard 儲存空間類別。

    您可以在 dt-project 命名空間中部署 Bucket 資源,藉此建立 Storage 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. 將 bucket 的 readwrite 權限授予 Vertex AI Translation 服務使用的服務帳戶 (ai-translation-system-sa)。

    您可以按照下列步驟,使用自訂資源建立角色和角色繫結:

    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. 將文件上傳至您建立的儲存空間 bucket。詳情請參閱「在專案中上傳及下載儲存空間物件」。

  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/locations/PROJECT_ID:translateDocument < request.json
      

      更改下列內容:

      • TOKEN:您取得的驗證權杖
      • ENDPOINT:貴機構使用的 Vertex AI Translation 端點。詳情請參閱服務狀態和端點
      • PROJECT_ID:您的專案 ID。

在文件中翻譯

本節說明如何將文件內嵌在 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/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

翻譯多份文件

以下範例包含多個輸入設定。每個輸入設定都是儲存空間 bucket 中檔案的指標。

對 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:一或多個輸入文件的儲存空間 bucket 位置和檔案名稱。
    • OUTPUT_FILE_PREFIX:儲存所有輸出文件的儲存空間 bucket 位置。
  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"
    

    更改下列內容:

    • TOKEN:您取得的驗證權杖
    • ENDPOINT:貴機構使用的 Vertex AI Translation 端點。詳情請參閱服務狀態和端點
    • PROJECT_ID:您的專案 ID。

回應會包含長時間執行作業的 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 檔案的 bucket,不必排除個別檔案。

對 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:一或多個輸入文件的儲存空間 bucket 位置和檔案名稱。
    • OUTPUT_FILE_PREFIX:儲存所有輸出文件的儲存空間 bucket 位置。
  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"
    

    更改下列內容:

    • TOKEN:您取得的驗證權杖
    • ENDPOINT:貴機構使用的 Vertex AI Translation 端點。詳情請參閱服務狀態和端點
    • PROJECT_ID:您的專案 ID。

回應會包含長時間執行作業的 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:一或多個輸入文件的儲存空間 bucket 位置和檔案名稱。
    • OUTPUT_FILE_PREFIX:儲存所有輸出文件的儲存空間 bucket 位置。
    • 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/locations/PROJECT_ID:batchTranslateDocument"
    

    更改下列內容:

    • TOKEN:您取得的驗證權杖
    • ENDPOINT:貴機構使用的 Vertex AI Translation 端點。詳情請參閱服務狀態和端點
    • PROJECT_ID:您的專案 ID。

回應會包含長時間執行作業的 ID:

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