Tutorial: Encuentra imágenes similares de búsquedas anteriores mediante un token de análisis de imagen
Advertencia
El 30 de octubre de 2020, las API de Bing Search se trasladaron de los servicios de Azure AI a Bing Search Services. Esta documentación solo se proporciona como referencia. Para obtener documentación actualizada, consulte la documentación de la API de búsqueda de Bing . Para obtener instrucciones sobre cómo crear nuevos recursos de Azure para la búsqueda de Bing, consulte Creación de un recurso de Bing Search a través de Azure Marketplace.
La biblioteca cliente de Visual Search permite buscar imágenes en línea de búsquedas anteriores que devuelven un ImageInsightsToken
. Esta aplicación obtiene un ImageInsightsToken
y usa el token en una búsqueda posterior. A continuación, envía el ImageInsightsToken
a Bing y devuelve resultados que incluyen direcciones URL de Búsqueda de Bing y de imágenes similares encontradas en línea.
El código fuente completo de este tutorial se puede encontrar con anotaciones y control de errores adicionales en GitHub.
Prerrequisitos
- Cualquier edición de Visual Studio 2019.
- Si usa Linux/MacOS, puede ejecutar esta aplicación mediante Mono.
- Paquetes nuGet Visual Search e Image Search.
- En el Explorador de soluciones de Visual Studio, haga clic con el botón derecho en el proyecto y seleccione Administrar paquetes NuGet en el menú. Instale el paquete
Microsoft.Azure.CognitiveServices.Search.CustomSearch
y el paqueteMicrosoft.Azure.CognitiveServices.Search.ImageSearch
. La instalación de los paquetes NuGet también instala lo siguiente:- Microsoft.Rest.ClientRuntime
- Microsoft.Rest.ClientRuntime.Azure
- Newtonsoft.Json
- En el Explorador de soluciones de Visual Studio, haga clic con el botón derecho en el proyecto y seleccione Administrar paquetes NuGet en el menú. Instale el paquete
Creación de un recurso de Azure
Empiece a usar Bing Visual Search API mediante la creación de uno de los siguientes recursos de Azure:
- Disponible a través de Azure Portal hasta que elimine el recurso.
- Seleccione el plan de tarifa
S9
.
- Disponible a través de Azure Portal hasta que elimine el recurso.
- Use la misma clave y el mismo punto de conexión para las aplicaciones, en varios servicios de Azure AI.
Obtención de ImageInsightsToken desde la biblioteca cliente de Bing Image Search
Esta aplicación utiliza un ImageInsightsToken
obtenido a través de la biblioteca cliente de Bing Image Search. En una nueva aplicación de consola de C#, cree un cliente para llamar a la API mediante ImageSearchClient()
. A continuación, use SearchAsync()
con su 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\"");
Almacene el primer resultado de búsqueda mediante imageResults.Value.First()
y, a continuación, almacene la información de imagen 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
se envía a el Bing Visual Search como parte de una solicitud.
Adición de ImageInsightsToken a una solicitud de Visual Search
Especifique el ImageInsightsToken
para una solicitud de Búsqueda visual mediante la creación de un objeto ImageInfo
a partir del ImageInsightsToken
contenido en las respuestas de Bing Visual Search.
ImageInfo ImageInfo = new ImageInfo(imageInsightsToken: insightsTok);
Utilizar Bing Visual Search para buscar imágenes de ImageInsightsToken
El objeto VisualSearchRequest
contiene información sobre la imagen en ImageInfo
que se va a buscar. El método VisualSearchMethodAsync()
obtiene los resultados. No es necesario proporcionar un archivo binario de imagen, ya que la imagen se representa mediante el token.
VisualSearchRequest VisualSearchRequest = new VisualSearchRequest(ImageInfo);
var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: VisualSearchRequest).Result;
Recorrer en iteración los resultados de Visual Search
Los resultados de la búsqueda visual son objetos ImageTag
. Cada etiqueta contiene una lista de objetos ImageAction
. Cada ImageAction
contiene un campo Data
, que es una lista de valores que dependen del tipo de acción. Puede recorrer los objetos ImageTag
en visualSearchResults.Tags
, por ejemplo, y obtener la etiqueta ImageAction
que hay dentro. En el ejemplo siguiente se imprimen los detalles de las acciones de 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);
}
}
}
}
}
Páginas que incluyen ActionTypes
La obtención de las direcciones URL de imagen reales de los tipos de acción requiere una conversión que lea un ActionType
como ImageModuleAction
, que contiene un elemento Data
con una lista de valores. Cada valor es la dirección URL de una imagen. A continuación se convierte el tipo de acción PagesIncluding
en ImageModuleAction
y se leen los valores:
if (i.ActionType == "PagesIncluding")
{
foreach(ImageObject o in (i as ImageModuleAction).Data.Value)
{
Console.WriteLine("ContentURL: " + o.ContentUrl);
}
}
Para obtener más información sobre estos tipos de datos, vea Images - Visual Search.
Direcciones URL devueltas
La aplicación completa devuelve las siguientes direcciones URL:
TipoDeAcción | URL |
---|---|
MoreSizes -> URLdeBúsquedaWeb | |
VisualSearch:> WebSearchUrl | |
ImageById:> WebSearchUrl | |
Búsquedas relacionadas -> WebSearchUrl: | |
SugerenciasAlNivelDelDocumento -> URLDeBúsquedaEnLaWeb: | |
TopicResults:> WebSearchUrl | https://www.bing.com/cr?IG=3E32CC6CA5934FBBA14ABC3B2E4651F9& CID=1BA795A21EAF6A63175699B71FC36B7C&rd=1&h=BcQifmzdKFyyBusjLxxgO42kzq1Geh7RucVVVvH-900&v=1&r=https%3a%2f%2fwww.bing.com%2fdiscover%2fcanadian%2brocky&p=DevEx,5823.1 |
ImageResults:> URLdeBúsquedaWeb | 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 se muestra anteriormente, los tipos TopicResults
y ImageResults
contienen consultas para imágenes relacionadas. Las direcciones URL se vinculan a los resultados de búsqueda de Bing.