Краткое руководство. Получение аналитических сведений об изображении с помощью REST API и Python Визуального поиска Bing

Предупреждение

30 октября 2020 года API Поиска Bing переместились из Cognitive Services в службы Поиска Bing. Эта документация приводится только для справки. Обновленную информацию см. в документации по API Поиска Bing. Инструкции по созданию ресурсов Azure для Поиска MS Bing см. в статье о том, как создать ресурс для Поиска MS Bing с помощью Azure Marketplace.

Используйте это краткое руководство, чтобы выполнить вызов к API Визуального поиска Bing. Это приложение Python отправляет изображение в API и отображает возвращенные данные о нем. Это приложение создано на языке Python. Но API представляет собой веб-службу на основе REST, совместимую с большинством языков программирования.

Предварительные требования

Создание ресурса Azure

Чтобы начать работу с API Визуального поиска Bing, создайте один из следующих ресурсов Azure.

Ресурс Поиска Bing версии 7

  • доступен на портале Azure до удаления.
  • Выберите ценовую категорию S9.

Ресурс для нескольких служб

  • доступен на портале Azure до удаления.
  • Используйте одни и те же ключ и конечную точку для приложений в нескольких экземплярах Cognitive Services.

Инициализация приложения

  1. Создайте файл 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 МБ.

    --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. Включите строку для конечной точки, заголовка и сведений о файле. Выведите на экран response.json() с помощью print_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

Дальнейшие действия

Create a Visual Search single-page web app (Создание одностраничного веб-приложения Визуального поиска)