書式設定されたドキュメントの翻訳を試す

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 ドキュメントの翻訳

ドキュメント翻訳は、右から左に記述する言語との相互翻訳を含む、オリジナルの PDF ファイルとスキャンされた PDF ファイルをサポートしています。また、Document Translate では、ファイルのハイパーリンク、フォントサイズ、フォントの色が維持されます。

始める前に

ドキュメント処理機能を使用するには、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 の両方を有効にし、適切な認証情報を用意する必要があります。API 呼び出しを容易にするために、Vertex AI Translation と OCR のクライアント ライブラリをインストールすることを検討してください。前提条件の詳細については、翻訳プロジェクトを設定するをご覧ください。

ストレージ バケットのドキュメントを翻訳する

バケットに保存されているドキュメントを翻訳するには、Vertex AI Translation API を使用します。

このセクションでは、バケットからドキュメントを翻訳し、結果を別の出力バケットパスに保存する方法について説明します。レスポンスはバイト ストリームも返します。MIME タイプを指定できます。指定しない場合、ドキュメント翻訳は入力ファイルの拡張子を使用して MIME タイプを決定します。

ドキュメント翻訳では、バケットに保存されているドキュメントの言語の自動検出がサポートされています。ソース言語コードを指定しない場合、Document Translate は言語を自動的に検出します。検出された言語は、detectedLanguageCode フィールドの出力に含まれます。

ストレージ バケットからドキュメントを翻訳する手順は次のとおりです。

  1. オブジェクト ストレージ用に gdcloud CLI を構成する。
  2. dt-project Namespace にストレージ バケットを作成します。Standard ストレージ クラスを使用します。

    dt-project Namespace に 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 権限を付与します。

    管理 API サーバーでカスタム リソースを使用してロールとロール バインディングを作成する手順は次のとおりです。

    1. dt-project Namespace に 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 Namespace に 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

次のように置き換えます。

ドキュメントを一括で翻訳する

バッチ翻訳を使用すると、1 つのリクエストで複数のファイルを複数の言語に翻訳できます。リクエストごとに最大 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 ファイルを組み合わせて定期的に翻訳する場合は、別々のバケットに整理することをおすすめします。これにより、一括翻訳と変換をリクエストする際に、スキャンされた 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: 1 つ以上の入力ドキュメントのストレージ バケットのロケーションとファイル名。
    • 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"
}
}