Azure AI ドキュメント翻訳 の 環境構築手順

# はじめに
Azure AI ドキュメント翻訳 のための Azure リソースの構成手順となります。
構築が完了すると、Language Studio という フロントエンドの UI を使って、簡単に ドキュメント翻訳を実施できるようになります。
それから、開発言語や PowerPlatform から ドキュメント翻訳 を実行するための下地の環境も この手順で構築できます。

## 私が ドキュメント翻訳に手を出した経緯
ドキュメント翻訳をやってみたいと思った経緯などは、以下の記事に投稿してありますので、参照いただければと思います。

https://qiita.com/carol0226/items/1627d3bcb8449876434a

## Language Studio を使った ドキュメント翻訳 の操作の流れ
以下の記事で、Language Studio を使った際の ドキュメント翻訳 の操作内容を画面キャプチャ付きで紹介しています。いわば、完成したら こういう動きをするよ・・・という内容です。

https://qiita.com/carol0226/items/09821bca4f0946ec8c51

# 1. 構築前の準備
Azure AI ドキュメント翻訳 を使うためには、Azure AI Translator と Azure ストレージアカウント の２種類の Azure リソース が必要です。
この２つを利用するためには、Azure サブスクリプション が必要です。
既に、利用中の Azure でも良いですし、下記の記事を参考に Azure サブスクリプション を無料でサインアップすることも可能です。

https://qiita.com/carol0226/items/066c06d95cb68427f1d0

# 2. 構築手順
２章では、以下の公開情報の内容を画面付き手順で説明しています。
さらに、本記事では、この公開情報の手順だけでは動作しないことも判明しており、追加の設定についても説明しています。

https://learn.microsoft.com/ja-jp/azure/ai-services/translator/document-translation/how-to-guides/create-use-managed-identities?wt.mc_id=mvp_407731

## 2-1. Azure AI Translator リソースの作成
0. Azure Portal に 管理者アカウントで サインインします。
https://portal.azure.com
　<br>
0. 検索で Azure AI services 探して、選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/c7bce86e-94e6-39ba-17f0-c42f682dff3c.png)
　<br>
0. 左ペインで「翻訳」を選び「作成」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/2668fe18-2874-0564-0b1c-527596d564d6.png)
　<br>
0. 「基本」タブでは「新規作成」を押して リソースグループ名 を決めて「OK」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/c4733a29-b445-708a-ba05-128463a08cf5.png)
　<br>
0. 引き続き「基本」タブで、各項目を設定して、「次へ」を押します。
・ リージョン ＝ ★Translator がサポートされたリージョン を必ず選びます。
・ 名前　＝　[任意の名前]
・ 価格レベル　＝　S1 または D3 を選択します。
　※S1 と D3 だけが、ドキュメント翻訳 をサポートしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/836a097b-2f2f-68e6-cf82-3af36a62fcc1.png)

:::note warn
（★サポートされているリージョン）
このリンク先に記載されているリージョンだけが、ドキュメント翻訳をサポートしています。誤りの無いように選択してください。
https://learn.microsoft.com/ja-jp/azure/ai-services/translator/document-translation/language-studio?tabs=local-env&wt.mc_id=mvp_407731#supported-regions
:::

6．既定値のまま「次へ」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/49730402-c668-5759-f8ce-262793d129df.png)

7．「Identity」タブでは、必ず「システム割り当てマネージド ID」の状態 を「オン」にして「確認と作成」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/7ff6e773-7bbb-0e26-71c0-f966f040af6b.png)

8．以下の確認画面が表示されたら「作成」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/6b5057b4-96b0-dfa1-6dba-a825d79594c2.png)

9．リソースがデプロイされると、以下の画面になるので「リソースに移動」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/86919319-0d40-d47f-626d-23ee55274414.png)

10．作成されたリソースの画面は、以下のようになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/a22a2303-bd7f-3004-b07e-a4a51eceebe4.png)

## 2-2. Azure ストレージアカウントの作成
0. Azure Portal に 管理者アカウントで サインインします。
https://portal.azure.com
　<br>
0. 検索で ストレージアカウント を探して、選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/42b92075-c725-6e3c-90cf-73c14b0af728.png)
　<br>
0. 「作成」を押して、ストレージアカウント の作成を開始します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/7822cf3d-41a0-cc45-50d8-221db62dac43.png)
　<br>
0. 以下の情報を入力して、最後に「レビュー」を押します。
・ リソースグループ　＝　任意
　※ Translator と同じリソースグループが分かりやすいと思います。
・ ストレージアカウント名　＝　任意（全世界の Azure 内でユニークな名称）
・ 地域　＝　★要注意★
　※Translator リソースと同一のリージョンにする必要があります。
・ パフォーマンス　＝　任意（Standardで十分）
　※Premium だと固定コストが発生します。
・ 冗長性　＝　任意（ローカル冗長ストレージ LRS で十分）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/5d6b90d6-ed36-0885-ec83-777233900c3b.png)
　<br>
0. 「レビュー」タブで内容を確認して「作成」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/d6275d44-e597-8b2c-cde3-6f8fced8f050.png)
　<br>
0. デプロイが完了したら「リソースに移動」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/b3b4895b-df3d-d256-34e7-4d97c3d66c5e.png)
　<br>
0. 作成されたリソースの画面は、以下のようになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/ac2199c7-2562-7d68-b219-66403699cee5.png)

## 2-3. ネットワークの設定
前章に続けて、ストレージアカウントで操作を行います。

0. 左ペインで「ネットワーク」を選び「ファイアウォールと仮想ネットワーク」タブで、「選択した仮想ネットワークと IP アドレスから有効」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/35033db1-c592-d144-f8be-db25d98b897a.png)
　<br>
0.  「ファイアウォールと仮想ネットワーク」タブのまま、さらに下へスクロールして、各項目を指示通りの設定を行います。
（緑枠）リソースインスタンス
　リソースの種類 ＝ "Microsoft.CognitiveServices/accounts"
　インスタンス名 ＝ [前章で作成した Azure AI Translator リソース の名称]
（紫枠）例外
　「信頼されたサービスの一覧にある Azure サービスがこのストレージ アカウントにアクセスすることを許可します。」だけにチェックを入れる。他は チェックを外す。
（橙枠）ネットワークルーティング
　「Microsoft ネットワークルーティング」を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/e4a44c96-dfaf-86a6-5b1b-7d343b6523c0.png)

3．「ファイアウォールと仮想ネットワーク」タブのまま、一番上までスクロールして「保存」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/ed659577-3b1b-8ab4-4cde-3400449ac530.png)

:::note info
この操作で、ストレージアカウントに対して、Translator リソースからのアクセスのみを許可されます。
ストレージアカウントを 他の用途でも使用する場合は、その場所やリソースからのアクセス許可も与えてください。
:::

## 2-4. マネージド ID
Translator リソースに、マネージド ID で、"ストレージ BLOB データ共同作成者" を付与します。こうすることで、Translator リソースが 前章で作成した ストレージアカウントを操作することが出来るようになります。

0. Translator リソースを開き、左ペインから「ID」を選び、「システム割り当て済み」タブから、「Azure ロールの割り当て」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/12e1fa46-06c3-52ae-7482-4946e04e68c0.png)
　<br>
0. 「ロールの割り当ての追加」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/8dd23003-f675-ee0c-a734-ba347e103da8.png)
　<br>
0. 以下の設定値を選択して、「保存」を押します。
　スコープ　＝　"ストレージ"
　リソース　＝　[Translator リソース名]
　役割　＝　"ストレージ BLOB データ共同作成者"
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/3a423b6e-c8da-3e0c-0841-caa11847771a.png)
　<br>
0. ロールが作成されると、以下の画面のように 一覧に表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/2f0d9586-e06d-5e80-e964-cd3cf62461fb.png)

## 2-5. CORS
ココが一番のハマりどころです。
公開情報には、この設定について記載がありません。
しかし、公開情報の手順だけだと、ドキュメント翻訳時に以下のエラーが出て 使うことができませんでした。
"Unknown : A server error occurred. Please refresh the page and try again."

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/52a4b109-068e-e96e-5474-fb748478b9d0.png)
実は、Language Studio の初期設定の際に、以下の画面で Blob ストレージを選択する箇所があるのですが、ストレージを選択したあと、しばらくこの画面で放置していると出るエラーメッセージです。かなり気づきづらいですが。これを不意に見かけたので、問題に気が付くことができて、対処することができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/1342fbba-138c-dac8-5aa2-caa12c8692fe.png)


以下に紹介する CORS の設定を行うことで、問題解決できました。

0. ストレージアカウントを開き、左ペインから「リソースの共有 (CORS)」を選択します。
続けて、以下の設定値を入力して、「保存」ボタンを押します。
　許可されたオリジン　＝　＊
　許可されたメソッド　＝　８個すべてのチェックを ON
　許可されたヘッダー　＝　＊
　公開されるヘッダー　＝　＊
　最長有効時間　＝　200
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/2cacf01f-8472-77e5-43e9-c1a9295465f2.png)
　<br>
0. 保存が完了すると、以下の通知メッセージが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/7df33035-513c-a66f-b0d9-84f38077be52.png)

# 3. Language Studio の初期設定
２章の構成が完了すると、Azure AI Translator が利用できる状態です。
３章では、Language Studio が Azure AI Translator を使って ドキュメント翻訳が行うことができるように初期設定します。
この設定は、PC 上の ブラウザー単位で設定が記憶されるようなので、PC や ブラウザー が異なる環境で操作する際に、都度 設定してください。
同一のブラウザーで操作する場合は、１回の設定のみで大丈夫です。

## 3-1. 日本語化
0. Language Studio にアクセスします。
https://language.cognitive.azure.com
　<br>
0. 右上の 歯車マーク を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/a4ce8b65-73f9-d85d-5052-24707c3e70f8.png)
　<br>
0. General タブ から 日本語化 できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/5e2a00d0-c0d5-dcc7-5563-d5ddaaa00de3.png)

## 3-2. テナント と サブスクリプションの割り当て
Language Studio が利用する Translator リソースと、ストレージアカウント を割り当てておく必要があります。

0. Language Studio に接続します。
https://language.cognitive.azure.com/home
　<br>
0. 「ドキュメントの翻訳」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/7ebc27fd-fa78-d7de-1396-d34239ccbf3d.png)
　<br>
0. 「Azure でサインインする」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/9faeb577-607e-cc23-398d-2f864a07f41d.png)
　<br>
0. テナントのユーザーでサインインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/7877b044-e502-d169-e3b3-2031567443e3.png)

:::note warn
**注意** 2025/2/15 追記
昔は、個人アカウントで入れていたのですが、いまは、組織アカウントである必要があるようです。
Microsoft Entra ID から 組織アカウント（グローバル管理者）追加して、リトライしてみてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/29a53669-b338-4090-9f47-f3294f45aa37.png)
:::

5．＞ を数回 押して画面を送ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/37d77871-e884-4476-3b82-928e58010208.png)

6．「リソースの選択」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/876c1500-4027-e06f-f3fa-f9f19e8bb0f6.png)

7．以下の画面で Language Studio で利用する Azure ディレクトリ（Microsoft Entra テナントのこと）と、Azure サブスクリプション を選択する必要があります。
その後、事前に作成しておいた Translator リソース を選択して「完了」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/64b709bd-1684-68d7-817f-782c305a5dc9.png)

8．緑枠（Translatorリソース）と 水色枠（ストレージアカウント）を選択して、「次へ」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/ffc9e546-aed7-2d2a-4585-f55a9f7a9c3a.png)

# 4. Language Studio を使った ドキュメント翻訳の実行
前章までの設定で、準備が完了しました。
さっそく、Language Studio を使って ドキュメント翻訳を実行してみましょう。
操作手順については、以下の記事に記載してあります。

https://qiita.com/carol0226/items/09821bca4f0946ec8c51

# Next Step
Language Studio で Azure AI Translator を利用できるようになりました。
これが出来ていれば、Language Studio の部分を Power Automate や 開発言語 に置き換えて、Azure AI Translator（ドキュメント翻訳）を利用することが出来る状態です。

以下の記事の内容を参考に、さらに 発展した ドキュメント翻訳 にチャレンジいただけると思います。

## Next Step : REST API トリガーによる ドキュメント翻訳
ストレージアカウントに ドキュメントを保存しておき、REST API からキックすることで、ドキュメント翻訳を行い、ストレージアカウントに翻訳結果を保存します。

https://learn.microsoft.com/ja-jp/azure/ai-services/translator/document-translation/quickstarts/document-translation-rest-api?wt.mc_id=mvp_407731&pivots=programming-language-rest-api

## Next Step : Power Automate Translator V3 コネクタ によるドキュメント翻訳
ストレージアカウントに ドキュメントを保存しておき、Power Automate からキックすることで、ドキュメント翻訳を行い、ストレージアカウントに翻訳結果を保存します。
Share Point からの翻訳にも対応しています。

https://learn.microsoft.com/ja-jp/azure/ai-services/translator/connector/document-translation-flow?wt.mc_id=mvp_407731&tabs=blob-storage

# 参考
同僚の atsmin77 さんも 同じ方法でドキュメント翻訳の記事を投稿しています。こちらも参考にしてみてください。

https://qiita.com/atsmin77/items/47afd9e2893a6f59ec8f