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

Vertex AI Translation サービスと光学式文字認識(OCR)サービスを組み合わせることで、ドキュメント翻訳というドキュメント処理機能が提供されます。

Document Translate は、PDF ファイルなどの書式設定されたドキュメントを直接翻訳します。書式なしテキスト翻訳と比較すると、この機能では翻訳済みドキュメントに元の書式とレイアウトが維持されるため、段落の区切りなど、元のコンテキストの大部分を保持できます。

Document Translate は、ドキュメントの翻訳をインラインストレージ バケットから一括でサポートしています。

このページでは、Google Distributed Cloud(GDC)エアギャップのドキュメント処理機能を使用して、ドキュメントの形式を保持しながら翻訳するインタラクティブな操作について説明します。

サポートされているファイル形式

Document Translate は、次の入力ファイル形式と、関連する出力ファイル形式をサポートしています。

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

Document Translate は、右から左に記述する言語間の翻訳を含め、ネイティブ ファイルとスキャンされたファイルの両方の 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 タイプを指定できますが、指定しない場合、Document Translate は入力ファイルの拡張子から 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)に、バケットに対する read 権限と write 権限を付与します。

    次の手順に沿って、カスタム リソースを使用してロールとロール バインディングを作成します。

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

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

ドキュメントをバッチで翻訳する

一括翻訳を使用すると、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 つ以上の入力ドキュメントのストレージ バケットのロケーションとファイル名。
    • 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: 1 つ以上の入力ドキュメントのストレージ バケットのロケーションとファイル名。
    • 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: 1 つ以上の入力ドキュメントのストレージ バケットのロケーションとファイル名。
    • 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"
}
}