python DeepL APIを使った翻訳

Python

・環境

windows 11

・DeepL APIのアカウント登録

APIを使うために以下のサイトで、アカウント登録をします

DeepLのAPI翻訳 | 機械翻訳のテクノロジー
翻訳に必要なものすべてを集約しています。ご自身のプロダクトやプラットフォームに簡単に統合できます。

下のほうにある無料アカウントに登録します
一か月あたりの利用する文字数などに制限がありますが、お試しなら十分だと思います

メールアドレスなどを登録すれば、最後にDeepL APIキーが取得できますので、コピーしておきます

・コード作成

それでは、pythonコードを書いていきます
まずは、テキストファイル(txt形式)の英語のテキストを日本語に翻訳してみたいと思います
コード全体を以下に記載します

import requests
import os
from dotenv import load_dotenv

load_dotenv()
DEEPL_API_KEY=os.environ["DEEPL_API_KEY"]

text_path=r"G:\マイドライブ\text\sample_audio.txt"

with open(text_path, encoding='utf-8') as f:
    text = f.read()

params = {
            "auth_key": DEEPL_API_KEY,
            "text": text,
            "source_lang": 'EN',
            "target_lang": 'JA'
          }

request = requests.post("https://api-free.deepl.com/v2/translate", data=params)
result = request.json()
text_ja=result["translations"][0]["text"]
print(text_ja)

with open(r"G:\マイドライブ\text\sample_text_ja.txt", "w") as text_file:
    text_file.write(text_ja)

詳細を解説していきます

必要なライブラリをimportします
入っていない方はインストールしてください

import requests
import os
from dotenv import load_dotenv

dotenvを使って、APIキーを.envファイルから読み込みます
dotenvの使い方は以前の記事で紹介していますので、参考にしてください

load_dotenv()
DEEPL_API_KEY=os.environ["DEEPL_API_KEY"]

次にテキストファイルのパスを指定して、with open を使ってファイルを開き、textに代入します

テキストファイルの作成方法として、以前の記事で、youtubeの動画から文字起こしをしてテキストファイルにする方法を紹介していますので参考にしてください

t_path=r"G:\マイドライブ\text\sample_audio.txt"

with open(t_path, encoding='utf-8') as f:
    text = f.read()

APIで送るパラメーターを指定します
“source_lang” には入力ファイルの言語を指定して、”target_lang” には出力する言語を指定します

params = {
            "auth_key": DEEPL_API_KEY,
            "text": text,
            "source_lang": 'EN',
            "target_lang": 'JA'
        }

APIでリクエストするURLを指定します

request = requests.post("https://api-free.deepl.com/v3/translate", data=params)

出力されるデータは以下のようなJSON形式で出力されます

{
    "translations": [
        {
            "detected_source_language": "{認識した翻訳元文字列の言語}",
            "text": "{翻訳結果}"
        }
    ]
}

結果をJSON形式で開きます
JSON形式のtextを変数text_jaに格納して、print文で表示します

result = request.json()
text_ja=result["translations"][0]["text"]
print(text_ja)

最後に、翻訳後のテキストを別のテキストファイルとして保存します

with open(r"G:\マイドライブ\text\sample_text_ja.txt", "w") as text_file:
    text_file.write(text_ja)

これで、DeepL APIを使って、テキストの翻訳が簡単にできました
ほぼ無料で使えて、英語の動画をwhisperを使ってテキストにした後や、PDFをテキスト抽出した後の作業に使えると思いますので、ぜひ活用してみてください

コメント