Azure

Azure Cognitive Servicesのドキュメント翻訳機能で翻訳してみる。

はじめに

Azure Cognitive Servicesにはドキュメント翻訳があります。これ元のドキュメント構造とデータ形式を保持しながら翻訳してくれます。DeeplやGoogleでもドキュメント翻訳があります。似たようなものですが、これは自分でアプリを作成したりできるものです。

ドキュメント翻訳は2種類の方法があります。REST APIとクライアント ライブラリ SDKです。前者はWebサービスのようなもので使ったり、後者はクライアントアプリケーションで利用したりできると思います。

今回はREST APIを利用してドキュメントを翻訳してみたいと思います。

Azure Blobに保存されたドキュメントを翻訳を翻訳します。

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

ドキュメントを翻訳

ドキュメント翻訳を使ってみる - Azure Cognitive Services | Microsoft Docs
ドキュメント翻訳を使ってみる - Azure Cognitive Services | Microsoft Docs

C#、Go、Java、Node.js、または Python のプログラミング言語とプラットフォームを使用してドキュメント翻訳サービスを作成する方法

docs.microsoft.com

最初にドキュメント翻訳を立ち上げます。

Translatorで検索して作成を行います。

名前は、一意の値です。他に利用されている場合は使えません。

価格レベルはStantardを選択します。Freeではドキュメント翻訳が行えません。

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

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

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

Blobの作成

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

作成したBlobに翻訳したいドキュメントを配置します。

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

それぞれにSASを発行します。

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

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

それぞれ発行されたURLをコピーしておきます。閉じると再確認できません。

今回はソースコンテナーに翻訳するドキュメントを設置します。サンプルとして、マイクロソフト クラウド契約のPDFを配置します。約1万5千字です。追加の費用は掛からないと思います。

https://download.microsoft.com/download/2/C/8/2C8CAC17-FCE7-4F51-9556-4D77C7022DF5/MCA2017Agr_Asia_JPN_JPN_Sep20172_CR.pdf
https://download.microsoft.com/download/2/C/8/2C8CAC17-FCE7-4F51-9556-4D77C7022DF5/MCA2017Agr_Asia_JPN_JPN_Sep20172_CR.pdf

download.microsoft.com

ドキュメントを翻訳する

ドキュメント翻訳には、キーを事前に確認します。

またPOSTするためのURLは以下のようになります。

https://ドキュメント翻訳のリソース名.cognitiveservices.azure.com/translator/text/batch/v1.0/batches

では実際に翻訳していきます。

今回は、ソースコンテナー内のファイルをすべて翻訳していきたいともいます。翻訳語の言語はlanguageで英語を指定します。

翻訳できる言語は以下です。

言語のサポート - Translator - Azure Cognitive Services | Microsoft Docs
言語のサポート - Translator - Azure Cognitive Services | Microsoft Docs

Cognitive Services Translator では、Neural Machine Translation (NMT) を利用したテキスト対テキストの翻訳で、以下の言語をサポートしています ...

docs.microsoft.com

{
    "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ラインに変換します。

DevTokysの機能一覧 - 技術的な何か。
DevTokysの機能一覧 - 技術的な何か。

はじめに DevToysという色々と開発ツールがまとまったアプリがあります。個別にはオンラインだったちオープンソースのツールがごろごろしています。まとまっている点で便利かと思います。 Microsof

level69.net

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を実行して翻訳するようなアプリケーションなら簡単に作れるのではないでしょうか。

-Azure
-