はじめに
Azure Cognitive Servicesにはドキュメント翻訳があります。これ元のドキュメント構造とデータ形式を保持しながら翻訳してくれます。DeeplやGoogleでもドキュメント翻訳があります。似たようなものですが、これは自分でアプリを作成したりできるものです。
ドキュメント翻訳は2種類の方法があります。REST APIとクライアント ライブラリ SDKです。前者はWebサービスのようなもので使ったり、後者はクライアントアプリケーションで利用したりできると思います。
今回はREST APIを利用してドキュメントを翻訳してみたいと思います。
Azure Blobに保存されたドキュメントを翻訳を翻訳します。

注意すべきこととしてはドキュメント翻訳は高額です。この機能を利用するには最低限S1 Standardである必要があります。間違ってS2 Standardを選択しないように気を付けてください。月23万円請求されます。

ドキュメントを翻訳
最初にドキュメント翻訳を立ち上げます。
Translatorで検索して作成を行います。
名前は、一意の値です。他に利用されている場合は使えません。
価格レベルはStantardを選択します。Freeではドキュメント翻訳が行えません。

ネットワークは外部からREST APIを利用するので。すべてのネットワークからアクセスできるようにします。

マネージドIDは利用しません。

作成します。以上で作成は完了です。

Blobの作成
ストレージアカウントを作成します。特別な設定はありません。

作成したBlobに翻訳したいドキュメントを配置します。
ソース(翻訳前のドキュメント)を配置するコンテナーと、ターゲット(翻訳後のドキュメント)を配置するコンテナーを作成します。

それぞれにSASを発行します。
ソース(source)コンテナーには読み取りとリストを許可します。

ターゲット(target)コンテナーには書き取りとリストを許可します。

それぞれ発行されたURLをコピーしておきます。閉じると再確認できません。
今回はソースコンテナーに翻訳するドキュメントを設置します。サンプルとして、マイクロソフト クラウド契約のPDFを配置します。約1万5千字です。追加の費用は掛からないと思います。
ドキュメントを翻訳する
ドキュメント翻訳には、キーを事前に確認します。

またPOSTするためのURLは以下のようになります。
https://ドキュメント翻訳のリソース名.cognitiveservices.azure.com/translator/text/batch/v1.0/batches
では実際に翻訳していきます。
今回は、ソースコンテナー内のファイルをすべて翻訳していきたいともいます。翻訳語の言語はlanguageで英語を指定します。
翻訳できる言語は以下です。
{
"inputs": [
{
"source": {
"sourceUrl": "https://doctranslatorfiles.blob.core.windows.net/source?sp=rl&st=2022-07-30T16:13:11Z&se=2022-07-31T00:13:11Z&spr=https&sv=2021-06-08&sr=c&sig=G8rCOE4o5LDJDKHu1n33KWqWWje2GhpCQuZbfoO8NMw%3D"
},
"targets": [
{
"targetUrl": "https://doctranslatorfiles.blob.core.windows.net/target?sp=wl&st=2022-07-30T16:14:29Z&se=2022-07-31T00:14:29Z&spr=https&sv=2021-06-08&sr=c&sig=HezudNlbSLWpmvdCW7mqfopqTLfSIHChq%2Ft0HhvWVh0%3D",
"language": "en"
}
]
}
]
}
これの情報をもとにcurlで実行してみましょう。
JsonはDevToyなどで1ラインに変換します。
curlは以下のようになります。
curl -X POST "(POST URL)" -H "Ocp-Apim-Subscription-Key:(キー)" -H "Content-Type: application/json" -d '(1ラインに変換したJSON)'
| POST URL | https://doctranslator-01.cognitiveservices.azure.com/translator/text/batch/v1.0/batches |
| キー | 0cc4e3289f9c44cfa54f63fce20c1cce |
| 1ラインに変換したJSON | {"inputs":[{"source":{"sourceUrl":"https://doctranslatorfiles.blob.core.windows.net/source?sp=rl&st=2022-07-30T16:13:11Z&se=2022-07-31T00:13:11Z&spr=https&sv=2021-06-08&sr=c&sig=G8rCOE4o5LDJDKHu1n33KWqWWje2GhpCQuZbfoO8NMw%3D"},"targets":[{"targetUrl":"https://doctranslatorfiles.blob.core.windows.net/target?sp=wl&st=2022-07-30T16:14:29Z&se=2022-07-31T00:14:29Z&spr=https&sv=2021-06-08&sr=c&sig=HezudNlbSLWpmvdCW7mqfopqTLfSIHChq%2Ft0HhvWVh0%3D","language":"en"}]}]} |
これをREST APIで実行します。
curl -X POST "https://doctranslator-01.cognitiveservices.azure.com/translator/text/batch/v1.0/batches" -H "Ocp-Apim-Subscription-Key:0cc4e3289f9c44cfa54f63fce20c1cce" -H "Content-Type: application/json" -d '{"inputs":[{"source":{"sourceUrl":"https://doctranslatorfiles.blob.core.windows.net/source?sp=rl&st=2022-07-30T16:13:11Z&se=2022-07-31T00:13:11Z&spr=https&sv=2021-06-08&sr=c&sig=G8rCOE4o5LDJDKHu1n33KWqWWje2GhpCQuZbfoO8NMw%3D"},"targets":[{"targetUrl":"https://doctranslatorfiles.blob.core.windows.net/target?sp=wl&st=2022-07-30T16:14:29Z&se=2022-07-31T00:14:29Z&spr=https&sv=2021-06-08&sr=c&sig=HezudNlbSLWpmvdCW7mqfopqTLfSIHChq%2Ft0HhvWVh0%3D","language":"en"}]}]}'
実行後にターゲットコンテナーを確認します。
翻訳された文章が保存されていることを確認します。

綺麗に翻訳されています。
以上で翻訳の一番簡単な方法を紹介しました。
まとめ
ドキュメント翻訳を利用して簡単に翻訳できます。世の中には有料サービスが結構ありますがこれでも問題ないんじゃないかなって思います。BlobにアップロードしてREST APIを実行して翻訳するようなアプリケーションなら簡単に作れるのではないでしょうか。

