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:
Tutorial ini menjelaskan cara:
- Menggunakan titik akhir
/details
Pencarian Gambar dalam permintaanPOST
- Tentukan header untuk permintaan
- Gunakan parameter URL untuk menentukan hasil
- Mengunggah data gambar dan mengirim permintaan
POST
- Mencetak hasil JSON ke konsol
Prasyarat
- Semua edisi Visual Studio 2017 atau yang lebih baru.
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 diunggahdetectedObjects
- objek yang ditemukan dalam gambarimage
- metadata untuk gambarimageInsightsToken
- token untuk permintaan GET nanti yang mendapatkanRecognizedEntities
(orang atau tempat yang terlihat dalam gambar) dari gambar.imageTags
- tag untuk gambarpagesIncluding
- Halaman web yang menyertakan gambarrelatedSearches
- 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.