ドキュメントの翻訳

Cloud Translation - Advanced は、PDF や DOCX などの書式設定されたドキュメントを直接翻訳できる Document Translation API を提供しています。書式なしテキスト翻訳と比較すると、Document Translation では、翻訳済みドキュメントに元の書式とレイアウトが維持されるため、段落の区切りなど、元のコンテキストの大部分を保持できます。

以下のセクションでは、ドキュメントの翻訳方法と、用語集や AutoML Translation モデルなど、他の Cloud Translation - Advanced の機能の使用方法について説明します。Document Translation では、オンラインと一括の両方の翻訳リクエストに対応しています。

書式なしテキストと HTML の翻訳については、テキストの翻訳をご覧ください。

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

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

入力 ドキュメントの MIME タイプ Output
DOC* application/msword DOC、DOCX
DOCX* application/vnd.openxmlformats-officedocument.wordprocessingml.document DOCX
PDF application/pdf PDF、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

* テキスト ボックス内のコンテンツは翻訳されず、元の言語のままです。

Document Translation は、ネイティブの PDF ドキュメントとスキャンされた PDF ドキュメントの両方をサポートしていますが、いくつかの違いがあります。最適な書式処理のために、可能であればネイティブの PDF ファイルを使用してください。スキャンされた PDF ファイルを変換すると、一部の書式が失われます。また、PDF のレイアウトが複雑な場合、データテーブル、複数列のレイアウト、ラベルや凡例のあるグラフなど、一部の書式設定が損なわれる可能性があります。

DOCX または PPTX 形式の PDF コンテンツがある場合は、PDF に変換する前の形式を使用して翻訳することをおすすめします。一般に、PDF ファイルよりも DOCX ファイルと PPTX ファイルのほうがレイアウトとスタイルが維持されます。ドキュメントの翻訳後、結果を PDF ファイルに変換できます。

ネイティブの PDF 文書とスキャンされた PDF ドキュメントの翻訳

Document Translation は、右から左に記述する言語間の翻訳を含め、ネイティブ ファイルとスキャンされたファイルの両方の PDF ドキュメントをサポートします。PDF から DOCX への変換は、ネイティブ PDF ファイルでドキュメントの一括翻訳を行う場合にのみ使用できます。また、Document Translation では、ネイティブ PDF ファイルのハイパーリンク、フォントサイズ、フォントの色のみが維持されます(同期翻訳とバッチ翻訳の両方)。

スキャンされた PDF コンテンツとネイティブ PDF コンテンツが混在する PDF ファイルを翻訳する場合、スキャンされたコンテンツは翻訳されません。

始める前に

Cloud Translation API を使用するには、Cloud Translation API が有効になっているプロジェクトと適切な認証情報が必要です。また、この API の呼び出しを支援する一般的なプログラミング言語のクライアント ライブラリをインストールすることもできます。詳細については、設定ページをご覧ください。

必要な権限

ドキュメントの一括翻訳など、Cloud Storage へのアクセスが必要なリクエストの場合、入力ファイルの読み取りやバケットへの出力ファイルの送信に Cloud Storage の権限が必要になる場合があります。たとえば、バケットから入力ファイルを読み取るには、少なくともバケットへのオブジェクトの読み取り権限(roles/storage.objectViewer ロールによって提供される)が必要です。Cloud Storage のロールの詳細については、Cloud Storage のドキュメントをご覧ください。

ドキュメントの翻訳(オンライン)

オンライン翻訳は、単一ファイルのリアルタイム処理(同期処理)を行います。

PDF の場合、ファイルサイズは最大 20 MB で、ネイティブ PDF の場合は最大 300 ページです(isTranslateNativePdfOnly フィールドは true である必要があります)。enableShadowRemovalNativePdf フィールドを有効にすると、上限は 20 ページになります。スキャンされた PDF の場合、上限は 20 ページです。

他のドキュメント タイプの場合、ページ数に制限なく、最大 20 MB までのファイルを処理できます。

Cloud Storage のドキュメントを翻訳する

次の例では、Cloud Storage バケットのファイルを翻訳して、その結果を Cloud Storage バケットに出力します。レスポンスではバイト ストリームも返されます。MIME タイプを指定できますが、指定しない場合、Document Translation は入力ファイルの拡張子から MIME タイプを判別します。

ソース言語コードを指定しない場合、Document Translation は言語を自動的に検出します。検出された言語は、detectedLanguageCode フィールドの出力に含まれます。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER_OR_ID: Google Cloud プロジェクトの数字または英数字の ID。
  • LOCATION: このオペレーションを実行するリージョン。例: us-central1
  • SOURCE_LANGUAGE: (省略可)入力ドキュメントの言語コード。既知の場合は、言語サポートに記載されているいずれかの言語コードに設定します。
  • TARGET_LANGUAGE: 入力ドキュメントの翻訳先のターゲット言語。言語サポートに記載されているいずれかの言語コードを設定します。
  • INPUT_FILE_PATH: 入力ドキュメントの Cloud Storage のロケーションとファイル名。
  • OUTPUT_FILE_PREFIX: 出力ドキュメントが保存される Cloud Storage のロケーション。
  • IS_NATIVE: (省略可)ネイティブ PDF ドキュメントの場合に、リクエストでネイティブ PDF とスキャンされた PDF のどちらのページ数の上限を使用するかを示すブール値。true の場合、ページ数の上限は、ネイティブ PDF ドキュメントのみに適用される 300 ページに引き上げられます。false または未指定の場合、スキャンされた PDF 用のページ数の上限が使用されます(20 ページ)。

HTTP メソッドと URL:

POST https://translation.googleapis.com/v3/projects/PROJECT_NUMBER_OR_ID/locations/LOCATION:translateDocument

リクエストの本文(JSON):

{
  "source_language_code": "SOURCE_LANGUAGE",
  "target_language_code": "TARGET_LANGUAGE",
  "document_input_config": {
    "gcsSource": {
      "inputUri": "gs://INPUT_FILE_PATH"
    }
  },
  "document_output_config": {
    "gcsDestination": {
      "outputUriPrefix": "gs://OUTPUT_FILE_PREFIX"
    }
  },
  "isTranslateNativePdfOnly": IS_NATIVE
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "documentTranslation": {
    "byteStreamOutputs": ["BYTE_STREAM"],
    "mimeType": "MIME_TYPE"
  },
  "model": "projects/PROJECT_NUMBER/locations/LOCATION/models/general/nmt"
}

Node.js

このサンプルを試す前に、Cloud Translation クイックスタート: クライアント ライブラリの使用にある Node.js の設定手順を完了してください。詳細については、Cloud Translation Node.js API リファレンス ドキュメントをご覧ください。

Cloud Translation に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const location = 'global';
// const inputUri = 'path_to_your_file';

// Imports the Google Cloud Translation library
const {TranslationServiceClient} = require('@google-cloud/translate').v3beta1;

// Instantiates a client
const translationClient = new TranslationServiceClient();

const documentInputConfig = {
  gcsSource: {
    inputUri: inputUri,
  },
};

async function translateDocument() {
  // Construct request
  const request = {
    parent: translationClient.locationPath(projectId, location),
    documentInputConfig: documentInputConfig,
    sourceLanguageCode: 'en-US',
    targetLanguageCode: 'sr-Latn',
  };

  // Run request
  const [response] = await translationClient.translateDocument(request);

  console.log(
    `Response: Mime Type - ${response.documentTranslation.mimeType}`
  );
}

translateDocument();

ドキュメントをインラインで翻訳する

次の例では、リクエストの一部としてドキュメントをインラインで送信しています。インラインのドキュメント翻訳には、MIME タイプを含める必要があります。

ソース言語コードを指定しない場合、Document Translation は言語を自動的に検出します。検出された言語は、detectedLanguageCode フィールドの出力に含まれます。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER_OR_ID: Google Cloud プロジェクトの数字または英数字の ID。
  • LOCATION: このオペレーションを実行するリージョン。例: us-central1
  • SOURCE_LANGUAGE: (省略可)入力ドキュメントの言語コード。既知の場合は、言語サポートに記載されているいずれかの言語コードに設定します。
  • TARGET_LANGUAGE: 入力ドキュメントの翻訳先のターゲット言語。言語サポートに記載されているいずれかの言語コードを設定します。
  • MIME_TYPE: ソース ドキュメントの形式(application/pdf など)。
  • INPUT_BYTE_STREAM: バイト ストリームで表現した入力ドキュメントのコンテンツ。
  • OUTPUT_FILE_PREFIX: 出力ドキュメントが保存される Cloud Storage のロケーション。
  • IS_NATIVE: (省略可)ネイティブ PDF ドキュメントの場合に、リクエストでネイティブ PDF とスキャンされた PDF のどちらのページ数の上限を使用するかを示すブール値。true の場合、ページ数の上限は、ネイティブ PDF ドキュメントのみに適用される 300 ページに引き上げられます。false または未指定の場合、スキャンされた PDF 用のページ数の上限が使用されます(20 ページ)。

HTTP メソッドと URL:

POST https://translation.googleapis.com/v3/projects/PROJECT_NUMBER_OR_ID/locations/LOCATION:translateDocument

リクエストの本文(JSON):

{
  "source_language_code": "SOURCE_LANGUAGE",
  "target_language_code": "TARGET_LANGUAGE",
  "document_input_config": {
    "mimeType": "MIME_TYPE",
    "content": "INPUT_BYTE_STREAM"
  },
  "document_output_config": {
    "gcsDestination": {
      "outputUriPrefix": "gs://OUTPUT_FILE_PREFIX"
    }
  },
  "isTranslateNativePdfOnly": IS_NATIVE
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "documentTranslation": {
    "byteStreamOutputs": ["BYTE_STREAM"],
    "mimeType": "MIME_TYPE"
  },
  "model": "projects/PROJECT_NUMBER/locations/LOCATION/models/general/nmt"
}

Python

このサンプルを試す前に、Cloud Translation クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。詳細については、Cloud Translation Python API リファレンス ドキュメントをご覧ください。

Cloud Translation に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。

from google.cloud import translate_v3beta1 as translate


def translate_document(
    project_id: str,
    file_path: str,
) -> translate.TranslationServiceClient:
    """Translates a document.

    Args:
        project_id: The GCP project ID.
        file_path: The path to the file to be translated.

    Returns:
        The translated document.
    """

    client = translate.TranslationServiceClient()
    location = "us-central1"
    parent = f"projects/{project_id}/locations/{location}"

    # Supported file types: https://cloud.google.com/translate/docs/supported-formats
    with open(file_path, "rb") as document:
        document_content = document.read()

    document_input_config = {
        "content": document_content,
        "mime_type": "application/pdf",
    }

    response = client.translate_document(
        request={
            "parent": parent,
            "target_language_code": "fr-FR",
            "document_input_config": document_input_config,
        }
    )

    # To output the translated document, uncomment the code below.
    # f = open('/tmp/output', 'wb')
    # f.write(response.document_translation.byte_stream_outputs[0])
    # f.close()

    # If not provided in the TranslationRequest, the translated file will only be returned through a byte-stream
    # and its output mime type will be the same as the input file's mime type
    print(
        f"Response: Detected Language Code - {response.document_translation.detected_language_code}"
    )

    return response

AutoML モデルまたは用語集を使用する

Google が管理するモデルの代わりに、独自の AutoML 翻訳モデルを使用してドキュメントを翻訳することもできます。モデルを指定するだけでなく、用語集を追加してドメイン固有の用語を処理することもできます。モデルまたは用語集を指定する場合は、ソース言語を指定する必要があります。次の例では、AutoML モデルと用語集を使用しています。モデルまたは用語集が別のプロジェクトにある場合、それらのリソースにアクセスするために、対応する IAM 権限を付与されている必要があります。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER_OR_ID: Google Cloud プロジェクトの数字または英数字の ID。
  • LOCATION: このオペレーションを実行するリージョン(us-central1 など)。ロケーションは、モデルや用語集、あるいはその両方が配置されているロケーションと一致する必要があります。
  • SOURCE_LANGUAGE: 入力ドキュメントの言語コード。言語サポートに記載されているいずれかの言語コードを設定します。
  • TARGET_LANGUAGE: 入力ドキュメントの翻訳先のターゲット言語。言語サポートに記載されているいずれかの言語コードを設定します。
  • INPUT_FILE_PATH: 入力ドキュメントの Cloud Storage のロケーションとファイル名。
  • OUTPUT_FILE_PREFIX: 出力ドキュメントが保存される Cloud Storage のロケーション。
  • MODEL_PROJECT_ID: モデルが配置されているプロジェクト ID。
  • MODEL_LOCATION: モデルが配置されているリージョン
  • MODEL_ID: 使用するモデルの ID。
  • GLOSSARY_PROJECT_ID: 用語集が配置されているプロジェクト ID。
  • GLOSSARY_LOCATION: 用語集が配置されているリージョン。
  • GLOSSARY_ID: 使用する用語集の ID。

HTTP メソッドと URL:

POST https://translation.googleapis.com/v3/projects/PROJECT_NUMBER_OR_ID/locations/LOCATION:translateDocument

リクエストの本文(JSON):

{
  "source_language_code": "SOURCE_LANGUAGE",
  "target_language_code": "TARGET_LANGUAGE",
  "document_input_config": {
    "gcsSource": {
      "inputUri": "gs://INPUT_FILE_PATH"
    }
  },
  "document_output_config": {
    "gcsDestination": {
      "outputUriPrefix": "gs://OUTPUT_FILE_PREFIX"
    }
  },
  "model": "projects/MODEL_PROJECT_ID/locations/MODEL_LOCATION/models/MODEL_ID",
  "glossary_config": {
    "glossary": "projects/GLOSSARY_PROJECT_ID/locations/MODEL_LOCATION/glossaries/GLOSSARY_ID"
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "documentTranslation": {
    "byteStreamOutputs": ["BYTE_STREAM"],
    "mimeType": "MIME_TYPE"
  },
  "glossary_document_translation": {
    "byteStreamOutputs": ["BYTE_STREAM_USING_GLOSSARY"],
    "mimeType": "MIME_TYPE"
  },
  "model": "projects/MODEL_PROJECT_ID/locations/MODEL_LOCATION/models/MODEL_ID",
  "glossaryConfig": {
    "glossary": "projects/GLOSSARY_PROJECT_ID/locations/MODEL_LOCATION/glossaries/GLOSSARY_ID"
  }
}

ドキュメントの翻訳(一括)

一括翻訳を使用すると、1 回のリクエストで複数のファイルを複数の言語に翻訳できます。リクエストごとに最大 100 個のファイルを送信できます。コンテンツ サイズの合計は、最大 1 GB または 1 億個までの Unicode コードポイントのうち、先に上限に達したほうになります。言語ごとに特定の翻訳モデルを指定できます。

複数ドキュメントの翻訳

次の例には、複数の入力構成が含まれています。各入力構成は、Cloud Storage バケット内のファイルを指すポインタです。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER_OR_ID: Google Cloud プロジェクトの数字または英数字の ID
  • LOCATION: このオペレーションを実行するリージョン。例: us-central1
  • SOURCE_LANGUAGE: 入力ドキュメントの言語コード。言語サポートに記載されているいずれかの言語コードを設定します。
  • TARGET_LANGUAGE: 入力ドキュメントの翻訳先のターゲット言語。言語サポートの一覧に記載されている言語コードを使用します。
  • INPUT_FILE_PATH: 1 つ以上の入力ドキュメントの Cloud Storage のロケーションとファイル名。
  • OUTPUT_FILE_PREFIX: すべての出力ドキュメントが保存される Cloud Storage のロケーション。

HTTP メソッドと URL:

POST https://translation.googleapis.com/v3/projects/PROJECT_NUMBER_OR_ID/locations/LOCATION:batchTranslateDocument

リクエストの本文(JSON):

{
  "source_language_code": "SOURCE_LANGUAGE",
  "target_language_codes": ["TARGET_LANGUAGE", ...],
  "input_configs": [
    {
      "gcsSource": {
        "inputUri": "gs://INPUT_FILE_PATH_1"
      }
    },
    {
      "gcsSource": {
        "inputUri": "gs://INPUT_FILE_PATH_2"
      }
    },
    ...
  ],
  "output_config": {
    "gcsDestination": {
      "outputUriPrefix": "gs://OUTPUT_FILE_PREFIX"
    }
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

レスポンスには、長時間実行オペレーションの ID が含まれます。
{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.translation.v3.BatchTranslateDocumentMetadata",
    "state": "RUNNING"
  }
}

Node.js

このサンプルを試す前に、Cloud Translation クイックスタート: クライアント ライブラリの使用にある Node.js の設定手順を完了してください。 詳細については、Cloud Translation Node.js API リファレンス ドキュメントをご覧ください。

Cloud Translation に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const location = 'us-central1';
// const inputUri = 'path_to_your_files';
// const outputUri = 'path_to_your_output_bucket';

// Imports the Google Cloud Translation library
const {TranslationServiceClient} = require('@google-cloud/translate').v3beta1;

// Instantiates a client
const translationClient = new TranslationServiceClient();

const documentInputConfig = {
  gcsSource: {
    inputUri: inputUri,
  },
};

async function batchTranslateDocument() {
  // Construct request
  const request = {
    parent: translationClient.locationPath(projectId, location),
    documentInputConfig: documentInputConfig,
    sourceLanguageCode: 'en-US',
    targetLanguageCodes: ['sr-Latn'],
    inputConfigs: [
      {
        gcsSource: {
          inputUri: inputUri,
        },
      },
    ],
    outputConfig: {
      gcsDestination: {
        outputUriPrefix: outputUri,
      },
    },
  };

  // Batch translate documents using a long-running operation.
  // You can wait for now, or get results later.
  const [operation] = await translationClient.batchTranslateDocument(request);

  // Wait for operation to complete.
  const [response] = await operation.promise();

  console.log(`Total Pages: ${response.totalPages}`);
}

batchTranslateDocument();

Python

このサンプルを試す前に、Cloud Translation クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。詳細については、Cloud Translation Python API リファレンス ドキュメントをご覧ください。

Cloud Translation に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。


from google.cloud import translate_v3beta1 as translate


def batch_translate_document(
    input_uri: str,
    output_uri: str,
    project_id: str,
    timeout: int = 180,
) -> translate.BatchTranslateDocumentResponse:
    """Batch translate documents.

    Args:
        input_uri: Google Cloud Storage location of the input document.
        output_uri: Google Cloud Storage location of the output document.
        project_id: The GCP project ID.
        timeout: The timeout for this request.

    Returns:
        Translated document response
    """
    client = translate.TranslationServiceClient()

    # The ``global`` location is not supported for batch translation
    location = "us-central1"

    # Google Cloud Storage location for the source input. This can be a single file
    # (for example, ``gs://translation-test/input.docx``) or a wildcard
    # (for example, ``gs://translation-test/*``).
    # Supported file types: https://cloud.google.com/translate/docs/supported-formats
    gcs_source = {"input_uri": input_uri}

    batch_document_input_configs = {
        "gcs_source": gcs_source,
    }
    gcs_destination = {"output_uri_prefix": output_uri}
    batch_document_output_config = {"gcs_destination": gcs_destination}
    parent = f"projects/{project_id}/locations/{location}"

    # Supported language codes: https://cloud.google.com/translate/docs/language
    operation = client.batch_translate_document(
        request={
            "parent": parent,
            "source_language_code": "en-US",
            "target_language_codes": ["fr-FR"],
            "input_configs": [batch_document_input_configs],
            "output_config": batch_document_output_config,
        }
    )

    print("Waiting for operation to complete...")
    response = operation.result(timeout)

    print(f"Total Pages: {response.total_pages}")

    return response

ネイティブの PDF ファイルを翻訳して変換する

次の例では、ネイティブの PDF ファイルを DOCX ファイルに翻訳して変換しています。さまざまなファイル形式の複数の入力を指定できます。その入力がすべてネイティブの PDF ファイルである必要はありません。ただし、変換を含む場合は、スキャンされた PDF ファイルを含めることはできません。リクエストは拒否され、翻訳は行われません。ネイティブの PDF ファイルのみが翻訳され、DOCX ファイルに変換されます。たとえば、PPTX ファイルを含めると、ファイルは翻訳され、PPTX ファイルとして返されます。

スキャンされた PDF ファイルとネイティブ PDF ファイルを組み合わせて定期的に翻訳する場合は、別々の Cloud Storage のバケットに整理することをおすすめします。これにより、一括翻訳と変換をリクエストする際に、スキャンされた PDF ファイルを含むバケットを簡単に除外できます。ファイルを個別に除外する必要はありません。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER_OR_ID: Google Cloud プロジェクトの数字または英数字の ID
  • LOCATION: このオペレーションを実行するリージョン。例: us-central1
  • SOURCE_LANGUAGE: 入力ドキュメントの言語コード。言語サポートに記載されているいずれかの言語コードを設定します。
  • TARGET_LANGUAGE: 入力ドキュメントの翻訳先のターゲット言語。言語サポートの一覧に記載されている言語コードを使用します。
  • INPUT_FILE_PATH: 1 つ以上のネイティブの PDF ファイルの Cloud Storage のロケーションとファイル名。
  • OUTPUT_FILE_PREFIX: すべての出力ドキュメントが保存される Cloud Storage のロケーション。

HTTP メソッドと URL:

POST https://translation.googleapis.com/v3/projects/PROJECT_NUMBER_OR_ID/locations/LOCATION:batchTranslateDocument

リクエストの本文(JSON):

{
  "source_language_code": "SOURCE_LANGUAGE",
  "target_language_codes": ["TARGET_LANGUAGE", ...],
  "input_configs": [
    {
      "gcsSource": {
        "inputUri": "gs://INPUT_FILE_PATH_1"
      }
    },
    {
      "gcsSource": {
        "inputUri": "gs://INPUT_FILE_PATH_2"
      }
    },
    ...
  ],
  "output_config": {
    "gcsDestination": {
      "outputUriPrefix": "gs://OUTPUT_FILE_PREFIX"
    }
  },
  "format_conversions": {
    "application/pdf": "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

レスポンスには、長時間実行オペレーションの ID が含まれます。
{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.translation.v3.BatchTranslateDocumentMetadata",
    "state": "RUNNING"
  }
}

AutoML モデルまたは用語集を使用する

Google が管理するモデルの代わりに、独自の AutoML 翻訳モデルを使用してドキュメントを翻訳することもできます。モデルを指定するだけでなく、用語集を追加してドメイン固有の用語を処理することもできます。モデルまたは用語集を指定する場合は、ソース言語を指定する必要があります。次の例では、AutoML モデルと用語集を使用しています。独自のモデルと用語集に最大 10 個のターゲット言語を指定できます。

一部のターゲット言語に対してモデルを指定し、それ以外の言語に対しては指定しない場合、Document Translation では、指定されていない言語に対しては Google マネージド モデルが使用されます。同様に、一部の対象言語に用語集を指定した場合、Document Translation では、未指定の言語に対して用語集は使用されません。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER_OR_ID: Google Cloud プロジェクトの数字または英数字の ID
  • LOCATION: このオペレーションを実行するリージョン(us-central1 など)。ロケーションは、モデルや用語集、あるいはその両方が配置されているロケーションと一致する必要があります。
  • SOURCE_LANGUAGE: 入力ドキュメントの言語コード。言語サポートに記載されているいずれかの言語コードを設定します。
  • TARGET_LANGUAGE: 入力ドキュメントの翻訳先のターゲット言語。言語サポートの一覧に記載されている言語コードを使用します。
  • INPUT_FILE_PATH: 1 つ以上の入力ドキュメントの Cloud Storage のロケーションとファイル名。
  • OUTPUT_FILE_PREFIX: すべての出力ドキュメントが保存される Cloud Storage のロケーション。
  • MODEL_PROJECT_ID: モデルが配置されているプロジェクト ID。
  • MODEL_LOCATION: モデルが配置されているリージョン
  • MODEL_ID: 使用するモデルの ID。
  • GLOSSARY_PROJECT_ID: 用語集が配置されているプロジェクト ID。
  • GLOSSARY_LOCATION: 用語集が配置されているリージョン。
  • GLOSSARY_ID: 使用する用語集の ID。

HTTP メソッドと URL:

POST https://translation.googleapis.com/v3/projects/PROJECT_NUMBER_OR_ID/locations/LOCATION:translateDocument

リクエストの本文(JSON):

{
  "source_language_code": "SOURCE_LANGUAGE",
  "target_language_codes": "[TARGET_LANGUAGE, ...]",
  "input_configs": [
    {
      "gcsSource": {
        "inputUri": "gs://INPUT_FILE_PATH"
      }
    }
  ],
  "output_config": {
    "gcsDestination": {
      "outputUriPrefix": "gs://OUTPUT_FILE_PREFIX"
    }
  },
  "models": {
    "TARGET_LANGUAGE": "projects/MODEL_PROJECT_ID/locations/MODEL_LOCATION/models/MODEL_ID",
    ...
  },
  "glossaries": {
    "TARGET_LANGUAGE": {
      "glossary": "projects/GLOSSARY_PROJECT_ID/locations/MODEL_LOCATION/glossaries/GLOSSARY_ID"
    },
    ...
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

レスポンスには、長時間実行オペレーションの ID が含まれます。
{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.translation.v3.BatchTranslateDocumentMetadata",
    "state": "RUNNING"
  }
}

テキストが重なっている

ネイティブ PDF 翻訳では、翻訳後のテキストがソーステキストと重なっていることがあります。これはシャドウ テキストと呼ばれています。

場合によっては、enableShadowRemovalNativePdf オプションを有効にしてシャドウ テキストを削除できます。このオプションを有効にすると、レスポンスのレイテンシが増加し、オンライン ドキュメント翻訳のページ数の上限が 20 に減少します。ドキュメントの翻訳が終わるまで、シャドウ テキストの削除が必要かどうか確認できません。

その他のケースとして、enableShadowRemovalNativePdf オプションが機能しない場合は、PDF を画像に変換してから翻訳してください。通常、このようなケースでは複数のレイヤのテキストが含まれます。たとえば、テキストが含まれている背景画像の上に、選択可能なテキストがある場合などです。PDF を画像に変換すると、Cloud Translation ではドキュメントをスキャンされた PDF として処理できます。変換には、Chrome(画像として印刷)または他のサードパーティ ツールを使用できます。

テキストの方向

スキャンされた PDF 翻訳の場合、ソーステキストは横向きにする必要があります。たとえば、スキャンしたドキュメントに傾いているテキストが含まれている場合、Cloud Translation でテキストが正しく解析されず、翻訳が不正確または不完全になります。

ドキュメントの向きが一定でない場合は、Cloud Translation で方向を指示できます。翻訳リクエストで enableRotationCorrection オプションを有効にすると、翻訳の前にテキストが正しい向きに設定されます。

次のステップ

  • Document Translation の料金はページごとに課金されます。詳細は、料金をご覧ください。