Google翻訳APIをPythonから使う方法

この記事のまとめ:
  • Google翻訳API (Cloud Translation API)をPythonで使う方法の解説とサンプルコードの紹介。
背景

自分用にWebスクレイピングで情報をまとめているのですが、基本的に英語サイトの情報が対象です。まとめた情報はそれなりの数になるのですが、英語だと時間がないとついつい読み飛ばしてしまうので、手っ取り早く情報を取り込むには英語より日本語の方がいいので、Google翻訳に頼ろうと思った次第です。

Google Translation APIとは

多くの人が一度は使ったことがあると思うだろうGoogle翻訳のAPIです。Google Cloud Platform (GCP)のサービスの一部として提供されていまして、 有料 です。Google翻訳は無料なのに…と思うかもしれませんがそれが商売です。APIを使えばユーザー側が機械的に処理を回せるので無料にするとGoogle側がえらいことになることも容易に想像ができるのでそれを防止しているのだとも思います。ただ、後述しますが、そんなに高いものではないです。

それでは、早速APIの使い方を解説していきます。

Google Translation APIを有効化し、認証情報を取得する

まずは、Google ConsoleもしくはGCP Consoleを開き、適切なプロジェクトを選択したのちに、画面上部の検索窓から"Cloud Translation API"を探し、APIを有効化します。

上記のコンソールの認証情報から サービスアカウントキー を作成して、JSONファイルをダウンロードしてきます。

大体の方法は過去にBlogger API用にやったのでそれと同じですのでわからない方はこちらを参照してください。なお、取得対象はサービスアカウントキーです。

支払い方法を設定する

Cloud Translation APIは有料のAPIです。支払方法を設定しておく必要があります。Google Consoleのナビゲーションメニューから"お支払い"を選択します。そこから各種必要な情報を入力します。

料金は、翻訳と言語の検出ともに$20/100万文字(最小単位は不明ですが、これより小さい単位をこの割合で課金されます)で月末締めの1ヶ月での利用量に応じた金額が請求されるようです。詳細は公式ページをご覧ください。

その他の詳細は公式ページの「プロジェクトの請求設定の変更」をご覧ください。

サンプルコード
認証

Cloud Translation APIは、Google Cloud Platform (GCP)のライブラリ(GCPクライアントライブラリ)として提供されます。GCPクライアントライブラリの認証方法は公式ページを見ると次のように記載されています。

GCP クライアント ライブラリでは、アプリケーションのデフォルト認証情報(ADC)と呼ばれる方式を使用してアプリケーションの認証情報が検出されます。コードでクライアント ライブラリが使用されると、この方式により、以下の順番で認証情報がチェックされます。 まず、ADC は環境変数 GOOGLE_APPLICATION_CREDENTIALS が設定されているかどうかを確認します。変数が設定されている場合、ADC はその変数が指しているサービス アカウント ファイルを使用します。

つまり、ソースコード上では何も認証のコードを書かなくていいわけですが、知らない人にとって見ると何が行われているかわからず、まずはサンプルコードを動かそうとしてもエラーが出て使えないということ陥ります。(私も初めにやりました)

サンプルコードの実行

上記の通り、認証情報用に環境変数を追加しないとなりませんが、Python上で環境変数を追加したい思います。こちらの公式ページのサンプルコードをベースに環境変数を追加するコードを追加したものが下記です。 (また、サンプルコードでは英語⇒ロシア語への翻訳になっていますが、英語⇒日本語への翻訳に変更しています)

# Export the Application Default Credentials as an envrionmental path
import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'サービスアカウントキーのJSONファイルのパス'
 
# Imports the Google Cloud client library
from google.cloud import translate
 
# Instantiates a client
translate_client = translate.Client()
 
# The text to translate
text = u'Hello, world!'
# The target language => Japanese
target = 'ja'
 
# Translates some text into Japanese
translation = translate_client.translate(
    text,
    target_language=target)
 
print(u'Text: {}'.format(text))
print(u'Translation: {}'.format(translation['translatedText']))

その他にCloud Translation APIでは翻訳だけでなく、対応言語の取得、言語検出の機能があります。それぞれの使い方はこちらの公式ページに記載があるのでご参照ください。


今回は以上です。 最後まで読んでいただき、ありがとうございます。


コメント

このブログの人気の投稿

LinuxでのnVidia GPUのオーバークロック・電力チューニング方法