Compartilhar via


Tutorial: Localizar imagens semelhantes de pesquisas anteriores usando o token de insights de imagem

Aviso

Em 30 de outubro de 2020, as APIs de Pesquisa do Bing foram migradas dos serviços de IA do Azure para os Serviços de Pesquisa do Bing. Esta documentação é fornecida apenas para referência. Para obter a documentação atualizada, consulte 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, consulte Criar um recurso de Pesquisa do Bing por meio do Azure Marketplace.

A biblioteca de clientes da Pesquisa Visual permite que você encontre imagens online de pesquisas anteriores que retornam um ImageInsightsToken. Este aplicativo obtém um ImageInsightsToken e usa o token em uma pesquisa subsequente. Em seguida, envia o ImageInsightsToken para o Bing e retorna os resultados que incluem as URLs de Pesquisa do Bing e as URLs de imagens semelhantes encontradas online.

O código-fonte completo desse tutorial pode ser encontrado com anotações e tratamento de erro adicionais no GitHub.

Pré-requisitos

  • Qualquer edição do Visual Studio 2019.
  • Se você estiver usando Linux/MacOS, poderá executar usando o Mono.
  • O pacotes de Pesquisa Visual do NuGet e Pesquisa de Imagem.
    • No Gerenciador de Soluções do Visual Studio, clique com o botão direito do mouse no seu projeto e selecione Gerenciar Pacotes do NuGet no menu. Instalar o Microsoft.Azure.CognitiveServices.Search.CustomSearch pacote e o Microsoft.Azure.CognitiveServices.Search.ImageSearch pacote. Instalar os pacotes do NuGet também instala o seguinte:
      • Microsoft.Rest.ClientRuntime
      • Microsoft.Rest.ClientRuntime.Azure
      • Newtonsoft.Json

Criar um recurso do Azure

Comece a usar a API da Pesquisa Visual do Bing criando um dos seguintes recursos do Azure:

Recurso de Pesquisa do Bing v7

  • Disponível por meio do portal do Azure até que você exclua o recurso.
  • Selecione o tipo de preço S9.

Recurso de vários serviços

  • Disponível por meio do portal do Azure até que você exclua o recurso.
  • Use a mesma chave e ponto de extremidade para seus aplicativos nos vários serviços de IA do Azure.

Obter o ImageInsightsToken da biblioteca de clientes da Pesquisa de Imagem do Bing

Esse aplicativo usa um ImageInsightsToken obtido por meio da biblioteca de clientes da Pesquisa de Imagem do Bing. Em um aplicativo de console C#, crie um cliente para chamar a API usando ImageSearchClient(). Em seguida, use SearchAsync() com sua consulta:

var client = new ImageSearchClient(new Microsoft.Azure.CognitiveServices.Search.ImageSearch.ApiKeyServiceClientCredentials(subKey));
var imageResults = client.Images.SearchAsync(query: "canadian rockies").Result;
Console.WriteLine("Search images for query \"canadian rockies\"");

Armazene o primeiro resultado da pesquisa usando imageResults.Value.First()e, em seguida, armazene o insight de imagem ImageInsightsToken.

String insightTok = "None";
if (imageResults.Value.Count > 0)
{
    var firstImageResult = imageResults.Value.First();
    insightTok = firstImageResult.ImageInsightsToken;
}
else
{
    insightTok = "None found";
    Console.WriteLine("Couldn't find image results!");
}

Este ImageInsightsToken é enviado à Pesquisa Visual do Bing em uma solicitação.

Adicionar o ImageInsightsToken a uma solicitação de Pesquisa Visual

Especifique ImageInsightsToken para uma solicitação de Pesquisa Visual, criando um ImageInfo objeto de ImageInsightsToken contido nas respostas da Pesquisa Visual do Bing.

ImageInfo ImageInfo = new ImageInfo(imageInsightsToken: insightsTok);

Use a Pesquisa Visual do Bing para encontrar imagens de um ImageInsightsToken

O VisualSearchRequest objeto contém informações sobre a imagem no ImageInfo a ser pesquisada. O método VisualSearchMethodAsync() consegue os resultados. Você não precisa fornecer um binário de imagem, uma vez que a imagem é representada pelo token.

VisualSearchRequest VisualSearchRequest = new VisualSearchRequest(ImageInfo);

var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: VisualSearchRequest).Result;

Iterar pelos resultados da Pesquisa Visual

Resultados de Pesquisa Visual são objetos ImageTag. Cada etiqueta contém uma lista de ImageAction objetos. Cada ImageAction contém um campo Data que é uma lista de valores que dependem do tipo de ação. Você pode iterar por meio de ImageTag objetos no visualSearchResults.Tags, por instância e obter a ImageAction marca dentro dele. O exemplo a seguir imprime os detalhes das ações PagesIncluding:

if (visualSearchResults.Tags.Count > 0)
{
    // List of tags
    foreach (ImageTag t in visualSearchResults.Tags)
    {
        foreach (ImageAction i in t.Actions)
        {
            Console.WriteLine("\r\n" + "ActionType: " + i.ActionType + " WebSearchURL: " + i.WebSearchUrl);

            if (i.ActionType == "PagesIncluding")
            {
                foreach (ImageObject o in (i as ImageModuleAction).Data.Value)
                {
                    Console.WriteLine("ContentURL: " + o.ContentUrl);
                }
            }
        }
    }
}

PagesIncluding ActionTypes

Obter as URLs de imagem real requer que uma conversão que lê um ActionType como ImageModuleAction, que contém um Data elemento com uma lista de valores. Cada valor é a URL de uma imagem. O seguinte converte o tipo de ação PagesIncluding para ImageModuleAction e lê os valores:

    if (i.ActionType == "PagesIncluding")
    {
        foreach(ImageObject o in (i as ImageModuleAction).Data.Value)
        {
            Console.WriteLine("ContentURL: " + o.ContentUrl);
        }
    }

Pra obter informações sobre esses tipos de dados, consulte Imagens - Pesquisa Visual.

URLs retornadas

O aplicativo completo retorna as seguintes URLs:

ActionType URL
MoreSizes -> WebSearchUrl
VisualSearch -> WebSearchUrl
ImageById -> WebSearchUrl
RelatedSearches -> WebSearchUrl:
DocumentLevelSuggestions -> WebSearchUrl:
TopicResults -> WebSearchUrl https://www.bing.com/cr?IG=3E32CC6CA5934FBBA14ABC3B2E4651F9& CID=1BA795A21EAF6A63175699B71FC36B7C&rd=1&h=BcQifmzdKFyyBusjLxxgO42kzq1Geh7RucVqvH-900&v=1&r=https%3a%2f%2fwww.bing.com%2fdiscover%2fcanadian%2brocky&p=DevEx,5823.1
ImageResults -> WebSearchUrl https://www.bing.com/cr?IG=3E32CC6CA5934FBBA14ABC3B2E4651F9& CID=1BA795A21EAF6A63175699B71FC36B7C&rd=1&h=PV9GzMFOI0AHZp2gKeWJ8DcveSDRE3fP2jHDKMpJSU8&v=1&r=https%3a%2f%2fwww.bing.com%2fimages%2fsearch%3fq%3doutdoor&p=DevEx,5831.1

Como mostrado acima, os tipos TopicResults e ImageResults contêm consultas de imagens relacionadas. As URLs na lista vinculam os resultados de pesquisa do Bing.

Próximas etapas