Inicio rápido: Obtención de conclusiones de imágenes mediante la API REST Bing Visual Search y Python

Advertencia

El 30 de octubre de 2020, las API de Bing Search se movieron de Cognitive Services a Bing Search Services. Esta documentación se proporciona solo como referencia. Para obtener documentación actualizada, consulte la documentación de Bing Search API. Para obtener instrucciones sobre cómo crear nuevos recursos de Azure para Bing Search, consulte el artículo sobre la creación de un recurso de Bing Search a través de Azure Marketplace.

Use este inicio rápido para realizar la primera llamada a la API Bing Visual Search. Esta aplicación de Python carga una imagen en la API y muestra la información que se devuelve. Aunque esta aplicación está escrita en Python, la API es un servicio web RESTful compatible con la mayoría de los lenguajes de programación.

Prerrequisitos

Creación de un recurso de Azure

Comience a usar la API Bing Visual Search mediante la creación de uno de los recursos de Azure que se indican a continuación:

Recurso de Bing Search v7

  • Disponible en Azure Portal hasta que lo elimine.
  • Seleccione el plan de tarifa S9.

Recurso de varios servicios

  • Disponible en Azure Portal hasta que lo elimine.
  • Use la misma clave y el mismo punto de conexión para las aplicaciones en varios servicios de Cognitive Services.

Inicialización de la aplicación

  1. Cree un archivo de Python en el IDE o editor que prefiera y agregue las siguientes instrucciones import:

    import requests, json
    
  2. Cree variables para la clave de suscripción, el punto de conexión y la ruta de acceso a la imagen que está cargando. Para el valor de BASE_URI puede usar el punto de conexión global en el código siguiente, o el punto de conexión del subdominio personalizado que se muestra en Azure Portal para el recurso.

    
    BASE_URI = 'https://api.cognitive.microsoft.com/bing/v7.0/images/visualsearch'
    SUBSCRIPTION_KEY = 'your-subscription-key'
    imagePath = 'your-image-path'
    
  3. Al cargar una imagen local, los datos del formulario deben incluir el encabezado Content-Disposition. Establezca su parámetro name en "image", y el parámetro filename en el nombre de archivo de la imagen. El contenido del formulario incluye los datos binarios de la imagen. El tamaño de imagen máximo que puede cargar es de 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. Cree un objeto de diccionario para almacenar la información de encabezado de la solicitud. Enlace la clave de suscripción a la cadena Ocp-Apim-Subscription-Key.

    HEADERS = {'Ocp-Apim-Subscription-Key': SUBSCRIPTION_KEY}
    
  5. Cree otro diccionario para contener la imagen, que se abrirá y cargará cuando envíe la solicitud.

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

Procese la respuesta JSON.

Cree un método denominado print_json() para aceptar la respuesta de la API, e imprima el código JSON.

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

Envío de la solicitud

Use requests.post() para enviar una solicitud a Bing Visual Search API. Incluya la cadena para la información de archivo, encabezado y punto de conexión. Imprima response.json() con 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

Pasos siguientes