🔅

GCP Translation API v3でドキュメント翻訳を自動化してみた

に公開

はじめに

GCPのGAIL(Generative AI Leader)学習でTranslation APIの存在を知り、
「ドキュメントのフォーマットを保ったまま自動翻訳できる」と聞いて興味を持ちました。
※試しにWordのCopilotで同じことをしてみましたが、フォーマットは崩れました。

そこで今回は、Translation APIの実力を測るため、 Translation API v3(Advanced)
を使ってGCSにファイルをアップロードするだけで自動翻訳されるシステムを構築してみました。
今回もClaudeを活用して、平日の夜、約2,3時間で動作まで確認しています。


🎯この記事のゴール

この記事を読むと、次のポイントが理解できます。

✅ Translation API v3の特徴とv2との違い
✅ ドキュメント翻訳(BatchTranslateDocument)の使い方
✅ 実際に使ってわかったポイント


🧠 Translation API v3とは

v3は「Advanced」版と呼ばれ、以下のようにv2から大きく進化しています。

機能 v2 (Basic) v3 (Advanced)
認証方式 APIキー IAM(サービスアカウント)
ドキュメント翻訳 × ✅ DOCX / PPTX / XLSX / PDF対応
AutoMLモデル ×
リージョン指定 global固定 ✅ リージョン必須(例: us-central1)

↓公式リンクはこちらです
https://cloud.google.com/translate/docs/editions?hl=ja

特にドキュメント翻訳は、レイアウトを保持したまま翻訳できるのが最大の強みと思われます。
今回はこの機能を中心に検証しました。


⚙️ 構築概要

詳細なアーキテクチャは前回記事(GCP開発 Excuse AIで学ぶ生成AIアプリ構築(前編))で紹介したものと同じのため、 ここでは要点のみ記します。

  • GCSにアップロードされたファイルをPub/Subが検知
  • Cloud RunでTranslation API v3を呼び出し
  • 翻訳済みファイルを別バケットに保存

リージョンは us-central1固定
(v3はglobalロケーション非対応なので注意)

使ったことのないIAMとしてroles/cloudtranslate.userを使いました。


📄 BatchTranslateDocumentを使ってみて

v3の核となるAPIが batchTranslateDocument です。
これは非同期ジョブとして実行され、DOCX / PPTX / XLSX / PDFを直接翻訳できます。

いくつか実際に使ってわかった点を挙げます👇

いざ実演

それらしい元ファイルをAIに頼み作成します。

Before

After


PDFも試しているんですが、元のフォーマットはそのままでした。

💡良かった点

  • フォーマット保持が高精度
    表や段落、箇条書きもそのまま。
    WordやPDFで開いたときの崩れがほとんどありません。

  • 処理が非同期で安定
    Cloud Runのタイムアウトを超えてもバックグラウンドで完了。

Cloud Run実装部分の抜粋


# バッチ翻訳リクエスト
request = translate_v3.BatchTranslateDocumentRequest(
    parent=parent,
    source_language_code=SOURCE_LANGUAGE,
    target_language_codes=TARGET_LANGUAGES,
    input_configs=[input_config],
    output_config=output_config,
    # オプション: フォーマット変換(PDFをDOCXに変換など)
    # format_conversions={
    #     'application/pdf': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
    # }
)

logger.info(f'Starting translation: {input_uri} -> {output_uri}')

# 非同期オペレーションの開始
operation = translate_client.batch_translate_document(request=request)

⚠️注意・落とし穴

症状 原因 対処
Operation timeout 非同期ジョブの完了待ち 実際は正常(数分後に出力される)

v3はジョブ管理が裏側で完結するため、APIレスポンスが「完了」を返すとは限りません。
翻訳済みファイルが出力バケットに現れるまで待つのが正解です。


💰コスト感(あくまで私見です)

  • 無料枠:翻訳APIは月あたり最初の500,000文字が無料です。
  • 小規模運用(たとえば1ファイル/1言語翻訳・文字数数千〜数万文字)であれば、翻訳API+サーバーレス構成で数ドル〜十数ドル/月というコスト水準が十分見込めるようです。
  • ただし、「複数言語翻訳」「大容量PDF」「フォーマット保持付きドキュメント翻訳」などでは文字数または“ページ”あたりの別料金SKUが適用されるため、個別に料金表を確認する必要があります。
  • Cloud Run/Pub/Subは無料枠の範囲内であればほぼコストゼロですが、転送量・リージョン・インスタンスサイズによって微小な課金が発生する可能性があります。

https://cloud.google.com/translate?hl=ja


おわりに

GAILで得た学びをきっかけに、実際のGCP上で手を動かしてみました。
大量のファイルの翻訳用途がある場合、Translation API v3はかなり実用的ではないかと感じます。

読んでくださり、ありがとうございました。
この記事がみなさんの業務自動化のヒントになれば嬉しいです。

Accenture Japan (有志)

Discussion