Vertex AI Translation サービスと光学式文字認識(OCR)サービスを組み合わせることで、ドキュメント翻訳というドキュメント処理機能が提供されます。
Document Translate は、PDF ファイルなどの書式設定されたドキュメントを直接翻訳します。書式なしテキスト翻訳と比較すると、この機能では翻訳済みドキュメントに元の書式とレイアウトが維持されるため、段落の区切りなど、元のコンテキストの大部分を保持できます。
Document Translate は、ドキュメントの翻訳をインライン、ストレージ バケットから、一括でサポートしています。
このページでは、Google Distributed Cloud(GDC)エアギャップのドキュメント処理機能を使用して、ドキュメントの形式を保持しながら翻訳するインタラクティブな操作について説明します。
サポートされているファイル形式
Document Translate は、次の入力ファイル形式と、関連する出力ファイル形式をサポートしています。
入力 | ドキュメントの MIME タイプ | 出力 |
---|---|---|
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
フィールドの出力に含まれます。
ストレージ バケットからドキュメントを翻訳する手順は次のとおりです。
- オブジェクト ストレージ用に gdcloud CLI を構成します。
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
Vertex AI Translation サービスで使用されるサービス アカウント(
ai-translation-system-sa
)に、バケットに対するread
権限とwrite
権限を付与します。次の手順に沿って、カスタム リソースを使用してロールとロール バインディングを作成します。
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
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
作成したストレージ バケットにドキュメントをアップロードします。詳細については、プロジェクトでストレージ オブジェクトをアップロードしてダウンロードするをご覧ください。
Vertex AI Translation 事前トレーニング済み API にリクエストを送信します。
curl
curl
リクエストを行う手順は次のとおりです。次の
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
の値を変更します。次のリクエストを行います。
curl -vv --data-binary @- -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" https://ENDPOINT:443/v3/projects/PROJECT_ID:translateDocument < request.json
次のように置き換えます。
TOKEN
: 取得した認証トークン。ENDPOINT
: 組織で使用する Vertex AI Translation エンドポイント。詳細については、サービス ステータスとエンドポイントを表示するをご覧ください。PROJECT_ID
: プロジェクト ID。
ドキュメントをインラインで翻訳する
このセクションでは、API リクエストの一部としてドキュメントをインラインで送信する方法について説明します。インラインのドキュメント翻訳には、MIME タイプを含める必要があります。
ドキュメント翻訳では、インライン テキスト翻訳の言語自動検出がサポートされています。ソース言語コードを指定しない場合、Document Translate は言語を自動的に検出します。検出された言語は、detectedLanguageCode
フィールドの出力に含まれます。
Vertex AI Translation 事前トレーニング済み API にリクエストを送信します。
curl
curl
リクエストを行う手順は次のとおりです。
次のリクエストを行います。
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 エンドポイント。詳細については、サービス ステータスとエンドポイントを表示するをご覧ください。
ドキュメントをバッチで翻訳する
一括翻訳を使用すると、1 回のリクエストで複数のファイルを複数の言語に翻訳できます。リクエストごとに最大 100 個のファイルを送信できます。コンテンツ サイズの合計は、最大 1 GB または 1 億個までの Unicode コードポイントのうち、先に上限に達したほうになります。言語ごとに特定の翻訳モデルを指定できます。
詳細については、batchTranslateDocument
をご覧ください。
複数ドキュメントを翻訳する
次の例には、複数の入力構成が含まれています。各入力構成は、ストレージ バケット内のファイルを指すポインタです。
Vertex AI Translation 事前トレーニング済み API にリクエストを送信します。
curl
curl
リクエストを行う手順は次のとおりです。
次のリクエスト本文を
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
: すべての出力ドキュメントが保存されるストレージ バケットのロケーション。
次のリクエストを行います。
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"
次のように置き換えます。
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 ファイルを組み合わせて定期的に翻訳する場合は、別々のバケットに整理することをおすすめします。これにより、一括翻訳と変換をリクエストする際に、スキャンされた PDF ファイルを含むバケットを除外できます。ファイルを個別に除外する必要はありません。
Vertex AI Translation 事前トレーニング済み API にリクエストを送信します。
curl
curl
リクエストを行う手順は次のとおりです。
次のリクエスト本文を
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
: すべての出力ドキュメントが保存されるストレージ バケットのロケーション。
次のリクエストを行います。
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"
次のように置き換えます。
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
リクエストを行う手順は次のとおりです。
次のリクエスト本文を
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。
次のリクエストを行います。
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"
次のように置き換えます。
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"
}
}