Tutorial: Mengekstrak detail gambar menggunakan Bing Image Search API dan C#

Peringatan

Pada 30 Oktober 2020, API Bing Search dipindahkan dari layanan Azure AI ke Bing Search Services. Dokumentasi ini disediakan hanya untuk referensi. Untuk dokumentasi terbaru, lihat dokumentasi Bing Search API. Untuk petunjuk tentang cara membuat sumber daya Azure baru untuk pencarian Bing, lihat Membuat sumber daya Pencarian Bing melalui Marketplace Azure.

Ada beberapa titik akhir yang tersedia melalui Bing Image Search API. Titik akhir /details menerima permintaan POST dengan gambar, dan dapat mengembalikan berbagai detail tentang gambar. Aplikasi C# ini mengirimkan gambar menggunakan API ini, dan menampilkan detail yang dikembalikan oleh Bing, yang merupakan objek JSON, seperti berikut ini:

[Hasil JSON]

Tutorial ini menjelaskan cara:

  • Menggunakan titik akhir /details Pencarian Gambar dalam permintaan POST
  • Tentukan header untuk permintaan
  • Gunakan parameter URL untuk menentukan hasil
  • Mengunggah data gambar dan mengirim permintaan POST
  • Mencetak hasil JSON ke konsol

Prasyarat

Menyusun permintaan pencarian detail gambar

Berikut ini adalah titik akhir /details, yang menerima permintaan POST dengan data gambar dalam isi permintaan. Anda dapat menggunakan titik akhir global di bawah, atau titik akhir subdomain kustom yang ditampilkan di portal Azure untuk sumber daya Anda.

https://api.cognitive.microsoft.com/bing/v7.0/images/details

Saat membuat URL permintaan pencarian, parameter modules mengikuti titik akhir di atas, dan menentukan jenis detail yang akan berisi hasil:

  • modules=All
  • modules=RecognizedEntities (orang atau tempat yang terlihat dalam gambar)

Tentukan modules=All dalam permintaan POST untuk mendapatkan teks JSON yang menyertakan yang berikut ini:

  • bestRepresentativeQuery - kueri Bing yang mengembalikan gambar yang mirip dengan gambar yang diunggah
  • detectedObjects - objek yang ditemukan dalam gambar
  • image - metadata untuk gambar
  • imageInsightsToken - token untuk permintaan GET nanti yang mendapatkan RecognizedEntities (orang atau tempat yang terlihat dalam gambar) dari gambar.
  • imageTags - tag untuk gambar
  • pagesIncluding - Halaman web yang menyertakan gambar
  • relatedSearches - pencarian berdasarkan detail dalam gambar.
  • visuallySimilarImages - gambar serupa di web.

Tentukan modules=RecognizedEntities dalam permintaan POST untuk hanya mendapatkan imageInsightsToken, yang dapat digunakan dalam permintaan GET berikutnya untuk mengidentifikasi orang atau tempat dalam gambar.

Membuat objek WebClient, dan mengatur header untuk permintaan API

Membuat objek WebClient, dan mengatur header. Semua permintaan ke Bing Search API memerlukan Ocp-Apim-Subscription-Key. Permintaan POST untuk mengunggah gambar juga harus menentukan ContentType: multipart/form-data.

WebClient client = new WebClient();
client.Headers["Ocp-Apim-Subscription-Key"] = accessKey;
client.Headers["ContentType"] = "multipart/form-data";

Unggah gambar, dan tampilkan hasilnya

Metode WebClient kelas UpLoadFile() memformat data untuk POST permintaan, termasuk pemformatan RequestStream dan panggilan HttpWebRequest.

Panggilan WebClient.UpLoadFile() dengan titik akhir /details dan file gambar untuk diunggah. Gunakan respons JSON untuk menginisialisasi instans struktur SearchResult, dan menyimpan respons.

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>()
};

Respons JSON ini kemudian dapat dicetak ke konsol.

Menggunakan token insight gambar dalam permintaan

Untuk menggunakan hasil ImageInsightsToken yang dikembalikan dengan hasil POST, Anda dapat menambahkannya ke permintaan GET. Contohnya:

https://api.cognitive.microsoft.com/bing/v7.0/images/details?InsightsToken="bcid_A2C4BB81AA2C9EF8E049C5933C546449*ccid_osS7gaos*mid_BF7CC4FC4A882A3C3D56E644685BFF7B8BACEAF2

Jika ada orang atau tempat yang dapat diidentifikasi dalam gambar, permintaan ini akan mengembalikan informasi tentang mereka.

Langkah berikutnya

Lihat juga