azukipochette's weblog

memory dump (mini)

deepL REST API で XML タグを含む文字列を渡すと課金はどうなるかを検証

日本語への翻訳が群を抜いていると話題の deepL ですが、有償版である deepL Pro の開発者向けプランでは、deepL の翻訳サービスを REST API として呼び出す事ができます。
私は PowerPoint のスライドを翻訳するアプリを作り、内部の翻訳エンジンに deepL を使うことにしました。

www.deepl.com

deepL が提供する REST API では、パラメータに tag_handling=xml と指定することで、XML タグを考慮して翻訳してくれます。
これにより、タグによって修飾(色、フォント サイズ、強調など)されている箇所を気にせず、そのまま翻訳することができます。

しかし、気になるのが課金対象となる「文字数」です。 REST API に渡したテキストの文字数なのか、タグを除いた翻訳対象となる文字数なのかがよく分かりません。

そこで、実際に実験してみました。

まず PowerPoint のスライドを解析し、パラグラフを取得します。実際のデータは以下の通りです。

<a:r xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"><a:rPr lang="en-US" dirty="0" /><a:t>Developing Cross-Platform Web Apps With Blazor</a:t></a:r>

これを REST API で翻訳した結果 (JSON) は以下の通りです。

{
  "translations": [
    {
      "detected_source_language": "EN",
      "text": "<a:r xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\"><a:rPr lang=\"en-US\" dirty=\"0\" /><a:t>BlazorでクロスプラットフォームのWebアプリを開発する</a:t></a:r>"
    }
  ]
}

ダッシュボードで確認したところ、課金対象となっているのは 46 文字 ($0.12) でした。 「翻訳した文字数」で課金されていますので、安心して XML タグを投げられますね。 :-)