快速入門:使用 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:
- 您可以透過 Azure 入口網站取得該資源,直到將其刪除為止。
- 選取
S9
定價層。
- 您可以透過 Azure 入口網站取得該資源,直到將其刪除為止。
- 針對您的應用程式,跨多個 Azure AI 服務使用相同的金鑰和端點。
初始化應用程式
在您慣用的 IDE 或編輯器中建立新的 Python 專案,以及新增下列
import
陳述式:import requests, json
為您的訂用帳戶金鑰、端點,以及您上傳影像的路徑,建立變數。 對於
BASE_URI
值,您可以使用下列程式碼中的全域端點,或使用 Azure 入口網站中針對您的資源所顯示的自訂子網域端點。BASE_URI = 'https://api.cognitive.microsoft.com/bing/v7.0/images/visualsearch' SUBSCRIPTION_KEY = 'your-subscription-key' imagePath = 'your-image-path'
上傳本機影像時,表單資料必須包含
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--
建立字典物件來保存您要求的標頭資訊。 將訂用帳戶金鑰繫結至字串
Ocp-Apim-Subscription-Key
。HEADERS = {'Ocp-Apim-Subscription-Key': SUBSCRIPTION_KEY}
建立包含您影像的另一個字典,這將會在您傳送要求時開啟並上傳。
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