快速入門:使用 Bing 圖像式搜尋 REST API 和 Python 取得影像見解

警告

在 2020 年 10 月 30 日,Bing 搜尋 API 已從 Azure AI 服務移至 Bing 搜尋 服務。 本文件僅供參考之用。 如需更新的文件,請參閱 Bing 搜尋 API 文件。 如需針對 Bing 搜尋建立新 Azure 資源的指示,請參閱透過 Azure Marketplace 建立 Bing 搜尋資源

使用本快速入門,第一次呼叫 Bing 圖像式搜尋 API。 此 Python 應用程式會將影像上傳至 API,並顯示它傳回的資訊。 雖然此應用程式是以 Python 撰寫的,但 API 是一種與大多數程式設計語言都相容的 RESTful Web 服務。

Prerequisites

建立 Azure 資源

藉由建立下列其中一項 Azure 資源,開始使用 Bing 圖像式搜尋 API:

Bing 搜尋 v7 資源

  • 您可以透過 Azure 入口網站取得該資源,直到將其刪除為止。
  • 選取 S9 定價層。

多服務資源

  • 您可以透過 Azure 入口網站取得該資源,直到將其刪除為止。
  • 針對您的應用程式,跨多個 Azure AI 服務使用相同的金鑰和端點。

初始化應用程式

  1. 在您慣用的 IDE 或編輯器中建立新的 Python 專案,以及新增下列 import 陳述式:

    import requests, json
    
  2. 為您的訂用帳戶金鑰、端點,以及您上傳影像的路徑,建立變數。 對於 BASE_URI 值,您可以使用下列程式碼中的全域端點,或使用 Azure 入口網站中針對您的資源所顯示的自訂子網域端點。

    
    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 圖像式搜尋 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

後續步驟