お試し 技術

DeepLAPIを使ってみる

DeepLAPIを使えるように設定する

DeepLのアカウントを作成する

今回は、以下のサイトにある「DeepL API Free」でアカウントを作成し、APIを投げる際に必要となるトークンを取得します。アカウントを作成する際に不正利用防止のため、クレジットカードを登録する必要があるのでちょっとめんどくさいです

公式サイト
DeepL Pro | テキスト、Wordその他の文書ファイルをセキュアに翻訳
DeepL Pro | テキスト、Wordその他の文書ファイルをセキュアに翻訳

スピーディ、正確かつ安全に翻訳。DeepL Proは個人またはチームでご利用いただけます。

続きを読む

アクセストークンを確認する

アカウント作成後、画面右上にあるユーザーIDをクリックし、アカウントタブの下の方にアクセストークンがあります。それを使用してAPIを呼び出すことができます

文字列翻訳を呼び出す

送信するデータは先ほど確認したアクセストークンと翻訳したい言語、今回は日本語を指定しています

string postURL = "https://api-free.deepl.com/v2/translate";
// POSTするデータを作成
WebRequest req = WebRequest.Create(postURL);
req.Method = "POST";
req.Headers.Add("Authorization", $"DeepL-Auth-Key {deepAPIAuthCode}");
req.ContentType = "application/x-www-form-urlencoded";
var postData = "text=" + Uri.EscapeDataString("翻訳したい英文");
postData += "&target_lang=" + Uri.EscapeDataString("JA");  // 日本語に翻訳

上記内容で送信した結果はきちんと翻訳されていました

ファイル内翻訳を呼び出す

ファイルの翻訳は大きく3ステップになります

翻訳したいファイルをアップロードする

今回はWordファイルに英文を記載し、それを翻訳してもらいます

string uploadURL = "https://api-free.deepl.com/v2/document";
var uploadWebRequest = WebRequest.Create(uploadURL) as HttpWebRequest;
uploadWebRequest.Method = "POST";
uploadWebRequest.Headers.Add("Authorization", $"DeepL-Auth-Key {deepAPIAuthCode}");
var multipartContent = new MultipartFormDataContent();
multipartContent.Add(new StringContent("JA"), "target_lang");  // 日本語に翻訳
multipartContent.Add(new ByteArrayContent(File.ReadAllBytes("翻訳したいファイルパス")), "file", "アップロードするファイル名");
uploadWebRequest.ContentType = multipartContent.Headers.ContentType.ToString();
uploadWebRequest.ContentLength = multipartContent.Headers.ContentLength.Value;
using (var stream = uploadWebRequest.GetRequestStream())
{
    multipartContent.CopyToAsync(stream).Wait();
}

アップロードしたファイルの状態を取得

アップロードしたファイルの状態を確認し、翻訳が完了しているようであれば翻訳されたファイルをダウンロードできます

string uploadFileStatusURL = $"https://api-free.deepl.com/v2/document/{documentId}";
//  POSTするデータを作成(アップロードしたファイルのステータス取得用)
WebRequest uploadFileStatusRequest = WebRequest.Create(uploadFileStatusURL);
uploadFileStatusRequest.Method = "POST";
uploadFileStatusRequest.Headers.Add("Authorization", $"DeepL-Auth-Key {deepAPIAuthCode}");
uploadFileStatusRequest.ContentType = "application/x-www-form-urlencoded";
var statusPostData = "document_key=" + Uri.EscapeDataString(documentKey);
var statusData = Encoding.ASCII.GetBytes(statusPostData);
uploadFileStatusRequest.ContentLength = statusData.Length;
using (var stream = uploadFileStatusRequest.GetRequestStream())
{
    stream.Write(statusData, 0, statusData.Length);
}

翻訳されたファイルをダウンロードする

上記で取得したステータスが「done」になっていると翻訳が完了しており、ダウンロードすることができるので、実際にダウンロードします

var translationFileDownloadURL = $"https://api-free.deepl.com/v2/document/{documentId}/result";
//  POSTするデータを作成(翻訳されたファイル取得用)
WebRequest translationFileDownloadRequst = WebRequest.Create(translationFileDownloadURL);
translationFileDownloadRequst.Method = "POST";
translationFileDownloadRequst.Headers.Add("Authorization", $"DeepL-Auth-Key {deepAPIAuthCode}");
translationFileDownloadRequst.ContentType = "application/x-www-form-urlencoded";
var translationPostData = "document_key=" + Uri.EscapeDataString(documentKey);
var translationData = Encoding.ASCII.GetBytes(translationPostData);
translationFileDownloadRequst.ContentLength = translationData.Length;
using (var stream = translationFileDownloadRequst.GetRequestStream())
{
    stream.Write(translationData, 0, translationData.Length);
}

// レスポンスデータを処理(ファイルのダウンロード)
using (var response = translationFileDownloadRequst.GetResponse())
using (var stream = response.GetResponseStream())
{
    using (var fileStream = new FileStream(_outPutFilePath, FileMode.Create, FileAccess.Write))
    {
        stream.CopyTo(fileStream);
    }
}
英文が記載されているWordファイルを用意する
翻訳されていることが確認できる

最後に

今回作成したコードをGitHubにアップロードしていますので、参考にしてください

サンプル
BlogSampleCodeProjects/DeepLAPISample at main · nasuton/BlogSampleCodeProjects · GitHub
BlogSampleCodeProjects/DeepLAPISample at main · nasuton/BlogSampleCodeProjects · GitHub

Project for sample code used in the blog.(Blogで記載しているサンプルコード ...

続きを読む

また、今回紹介している内容は以下のドキュメントに詳しく記載されています

ドキュメント
Introduction | DeepL API Docs
Introduction | DeepL API Docs

Learn more about the DeepL API's capabilities and common use ...

続きを読む

おまけ

curlコマンドをC#に置き換える

ネットでDeepLのことを調べていた際に、curlコマンドをC#に置き換えてくれるというWebサービスを見つけました。このサービスのおかげである程度は楽して作業ができました
よくサンプルでcurlコマンドを使ってのリクエストが書かれていることが多々あるので重宝しそう

公式サイト
curl to C# converter
curl to C# converter

curl to C# converter online

続きを読む

使用状況の確認方法

無料プランだと文字数制限があるので、それを超えないように注意が必要です
その確認方法はアカウントページのご利用状況のタブをクリックすると見れます

-お試し, 技術
-,