Kurz: Extrahování podrobností pomocí rozhraní API Bingu pro vyhledávání obrázků a C#
Upozornění
30. října 2020 se rozhraní API Vyhledávání Bingu přesunula ze služeb Azure AI na Vyhledávání Bingu Services. Tato dokumentace je k dispozici pouze pro referenci. Aktualizovanou dokumentaci najdete v dokumentaci k rozhraní API Bingu pro vyhledávání. Pokyny k vytváření nových prostředků Azure pro vyhledávání Bingu najdete v tématu Vytvoření prostředku Vyhledávání Bingu prostřednictvím Azure Marketplace.
Existuje více koncových bodů dostupných prostřednictvím rozhraní API Bingu pro vyhledávání obrázků. Koncový bod /details
přijímá s obrázkem požadavek POST a může vrátit různé informace o obrázku. Tato aplikace C# odešle obrázek pomocí tohoto rozhraní API a zobrazí podrobnosti vrácené Bingem, což jsou objekty JSON, například následující:
Tento kurz vysvětluje následující postupy:
- Použití koncového bodu
/details
vyhledávání obrázků v požadavkuPOST
- Zadání hlaviček pro požadavek
- Specifikace výsledků pomocí parametrů adresy URL
- Odeslání dat obrázku a odeslání požadavku
POST
- Tisk výsledků JSON v konzole
Požadavky
- Libovolná edice sady Visual Studio 2017 nebo novější.
Vytvoření žádosti o vyhledávání podrobností o snímku
Níže je uvedený koncový bod /details
, který přijímá požadavky POST s údaji o obrázku v těle požadavku. Můžete použít globální koncový bod níže nebo vlastní koncový bod subdomény zobrazený v Azure Portal pro váš prostředek.
https://api.cognitive.microsoft.com/bing/v7.0/images/details
Při vytváření adresy URL žádosti o vyhledávání se parametr modules
řídí výše uvedeným koncovým bodem a určuje typy podrobností, které budou výsledky obsahovat:
modules=All
-
modules=RecognizedEntities
(lidé nebo místa na obrázku)
Zadáním modules=All
v požadavku POST získáte text JSON, který obsahuje následující informace:
-
bestRepresentativeQuery
– dotaz Bingu, který vrátí obrázky podobné odeslanému obrázku -
detectedObjects
– objekty nalezené v obrázku -
image
– metadata pro obrázek -
imageInsightsToken
– token pro pozdější požadavky GET, které získajíRecognizedEntities
(lidé nebo místa na obrázku) z obrázku. -
imageTags
– značky pro obrázek -
pagesIncluding
– webové stránky, které obsahují daný obrázek -
relatedSearches
– hledání na základě podrobností v obrázku -
visuallySimilarImages
– podobné obrázky na webu
Zadejte modules=RecognizedEntities
v požadavku POST, pokud chcete získat pouze imageInsightsToken
, který je možné použít v následujícím požadavku GET k identifikaci osob nebo míst na obrázku.
Vytvoření objektu WebClient a nastavení hlaviček pro požadavek rozhraní API
Vytvořte objekt WebClient
a nastavte hlavičky. Všechny požadavky na rozhraní API Bingu pro vyhledávání vyžadují Ocp-Apim-Subscription-Key
. Požadavek POST
k nahrání obrázku musí také určovat ContentType: multipart/form-data
.
WebClient client = new WebClient();
client.Headers["Ocp-Apim-Subscription-Key"] = accessKey;
client.Headers["ContentType"] = "multipart/form-data";
Odeslání obrázku a zobrazení výsledků
Metoda UpLoadFile()
třídy WebClient
formátuje data pro požadavek POST
, včetně formátování RequestStream
a volání HttpWebRequest
.
Volejte WebClient.UpLoadFile()
s koncovým bodem /details
a souborem obrázku, který chcete nahrát. Pomocí odpovědi JSON inicializujte instanci struktury SearchResult
a uložte odpověď.
const string uriBase = "https://api.cognitive.microsoft.com/bing/v7.0/images/details";
// The image to upload. Replace with your file and path.
const string imageFile = "your-image.jpg";
byte[] resp = client.UploadFile(uriBase + "?modules=All", imageFile);
var json = System.Text.Encoding.Default.GetString(resp);
// Create result object for return
var searchResult = new SearchResult()
{
jsonResult = json,
relevantHeaders = new Dictionary<String, String>()
};
Tato odpověď JSON pak může být vytištěna v konzole.
Použití tokenu přehledu obrázků v požadavku
Pokud chcete použít token ImageInsightsToken
vrácený s výsledky požadavku POST
, můžete ho přidat do požadavku GET
. Příklad:
https://api.cognitive.microsoft.com/bing/v7.0/images/details?InsightsToken="bcid_A2C4BB81AA2C9EF8E049C5933C546449*ccid_osS7gaos*mid_BF7CC4FC4A882A3C3D56E644685BFF7B8BACEAF2
Pokud obrázek obsahuje identifikovatelné osoby nebo místa, tento požadavek o nich vrátí informace.