Partager via


Tutoriel : Rechercher des images similaires dans des recherches précédentes à l’aide d’un jeton d’insights d’image

Avertissement

Le 30 octobre 2020, les API de recherche Bing sont passées des services Azure AI aux services de recherche Bing. Cette documentation est fournie à des fins de référence uniquement. Pour accéder à la documentation mise à jour, consultez la documentation de l’API Recherche Bing. Pour obtenir des instructions sur la création de nouvelles ressources Azure pour Recherche Bing, consultez Créer une ressource Recherche Bing à l’aide de Place de marché Azure.

La bibliothèque de client Recherche visuelle Bing vous permet de rechercher des images en ligne à partir de recherches précédentes qui retournent un ImageInsightsToken. Cette application obtient un ImageInsightsToken et utilise le jeton dans une recherche ultérieure. Elle envoie alors le ImageInsightsToken à Bing, puis retourne des résultats qui incluent les URL de recherche Bing et les URL des images similaires disponibles en ligne.

Le code source complet de ce didacticiel est disponible sur GitHub avec une gestion des erreurs et des annotations supplémentaires.

Prérequis

  • N’importe quelle édition de Visual Studio 2019.
  • Si vous utilisez Linux/MacOS, vous pouvez exécuter cette application en utilisant Mono.
  • Les packages Recherche visuelle NuGet et Recherche d’images.
    • Dans l’Explorateur de solutions de Visual Studio, cliquez avec le bouton droit sur votre projet et sélectionnez Gérer les packages NuGet dans le menu. Installez le package Microsoft.Azure.CognitiveServices.Search.CustomSearch et le package Microsoft.Azure.CognitiveServices.Search.ImageSearch. L’installation des packages NuGet installe également les éléments suivants :
      • Microsoft.Rest.ClientRuntime
      • Microsoft.Rest.ClientRuntime.Azure
      • Newtonsoft.Json

Créer une ressource Azure

Commencez à utiliser l’API Recherche visuelle Bing en créant une des ressources Azure suivantes :

Ressource Recherche Bing v7

  • Disponible via le portail Azure jusqu’à ce que vous supprimiez la ressource.
  • Sélectionnez le niveau tarifaire S9.

Ressource multiservice

  • Disponible via le portail Azure jusqu’à ce que vous supprimiez la ressource.
  • Utilisez la même clé et le même point de terminaison pour vos applications, sur plusieurs services Azure AI.

Obtenir le jeton ImageInsightsToken à partir de la bibliothèque de client Recherche d’images Bing

Cette application utilise un ImageInsightsToken obtenu par l’intermédiaire de la bibliothèque de client Recherche d’images Bing. Dans une nouvelle application console C#, créez un client pour appeler l’API en utilisant ImageSearchClient(). Utilisez ensuite SearchAsync() avec votre requête :

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\"");

Enregistrez le premier résultat de la recherche à l’aide de imageResults.Value.First(), puis enregistrez la valeur ImageInsightsToken des informations d’image.

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!");
}

Cette valeur ImageInsightsToken est envoyée à Recherche visuelle Bing dans une requête.

Ajouter le jeton ImageInsightsToken à une requête de Recherche visuelle

Spécifiez la valeur ImageInsightsToken dans une requête Recherche visuelle en créant un objet ImageInfo à partir de la valeur ImageInsightsToken contenue dans les réponses de Recherche visuelle Bing.

ImageInfo ImageInfo = new ImageInfo(imageInsightsToken: insightsTok);

Utiliser la Recherche visuelle Bing pour trouver des images à partir d’un jeton ImageInsightsToken

L’objet VisualSearchRequest contient des informations sur l’image à rechercher dans ImageInfo. La méthode VisualSearchMethodAsync() obtient les résultats. Vous n’avez pas besoin de fournir un binaire d’image, car l’image est représentée par le jeton.

VisualSearchRequest VisualSearchRequest = new VisualSearchRequest(ImageInfo);

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

Effectuer une itération dans les résultats de Recherche visuelle Bing

Les résultats de Recherche visuelle sont des objets ImageTag. Chaque balise contient une liste d’objets ImageAction. Chaque ImageAction contient un champ Data, qui est une liste de valeurs variant en fonction du type d’action. Vous pouvez itérer à travers les objets ImageTag dans visualSearchResults.Tags, par exemple, et obtenir la balise ImageAction intégrée. L’exemple ci-dessous imprime les détails d’actions 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);
                }
            }
        }
    }
}

ActionTypes PagesIncluding

L’obtention des URL des images réelles à partir de types d’action nécessite un cast qui lit un ActionType comme ImageModuleAction, qui contient un élément Data avec une liste de valeurs. Chaque valeur est l’URL d’une image. Le code suivant convertit le type d’action PagesIncluding en ImageModuleAction et lit les valeurs :

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

Pour plus d’informations sur ces types de données, consultez Images : Recherche visuelle.

URL retournées

L’application complète retourne les URL suivantes :

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=BcQifmzdKFyyBusjLxxgO42kzq1Geh7RucVVqvH-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=PVGzMFOI0AHZp2gKeWJ8DcveSDRE3fP2jHDKMpJSU8&v=1&r=https%3a%2f%2fwww.bing.com%2fimages%2fsearch%3fq%3doutdoor&p=DevEx,5831.1

Comme indiqué ci-dessus, les types TopicResults et ImageResults contiennent des requêtes pour les images associées. Les URL sont liées aux résultats de recherche Bing.

Étapes suivantes