クイック スタート:Bing Visual Search REST API と Python を使用して画像に関する分析情報を取得する

警告

2020 年 10 月 30 日に、Bing Search API は Azure AI サービスから Bing Search サービスに移行されました。 このドキュメントは、参考用としてのみ提供されています。 更新されたドキュメントについては、Bing search API のドキュメントを参照してください。 Bing 検索用の新しい Azure リソースを作成する手順については、「Azure Marketplace から Bing Search リソースを作成する」を参照してください。

このクイックスタートを使用して、Bing Visual Search API を呼び出してみましょう。 この Python アプリケーションは、API に画像をアップロードし、返された情報を表示するものです。 このアプリケーションは Python で記述されていますが、API はほとんどのプログラミング言語と互換性のある RESTful Web サービスです。

前提条件

Azure リソースを作成する

次のいずれかの Azure リソースを作成して、Bing Visual Search API の使用を開始します。

Bing Search v7 リソース

  • ご自身でリソースを削除するまでは Azure portal からご利用いただけます。
  • S9 価格レベルを選択します。

マルチサービス リソース

  • ご自身でリソースを削除するまでは Azure portal からご利用いただけます。
  • 複数の Azure AI サービス全体で同じキーとエンドポイントをアプリケーションに使用します。

アプリケーションを初期化する

  1. 好みの IDE またはエディターで新しい Python ファイルを作成し、次の import ステートメントを追加します。

    import requests, json
    
  2. サブスクリプション キー、エンドポイント、およびアップロードしている画像へのパスのための変数を作成します。 BASE_URI 値には、次のコードのグローバル エンドポイントを使用するか、Azure portal に表示される、お使いのリソースのカスタム サブドメイン エンドポイントを使用することができます。

    
    BASE_URI = 'https://api.cognitive.microsoft.com/bing/v7.0/images/visualsearch'
    SUBSCRIPTION_KEY = 'your-subscription-key'
    imagePath = 'your-image-path'
    
  3. ローカルの画像をアップロードする際には、フォーム データに Content-Disposition ヘッダーが含まれている必要があります。 その name パラメーターを "image" に設定して、filename パラメーターをお使いの画像のファイル名に設定します。 フォームの内容には、画像のバイナリ データが含まれます。 アップロードできる画像の最大サイズは、1 MB です。

    --boundary_1234-abcd
    Content-Disposition: form-data; name="image"; filename="myimagefile.jpg"
    
    ÿØÿà JFIF ÖÆ68g-¤CWŸþ29ÌÄøÖ‘º«™æ±èuZiÀ)"óÓß°Î= ØJ9á+*G¦...
    
    --boundary_1234-abcd--
    
  4. 要求のヘッダー情報を保持するディクショナリ オブジェクトを作成します。 お使いのサブスクリプション キーを Ocp-Apim-Subscription-Key 文字列とバインドします。

    HEADERS = {'Ocp-Apim-Subscription-Key': SUBSCRIPTION_KEY}
    
  5. お使いの画像を格納する別のディクショナリを作成します。この画像は、要求を送信するときに開かれてアップロードされます。

    file = {'image' : ('myfile', open(imagePath, 'rb'))}
    

JSON 応答を解析します

print_json() という名前のメソッドを作成します。このメソッドは、API 応答を受け取り、JSON を出力します。

def print_json(obj):
    """Print the object as json"""
    print(json.dumps(obj, sort_keys=True, indent=2, separators=(',', ': ')))

要求を送信する

requests.post() を使用して、要求を Bing Visual Search API に送信します。 エンドポイント、ヘッダー、およびファイル情報の文字列を含めます。 print_json() を使用して response.json() を出力します。

try:
    response = requests.post(BASE_URI, headers=HEADERS, files=file)
    response.raise_for_status()
    print_json(response.json())
    
except Exception as ex:
    raise ex

次のステップ