広告

【DeepL API】Pythonのクライアントライブラリで本格実装

Python

当サイトではアフィリエイト広告を利用しています。

広告

はじめに

前回の記事では、DeepLの無料のAPIへ登録し、サンプルコードを実装してみました。
今回は、DeepL公式が公開している、Pythonのクライアントライブラリを利用して、実践向けの実装を行っていきます。

【DeepL】APIの登録とサンプルコード実装
WebブラウザからDeepLを開き翻訳することができますが、今回はAPIを利用し、プログラムから翻訳できるようにしてみようと思います。

他にも私のブログで、Pythonについて解説している記事がありますのでご覧ください。

使用するバージョンなど
  • Windows 11 or macOS Monterey (M1)

2022/04/20 WindowsとMacを使い、最新バージョンで確認しました。

DeepL API Pythonのクライアントライブラリ

前回の記事では、PythonやcurlコマンドでDeepL APIを呼び出し、翻訳結果を取得しました。

DeepL公式でPython向けのクライアントライブラリが公開されています。
これを利用すると、もっと便利に簡単にコーディングができます。

DeepL APIで使えるPythonのクライアントライブラリ
多くの人が日々DeepL翻訳を使う理由。それはスピーディ、正確かつ安全に翻訳できるからです。テキストの翻訳も文書の丸ごと翻訳も瞬時にできる便利さをご体感ください。

DeepL APIで使えるPythonのクライアントライブラリを公開しました。プログラミング言語で書かれた、DeepL APIのための初めてのライブラリです。Pythonを扱う開発者に、DeepLを使ったアプリケーションをよりスムーズに構築してもらうことが目的です。

https://www.deepl.com/ja/blog/announcing-python-client-library-for-deepl-api

オープンソースで公開されており、意見や新機能追加のリクエストはGitHubでやり取りできるようになっています。

GitHub – DeepLcom/deepl-python: Official Python library for the DeepL language translation API.
Official Python library for the DeepL language translation API. – DeepLcom/deepl-python

VS Codeの用意

VS Codeのインストール方法は、以下の記事にまとめましたのでご覧ください。

【VS Code】インストール手順を解説 【Windows/M1 Mac対応】
今回はVS Codeのインストール手順を解説します。WindowsとMacのそれぞれ分けてまとめました。

設定方法は以下を参考にしてください。

【VS Code】オススメの設定・拡張機能・便利機能・ショートカット【Win/Mac対応】
私的に最初に行う設定や、拡張機能、よく使うショートカットや便利な機能をまとめてみました。

ライブラリのインストール

python環境で、pipコマンドでDeepLのクライアントライブラリをインストールすることができます。

pip install --upgrade deepl

Python環境の開発については、個人的にVS CodeでDockerを利用したリモート開発をオススメしています。

【VSCode/Dev Containers】DockerでPython開発【Win/Mac】
VS CodeでDockerコンテナを使いリモート開発を試してみました。Dockerを使いPython環境を用意し、VS Codeでリモートデバッグを行いないます。

実装

認証キー

事前に認証キーを取得する必要があります。
以下の記事を参考にしてください。

【DeepL】APIの登録とサンプルコード実装
WebブラウザからDeepLを開き翻訳することができますが、今回はAPIを利用し、プログラムから翻訳できるようにしてみようと思います。

初期化

最初に、Translatorオブジェクトを生成します。

import deepl

translator = deepl.Translator("認証キー")

例えばソースコードをGitHubにプッシュすることを考えると、なるべく認証キーをコードに埋め込まないほうが良いでしょう。
OSの環境変数にキーと値(認証キー)を設定しておき、コード上では以下のように認証キーを取得する方が安全かと思います。

import deepl

translator = deepl.Translator(os.getenv("DEEPL_AUTH_KEY"))

どちらの方法でも構いませんが、認証キーは絶対に他人に知られないように注意が必要です。

日本語へ翻訳

英語を日本語へ翻訳してみましょう。
target_langは「JA(日本語)」を指定します。

result = translator.translate_text("This is a pen.", target_lang="JA")
print(result)

実行結果は、以下になります。
正しく翻訳結果を取得することができました。

これはペンです。

広告

ドキュメントの翻訳

例えば、Wordで作成されたファイルを翻訳することができます。
以下のようなファイルを用意しました。

以下のコードで、ドキュメントの翻訳ができます。
引数はファイル名を指定します。

translator.translate_document_from_filepath(
    "translate-test.docx",
    "translate-test-ja.docx",
    target_lang="JA"
)

Wordファイルが新たに作成され、文章は翻訳されていました。

対応しているファイルは以下です。

  • 「docx」- Word ドキュメント
  • 「pptx」- Power Point ドキュメント
  • 「pdf」- PDF
  • 「htm / html」- HTML
  • 「txt」- テキスト

このドキュメントの翻訳機能については、文字数に関係なく最低5万文字が消費される点に注意が必要です。

Quickstart – DeepL Documentation

Please note that with every submitted document of type .pptx.docx or .pdf you are billed a minimum of 50’000 characters with the DeepL API plan, no matter how many characters are included in the document.

.pptx、.docx、または.pdfタイプのドキュメントを送信するたびに、ドキュメントに含まれる文字数に関係なく、DeepL APIプランで最低50,000文字が課金されることに注意してください。

https://www.deepl.com/ja/docs-api/translating-documents/

マイページの利用状況を確認すると、しっかりと加算されていました。

無料プランの場合、1ヶ月あたり10ファイルの翻訳もできないので、注意しましょう。

例外を拾う

DeepLライブラリを使用して例外が発生した場合は、DeepLExceptionがスローされます。
以下のようにキャッチすることができます。

from deepl.exceptions import DeepLException

try:
    result = translator.translate_text("This is a pen.", target_lang="XX")
except DeepLException as e:
    print(e)

target_langに存在しない言語を指定しているため、以下のエラーが発生します。

Bad request, message: Value for ‘target_lang’ not supported.

利用状況の確認

利用状況については、マイページからも確認できますが、以下のコードでも確認できます。

# Check account usage
usage = translator.get_usage()
if usage.character.limit_exceeded:
    print("Character limit exceeded.")
else:
    print(f"Character usage: {usage.character}")

Character usage: 50215 of 500000

言語の一覧確認

翻訳元の言語、翻訳先の言語の一覧を確認することができます。

翻訳元の言語の一覧です。

print("Source languages:")
for language in translator.get_source_languages():
    print(f"{language.code} ({language.name})")  # Example: "DE (German)"

Source languages:
BG (Bulgarian)
CS (Czech)
DA (Danish)
DE (German)
EL (Greek)
EN (English)
ES (Spanish)
ET (Estonian)
FI (Finnish)
FR (French)
HU (Hungarian)
IT (Italian)
JA (Japanese)
LT (Lithuanian)
LV (Latvian)
NL (Dutch)
PL (Polish)
PT (Portuguese)
RO (Romanian)
RU (Russian)
SK (Slovak)
SL (Slovenian)
SV (Swedish)
ZH (Chinese)

翻訳先の言語の一覧です。

print("Target languages:")
for language in translator.get_target_languages():
    if language.supports_formality:
        print(f"{language.code} ({language.name}) supports formality")
    else:
        print(f"{language.code} ({language.name})")

Target languages:
BG (Bulgarian)
CS (Czech)
DA (Danish)
DE (German) supports formality
EL (Greek)
EN-GB (English (British))
EN-US (English (American))
ES (Spanish) supports formality
ET (Estonian)
FI (Finnish)
FR (French) supports formality
HU (Hungarian)
IT (Italian) supports formality
JA (Japanese)
LT (Lithuanian)
LV (Latvian)
NL (Dutch) supports formality
PL (Polish) supports formality
PT-BR (Portuguese (Brazilian)) supports formality
PT-PT (Portuguese (European)) supports formality
RO (Romanian)
RU (Russian) supports formality
SK (Slovak)
SL (Slovenian)
SV (Swedish)
ZH (Chinese)

用語集

用語集の登録については、ライブラリは対応していますが、現時点では日本語に対応していないようです。
Web版のDeepLを確認しても日本語がないことが確認できます。
今後に期待ですね。

Pythonコマンドで実行

Pythonコマンドから翻訳を実行することもできます。

python3 -m deepl --auth-key=認証キー text --to=DE "Text to be translated."

Zu übersetzender Text.

Webアプリケーションの作成

別な記事ですが、翻訳ができるWebアプリケーションを作成しました。
DjangoでWebアプリケーションを作成し、DeepLを利用して翻訳機能を実装しました。
良かったら以下の記事もご覧ください。

【Django】翻訳できるWebアプリを作ろう【DeepL】
DjangoでWebアプリケーションを作成し、DeepLを利用して翻訳を行います。

さいごに

Pythonを使ってDeepL APIを操作する場合は、このライブラリを使用するととても簡単に翻訳を行うことができます。

ぜひ試してみてください。

他にも私のブログで、Pythonについて解説している記事がありますのでご覧ください。

MacOSPythonWindowsツールツール他プログラミング作ってみよう
広告

個人開発

千草 @chigusaweb

現役のITエンジニア。 気ままにコードを書いたり技術情報を発信しています。 Webアプリ/Windows・Macアプリ/モバイルアプリなど。 (Java, PHP, Javascript, Swift, Python, C#, 他) 個人開発:Clibor, Quipha, TXT-Crypter, 符計算特訓, チグサツール Kindle本: Laravel9 実践入門, 他

クリップボード履歴

Clibor

Windows

Cliborはシンプルで高機能なクリップボード履歴ソフトです。 また普段よく使うワードを定型文として登録し、いつでもクリップボードに保存することができます。高度なテキスト整形・FIFOモード・ホットキーに対応。

クリップボード履歴

Windows版Cliborの利便性を、そのままMacでも。 定型文登録、高度なテキスト整形、FIFOモードなど、便利なクリップボード履歴機能を利用できます。macOS最新のTahoeにも対応。

テキスト暗号化

テキストを暗号化してURLで共有・保存できる無料サービスです。 パスフレーズを知る人だけが復号できます。登録不要、データはサーバーに保存されません。 Notionでも利用できます。

学習

Quipha

Web / iOS

自分だけの問題集や問題を作成し、クイズを行い、学習に活用することができるアプリです。 例えば、学校の授業、語学学習、IT資格やその他の資格など多彩な分野での学習を支援します。 いつでも、どこでも、あなたの学習をサポート。

ツール

日常の「ちょっとした効率化」をサポートするWeb便利ツール集。 テキスト・データ処理から最新のAI連携まで、日々のちょっとした手間でググりがちなユーティリティを1つの場所に集約。

麻雀

麻雀の符計算をひたすら特訓しマスターしましょう。 初心者の方はもちろん、もっと速く計算したい方にも役立ちます。 5万対局以上の実践から問題を収録。

コメント

タイトルとURLをコピーしました