Translate が Office Open XML ドキュメントの翻訳をサポート

記事タイトルとURLをコピーする

はじめに

こんにちは、技術1課の山中です。 梅雨があけました!この部屋にはクーラーがないのですが、どうやって乗りければよいのかが目下の課題です。

今回は Amazon Translate のアップデートです! タイトル通りなのですが、 Amazon Translate が Excel、 Word、 PowerPoint に対応したとのことなのでチェックしてみましょう!

Amazon Translate が Office Open XML ドキュメントの翻訳のサポートを開始

Amazon Translate とは

Amazon Translate (以下、 Translate) は、 サポートする言語間でテキストを翻訳するためのサービス で、高品質な機械翻訳を手頃な価格で提供してくれます。 翻訳方法としては、リアルタイム翻訳もしくは非同期型のバッチ翻訳が可能です。

Amazon Translate(高速で高品質なニューラル機械翻訳サービス)| AWS

対応言語

2020/08 現在、 Translate は日本語や英語をはじめ 55 の言語をサポートしています。 言語と言語コードについては以下を参照ください。

Amazon Translate とは - Amazon Translate

料金

Translate は、処理したテキストの文字数に応じて料金が発生します。 100 万文字あたり 15.00 USD なので、かなり安く利用できます。

料金例:

平均的な E メール 3,100 文字 → 6 円くらい

典型的なニュース記事 6,500 文字 → 12 円くらい

会社のウェブサイト 20,000 文字 × 100 ページ → 3,600 円くらい

料金 - Amazon Translate | AWS

対応リージョン

Translate のバッチ翻訳は 2020 年 8 月現在、以下の 7 リージョンで利用できます。

  • バージニア北部
  • オハイオ
  • オレゴン
  • アイルランド
  • ロンドン
  • フランクフルト
  • ソウル

リアルタイム翻訳についてはリージョン - グローバルインフラストラクチャ | AWSをご覧ください。

アップデート内容

今回以下のアップデートがありました。

  1. Office Open XML ドキュメントの docx、 pptx、 xlsx 形式での翻訳をサポート
  2. バッチ翻訳でのファイルサイズ制限が 1 MB から 20 MB へ増加

日本の企業だと Excel や Word、 PowerPoint で資料を作る会社がほとんどだと思います。 かつ、グローバル企業だと多言語で書かれているドキュメントを読むために翻訳する機会もあるのではないでしょうか。 そういったケースに便利そうなアップデートですよね。

セットアップ

今回は、このアップデートを試すために以下の構成を作ってみようと思います。 ※ 実用性があるのかは不明

f:id:swx-yamanaka:20200803201620p:plain

  1. 英語の Word ファイルを S3 バケットの en プレフィックスにアップロード
  2. Lambda が起動し、 Translate API を実行
  3. Translate が日本語、中国語、ドイツ語の翻訳ジョブを開始
  4. S3 バケットの各言語プレフィックスに翻訳済みファイルが格納される

Translate のバッチ処理は東京リージョンに未対応のため、今回は バージニア北部リージョン にて進めていきます。

S3 バケットの作成

適当に Word ファイル格納用の S3 バケットを作成し、以下プレフィックスを作成します。

  • en
  • ja
  • zh
  • de

f:id:swx-yamanaka:20200803202159p:plain

Lambda 関数のセットアップ

ランタイムに Python 3.8 を指定し、 Lambda 関数を作成します。 S3 バケットへのファイルアップロードをトリガに Translate ジョブを開始するサンプルコードを作成したので、以下を貼り付けます。

import boto3
import os

from datetime import datetime

client = boto3.client('translate')


def start_wordfile_translation_job(bucket_name, input_lang, output_lang):
    # 翻訳ジョブを開始する
    now = datetime.now()
    client.start_text_translation_job(
        JobName=str(now) + output_lang,
        InputDataConfig={
            'S3Uri': f's3://{bucket_name}/{input_lang}/',
            'ContentType': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
        },
        OutputDataConfig={
            'S3Uri': f's3://{bucket_name}/{output_lang}/'
        },
        DataAccessRoleArn=os.environ['IAM_ROLE'],
        SourceLanguageCode=input_lang,
        TargetLanguageCodes=[
            output_lang,
        ],
    )


def lambda_handler(event=None, context=None):
    bucket_name = event['Records'][0]['s3']['bucket']['name']
    for output_lang in ['ja', 'zh', 'de']:
        # 日本語、中国語、ドイツ語それぞれの翻訳ジョブを渡す
        start_wordfile_translation_job(bucket_name, 'en', output_lang)

環境変数で、ジョブ実行時に利用する IAM ロールの ARN をセットしてください。

キー
IAM_ROLE arn:aws:iam::000000000000:role/service-role/AmazonTranslateServiceRole-translate-demo-20200803

ここまでできたら、 Lambda の画面から S3 のトリガを追加します。 先ほど作成したバケットを指定し、 en/ プレフィックスにオブジェクトがアップロードされたら起動するようにします。

f:id:swx-yamanaka:20200803212914p:plain

これでセットアップは完了です!!

試してみる

セットアップが完了したので、試してみましょう。 今回サンプルとして使用するのは、当社ホームページの内容を Word に貼り付けて作ったドキュメントです。

www.serverworks.co.jp

このドキュメントを sample.docx として S3 バケットの en プレフィックスにアップロードします。

f:id:swx-yamanaka:20200803210416p:plain

ほどなく、 Translate のバッチ翻訳画面を見ると、 3 つのジョブが走り出しています。

f:id:swx-yamanaka:20200803210605p:plain

10 分くらい経つとステータスが完了となりました。 各プレフィックス内の Word ファイルを確認していきます。 まずは、日本語。

f:id:swx-yamanaka:20200803211908p:plain

ファイルをダウンロードして開いてみます。

f:id:swx-yamanaka:20200803212112p:plain

結構自然に翻訳できているのではないでしょうか!!! 続いて中国語です。

f:id:swx-yamanaka:20200803212254p:plain

ダウンロードして開いてみます。

f:id:swx-yamanaka:20200803212357p:plain

いかがでしょうか?? (私にはわかりません…) 最後にドイツ語です。

f:id:swx-yamanaka:20200803212532p:plain

開いてみます。

f:id:swx-yamanaka:20200803212628p:plain

きっとうまくいってますね!!

おわりに

Excel や Word 、 PowerPoint などを直接翻訳できるようになったことで、ぐっと使い勝手が良くなったのではないでしょうか。

この内容は 2020/8/5(水) 18:00 よりYouTube にて配信する「30分でわかる AWS UPDATE!」で取り上げますので、是非ご覧ください! チャンネル登録よろしくおねがいします!!

www.youtube.com

参考

山中 大志(記事一覧)

アプリケーションサービス部

ビールと味噌カツをこよなく愛するエンジニアです。

AWSをみなさんにより使っていただけるような情報を発信していきたいと考えてます。