Sdílet prostřednictvím


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í:

[Výsledky JSON]

Tento kurz vysvětluje následující postupy:

  • Použití koncového bodu /details vyhledávání obrázků v požadavku POST
  • 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

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.

Další kroky

Viz také