🎉

【Azure】- Azure AI services multi-service accountって何?

2024/12/23に公開

執筆日

2024/12/20

やること

MicrosoftのDocsを読んでいて、Azure AI services multi-service accountに出会いました。
うん?なんだこれ?と思い、調べたことをまとめようかなと。

Azure AI services multi-service accountとは?

以下のAzureのAIサービスをを1つの統一されたアカウントで管理するための仕組みです。

  • Custom Vision
  • Document Intelligence
  • Face
  • Language
  • Speech
  • Translator
  • Vision

SKUは?

Freeはなく、Standardのみ。
Freeを使いたい場合は、個別でサービスを構築する必要がある。

構築する

  1. Azure Portalを開く
  2. 検索欄で「Azure AI services multi-service account」と検索し、「Azure AI services multi-service account」をクリックする
  3. 「+作成」をクリックする
  4. 必要なパラメータを入力し、構築する

いつくかのAIサービスで動かしてみる

Document Intelligence

以下のコードを実行(Azure Document intelligenceを動かすときと同じコード)

https://zenn.dev/headwaters/articles/8e23a752096c1e

main.py
import time
from azure.ai.formrecognizer import DocumentAnalysisClient
from azure.core.credentials import AzureKeyCredential
from datetime import datetime

# 設定を読み込み
endpoint = <"endpoint">
api_key = <"key">

# クライアントを作成
client = DocumentAnalysisClient(
    endpoint=endpoint, credential=AzureKeyCredential(api_key)
)

# ファイルを読み込んで
file_path = <"ファイルパス">
with open(file_path, "rb") as file:
    print(f"{datetime.now()}: アップロード開始")

    # 分析開始
    poller = client.begin_analyze_document("prebuilt-document", file)

    # ステータスが完了になるまでポーリング
    while not poller.done():
        print(f"{datetime.now()}: Waiting...")
        time.sleep(3)

    # 結果を取得
    result = poller.result()

print(f"{datetime.now()}: 完了!!")
print(result)

Azure AI services multi-service accountのPortalからDocument intelligence studioに行くこともできる。

Translator

以下のコードを実行(Azure AI Translatorを動かすときと同じコード)

https://zenn.dev/headwaters/articles/6a6d36e9a62912

main.py
import requests
import uuid
import json


def translate(text):
    # キーとエンドポイントを設定
    key = <"key">
    endpoint = "https://api.cognitive.microsofttranslator.com"

    # リージョンを設定
    location = "japaneast"

    # postするURLを作成
    path = "/translate"
    constructed_url = endpoint + path

    # APIのバージョンと変換元言語、変換先言語を指定する
    params = {"api-version": "3.0", "from": "en", "to": ["ja"]}  # 変換先の言語

    # ヘッダー設定
    headers = {
        "Ocp-Apim-Subscription-Key": key,
        "Ocp-Apim-Subscription-Region": location,
        "Content-type": "application/json",
        "X-ClientTraceId": str(uuid.uuid4()),
    }

    # ボディ設定
    body = [{"text": text}]

    # 翻訳をかける
    request = requests.post(constructed_url, params=params, headers=headers, json=body)
    response = request.json()

    # 結果を表示
    print(
        json.dumps(
            response,
            sort_keys=True,
            ensure_ascii=False,
            indent=4,
            separators=(",", ": "),
        )
    )
    return response


# テスト用
translate("Hello, world!")

https://zenn.dev/headwaters/articles/6a6d36e9a62912

Vision

以下のコードを実行(OCRを実施)

main.py
from azure.cognitiveservices.vision.computervision import ComputerVisionClient
from azure.cognitiveservices.vision.computervision.models import OperationStatusCodes
from msrest.authentication import CognitiveServicesCredentials

key = <"key">  
endpoint = <"endpoint">  

computervision_client = ComputerVisionClient(
    endpoint, CognitiveServicesCredentials(key)
)


image_path = <"ファイルパス">  # URL or ローカルファイルパス


# OCRを実行
def perform_ocr(image_path):
    if image_path.startswith("http"):
        # 画像がURLの場合
        ocr_result = computervision_client.read(url=image_path, raw=True)
    else:
        # 画像がローカルファイルの場合
        with open(image_path, "rb") as image_file:
            ocr_result = computervision_client.read_in_stream(image_file, raw=True)

    # 結果を取得
    operation_location = ocr_result.headers["Operation-Location"]
    operation_id = operation_location.split("/")[-1]

    # 結果が準備されるのを確認
    while True:
        result = computervision_client.get_read_result(operation_id)
        if result.status not in ["notStarted", "running"]:
            break

    # 認識結果を表示
    if result.status == OperationStatusCodes.succeeded:
        for text_result in result.analyze_result.read_results:
            for line in text_result.lines:
                print(f"テキスト: {line.text}")
                print(f"位置情報: {line.bounding_box}")
    else:
        print("OCR処理に失敗しました。")


# OCRを実行
perform_ocr(image_path)

まとめ

Azure AI services multi-service accountをかるく紹介しました。このサービスを利用することで、Custom Vision、Document Intelligence、Face、Language、Speech、Translator、Visionといった複数のAIサービスを一つの統一されたアカウントで管理することができます。これにより、各サービスの設定や管理が簡単になり、開発の効率上がるなーと感じました。

ヘッドウォータース

Discussion