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 oMicrosoft.Azure.CognitiveServices.Search.ImageSearch
pacote. Instalar os pacotes do NuGet também instala o seguinte:- Microsoft.Rest.ClientRuntime
- Microsoft.Rest.ClientRuntime.Azure
- Newtonsoft.Json
- 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
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
.
- 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.