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 packageMicrosoft.Azure.CognitiveServices.Search.ImageSearch
. L’installation des packages NuGet installe également les éléments suivants :- Microsoft.Rest.ClientRuntime
- Microsoft.Rest.ClientRuntime.Azure
- Newtonsoft.Json
- 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
Créer une ressource Azure
Commencez à utiliser l’API Recherche visuelle Bing en créant une des ressources Azure suivantes :
- Disponible via le portail Azure jusqu’à ce que vous supprimiez la ressource.
- Sélectionnez le niveau tarifaire
S9
.
- 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.