Início Rápido: Obter informações de imagens com a API REST da Pesquisa Visual do Bing e o Python
Aviso
A 30 de outubro de 2020, as APIs de Pesquisa do Bing passaram dos serviços de IA do Azure para os Serviços Pesquisa do Bing. Esta documentação é fornecida apenas para referência. Para obter documentação atualizada, veja a documentação da API de pesquisa do Bing. Para obter instruções sobre como criar novos recursos do Azure para a pesquisa do Bing, veja Criar um recurso de Pesquisa do Bing através do Azure Marketplace.
Utilize este início rápido para fazer a sua primeira chamada à API de Pesquisa Visual do Bing. Esta aplicação Python carrega uma imagem para a API e apresenta as informações que devolve. Embora esta aplicação esteja escrita em Python, a API é um serviço Web RESTful compatível com a maioria das linguagens de programação.
Pré-requisitos
Criar um recurso do Azure
Comece a utilizar a API de Pesquisa Visual do Bing ao criar um dos seguintes recursos do Azure:
- Disponível através do portal do Azure até eliminar o recurso.
- Selecione o
S9
escalão de preço.
- Disponível através do portal do Azure até eliminar o recurso.
- Utilize a mesma chave e ponto final para as suas aplicações, em vários serviços de IA do Azure.
Inicializar a aplicação
Crie um novo ficheiro Python no seu IDE ou editor favorito e adicione a seguinte
import
instrução:import requests, json
Crie variáveis para a chave de subscrição, o ponto final e o caminho para a imagem que está a carregar. Para o valor de
BASE_URI
, pode utilizar o ponto final global no código seguinte ou utilizar o ponto final de subdomínio personalizado apresentado no portal do Azure do recurso.BASE_URI = 'https://api.cognitive.microsoft.com/bing/v7.0/images/visualsearch' SUBSCRIPTION_KEY = 'your-subscription-key' imagePath = 'your-image-path'
Quando carrega uma imagem local, os dados do formulário têm de incluir o
Content-Disposition
cabeçalho. Defina o respetivoname
parâmetro como "imagem" e defina ofilename
parâmetro para o nome de ficheiro da sua imagem. Os conteúdos do formulário incluem os dados binários da imagem. O tamanho máximo da imagem que pode carregar é 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--
Crie um objeto de dicionário para conter as informações do cabeçalho do pedido. Vincule a chave de subscrição à cadeia
Ocp-Apim-Subscription-Key
.HEADERS = {'Ocp-Apim-Subscription-Key': SUBSCRIPTION_KEY}
Crie outro dicionário para conter a sua imagem, que é aberta e carregada quando envia o pedido.
file = {'image' : ('myfile', open(imagePath, 'rb'))}
Analisar a resposta JSON
Crie um método chamado print_json()
para aceitar a resposta da API e imprima o JSON.
def print_json(obj):
"""Print the object as json"""
print(json.dumps(obj, sort_keys=True, indent=2, separators=(',', ': ')))
Enviar o pedido
Utilize requests.post()
para enviar um pedido para a API de Pesquisa Visual do Bing. Inclua a cadeia de carateres para o seu ponto final, cabeçalho e informações de ficheiro. Imprimir response.json()
com 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