はじめに
こんにちは、技術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 円くらい
対応リージョン
Translate のバッチ翻訳は 2020 年 8 月現在、以下の 7 リージョンで利用できます。
- バージニア北部
- オハイオ
- オレゴン
- アイルランド
- ロンドン
- フランクフルト
- ソウル
リアルタイム翻訳についてはリージョン - グローバルインフラストラクチャ | AWSをご覧ください。
アップデート内容
今回以下のアップデートがありました。
- Office Open XML ドキュメントの docx、 pptx、 xlsx 形式での翻訳をサポート
- バッチ翻訳でのファイルサイズ制限が 1 MB から 20 MB へ増加
日本の企業だと Excel や Word、 PowerPoint で資料を作る会社がほとんどだと思います。 かつ、グローバル企業だと多言語で書かれているドキュメントを読むために翻訳する機会もあるのではないでしょうか。 そういったケースに便利そうなアップデートですよね。
セットアップ
今回は、このアップデートを試すために以下の構成を作ってみようと思います。 ※ 実用性があるのかは不明
- 英語の Word ファイルを S3 バケットの en プレフィックスにアップロード
- Lambda が起動し、 Translate API を実行
- Translate が日本語、中国語、ドイツ語の翻訳ジョブを開始
- S3 バケットの各言語プレフィックスに翻訳済みファイルが格納される
Translate のバッチ処理は東京リージョンに未対応のため、今回は バージニア北部リージョン にて進めていきます。
S3 バケットの作成
適当に Word ファイル格納用の S3 バケットを作成し、以下プレフィックスを作成します。
- en
- ja
- zh
- de
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/ プレフィックスにオブジェクトがアップロードされたら起動するようにします。
これでセットアップは完了です!!
試してみる
セットアップが完了したので、試してみましょう。 今回サンプルとして使用するのは、当社ホームページの内容を Word に貼り付けて作ったドキュメントです。
このドキュメントを sample.docx として S3 バケットの en プレフィックスにアップロードします。
ほどなく、 Translate のバッチ翻訳画面を見ると、 3 つのジョブが走り出しています。
10 分くらい経つとステータスが完了となりました。 各プレフィックス内の Word ファイルを確認していきます。 まずは、日本語。
ファイルをダウンロードして開いてみます。
結構自然に翻訳できているのではないでしょうか!!! 続いて中国語です。
ダウンロードして開いてみます。
いかがでしょうか?? (私にはわかりません…) 最後にドイツ語です。
開いてみます。
きっとうまくいってますね!!
おわりに
Excel や Word 、 PowerPoint などを直接翻訳できるようになったことで、ぐっと使い勝手が良くなったのではないでしょうか。
この内容は 2020/8/5(水) 18:00 よりYouTube にて配信する「30分でわかる AWS UPDATE!」で取り上げますので、是非ご覧ください! チャンネル登録よろしくおねがいします!!