التشغيل السريع: استخدام مكتبة العميل Bing للبحث المرئي
تحذير
في 30 أكتوبر 2020، انتقلت واجهات برمجة تطبيقات البحث Bing من الخدمات المعرفية إلى خدمات البحث Bing. يتم توفير هذه الوثائق للرجوع إليها فقط. للحصول على الوثائق المحدثة، راجع وثائق واجهة برمجة تطبيقات البحث Bing. للحصول على إرشادات حول إنشاء موارد Azure جديدة للبحث Bing، راجع إنشاء مورد بحث Bing خلال Azure Marketplace.
استخدم هذا التشغيل السريع لبدء الحصول على نتائج صور من خدمة البحث المرئي من Bing باستخدام مكتبة العميل C#. على الرغم من أن البحث المرئي على Bing يحتوي على واجهة برمجة تطبيقات REST متوافقة مع معظم لغات البرمجة، توفر مكتبة العميل طريقة سهلة لتضمين الخدمة في التطبيقات الخاصة بك. يمكن العثور على التعليمات البرمجية لهذا النموذج على GitHub.
الوثائق المرجعية | التعليمات البرمجية للمكتبة | حزمة (NuGet) | نماذج
المتطلبات الأساسية
- Visual Studio 2019.
- إذا كنت تستخدم Linux/MacOS، يمكن تشغيل هذا التطبيق باستخدام Mono.
- حزمة البحث المرئي NuGet.
- من نافذة مستكشف الحلول في Visual Studio، انقر بزر الماوس الأيمن على مشروعك وحدد
Manage NuGet Packages من القائمة. ثبّت حزمةMicrosoft.Azure.CognitiveServices.Search.VisualSearch. تثبيت حزم NuGet يُثبّت ما يلي أيضًا:- Microsoft.Rest.ClientRuntime
- Microsoft.Rest.ClientRuntime.Azure
- Newtonsoft.Js
- من نافذة مستكشف الحلول في Visual Studio، انقر بزر الماوس الأيمن على مشروعك وحدد
انشاء مورد Azure.
بدء استخدام واجهة برمجة تطبيقات البحث المرئي Bing عن طريق إنشاء أحد موارد Azure التالية:
- متوفر من خلال مدخل Azure إلى أن تقوم بحذف المورد.
- حدد
S9فئة التسعير.
- متوفر من خلال مدخل Azure إلى أن تقوم بحذف المورد.
- استخدم نفس المفتاح ونقطة النهاية للتطبيقات الخاصة بك، عبر الخدمات المعرفية المتعددة.
إنشاء وتهيئة التطبيق
في Visual Studio، قم بإنشاء مشروع جديد. ثم أضِف التوجيهات الآتية.
using Microsoft.Azure.CognitiveServices.Search.VisualSearch; using Microsoft.Azure.CognitiveServices.Search.VisualSearch.Models;إنشاء مثيل للعميل باستخدام مفتاح الاشتراك الخاص بك.
var client = new VisualSearchClient(new ApiKeyServiceClientCredentials("YOUR-ACCESS-KEY"));
إرسال طلب بحث
إنشاء
FileStream للصور الخاصة بك (في هذه الحالة TestImages/image.jpg). ثم استخدام العميل لإرسال طلب بحث باستخدام client.Images.VisualSearchMethodAsync().System.IO.FileStream stream = new FileStream(Path.Combine("TestImages", "image.jpg"), FileMode.Open); // The knowledgeRequest parameter is not required if an image binary is passed in the request body var visualSearchResults = client.Images.VisualSearchMethodAsync(image: stream, knowledgeRequest: (string)null).Result;توزيع نتائج الاستعلام السابق:
// Visual Search results if (visualSearchResults.Image?.ImageInsightsToken != null) { Console.WriteLine($"Uploaded image insights token: {visualSearchResults.Image.ImageInsightsToken}"); } else { Console.WriteLine("Couldn't find image insights token!"); } // List of tags if (visualSearchResults.Tags.Count > 0) { var firstTagResult = visualSearchResults.Tags[0]; Console.WriteLine($"Visual search tag count: {visualSearchResults.Tags.Count}"); // List of actions in first tag if (firstTagResult.Actions.Count > 0) { var firstActionResult = firstTagResult.Actions[0]; Console.WriteLine($"First tag action count: {firstTagResult.Actions.Count}"); Console.WriteLine($"First tag action type: {firstActionResult.ActionType}"); } else { Console.WriteLine("Couldn't find tag actions!"); } }
الخطوات التالية
استخدم البداية السريعة هذه للبدء في رؤية الصور من Bing Visual Search service، باستخدام مكتبة العميل Java. عندما يكون لدىBing Visual Search تطبيق REST API ويكون مطابقاً لمعظم لغات البرمجة، تُوفر مكتبة العميل طريقة سهلة لدمج الخدمة في التطبيقات الخاصة بك. يمكن إيجاد التعليمة البرمجية المصدر لهذه البداية السريعة على GitHub.
استخدم مكتبة عميل Bing Visual Search لـ Java من أجل:
- رفع صورة لإرسال طلب بحث مرئي.
- احصل على رمز رؤية الصورة وعلامات البحث المرئية.
المرجع | رمز مصدر المكتبة | عينات من برنامج | (Maven)
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجانًا
- الإصدار الحالي من Java Development Kit(JDK)
- أداة بناء Gradleأو إدارة تبعية أخرى.
انشاء مورد Azure.
بدء استخدام واجهة برمجة تطبيقات البحث المرئي Bing عن طريق إنشاء أحد موارد Azure التالية:
- متوفر من خلال مدخل Azure إلى أن تقوم بحذف المورد.
- حدد
S9فئة التسعير.
- متوفر من خلال مدخل Azure إلى أن تقوم بحذف المورد.
- استخدم نفس المفتاح ونقطة النهاية للتطبيقات الخاصة بك، عبر الخدمات المعرفية المتعددة.
بعد الحصول على مفتاح من موردك، قم بإنشاء متغير البيئة للمفتاح المسمى BING_SEARCH_V7_SUBSCRIPTION_KEY.
إنشاء مشروع Gradle جديد
في نافذة وحدة التحكم (مثل cmd أو PowerShell أو Bash)، أنشئ دليلاً جديداً لتطبيقك وانتقل إليه.
mkdir myapp && cd myapp
قم بتشغيل الأمر gradle init من دليل العمل الخاص بك. سيقوم هذا الأمر بإنشاء ملفات بناء أساسية لـ Gradle، بما في ذلك build.gradle.kts الذي يُستخدم في وقت التشغيل لإنشاء تطبيقك وتكوينه.
gradle init --type basic
عند طلب اختيار DSL، حدد Kotlin.
حدد build.gradle.kts وافتحه باستخدام IDE أو محرر النص المفضل لديك. ثم انسخه إلى تكوين التهيئة هذا:
plugins {
java
application
}
application {
mainClassName = "main.java.BingVisualSearchSample"
}
repositories {
mavenCentral()
}
dependencies {
compile("org.slf4j:slf4j-simple:1.7.25")
compile("com.microsoft.azure.cognitiveservices:azure-cognitiveservices-visualsearch:1.0.2-beta")
compile("com.google.code.gson:gson:2.8.5")
}
إنشاء مجلد لعينة تطبيقك. من دليل العمل الخاص بك، قم بتشغيل الأمر التالي:
mkdir -p src/main/java
إنشاء مجلد للصورة التي تريد رفعها إلى واجهة برمجة التطبيقات. ضع الصورة داخل مجلد الموارد.
mkdir -p src/main/resources
انتقل إلى المجلد الجديد وأنشئ ملفاً يسمى BingVisualSearchSample.java. افتحه في المحرر المفضل لديك أو IDE وأضف import العبارات التالية:
package main.java;
import com.google.common.io.ByteStreams;
import com.google.gson.Gson;
import com.microsoft.azure.cognitiveservices.search.visualsearch.BingVisualSearchAPI;
import com.microsoft.azure.cognitiveservices.search.visualsearch.BingVisualSearchManager;
import com.microsoft.azure.cognitiveservices.search.visualsearch.models.CropArea;
import com.microsoft.azure.cognitiveservices.search.visualsearch.models.ErrorResponseException;
import com.microsoft.azure.cognitiveservices.search.visualsearch.models.Filters;
import com.microsoft.azure.cognitiveservices.search.visualsearch.models.ImageInfo;
import com.microsoft.azure.cognitiveservices.search.visualsearch.models.ImageKnowledge;
import com.microsoft.azure.cognitiveservices.search.visualsearch.models.ImageTag;
import com.microsoft.azure.cognitiveservices.search.visualsearch.models.KnowledgeRequest;
import com.microsoft.azure.cognitiveservices.search.visualsearch.models.VisualSearchRequest;
ثم أنشئ فئة جديدة.
public class BingVisualSearchSample {
}
في أسلوب التطبيق main، قم بإنشاء متغيرات لمفتاح المورد ونقطة النهاية. إذا قمت بإنشاء متغير البيئة بعد تشغيل التطبيق، ستحتاج إلى إغلاق وإعادة فتح المحرر أو IDE أو shell وتشغيله للوصول إلى المتغير. ثم قم بإنشاءbyte[] للصورة التي سترفعها. قم بإنشاء try كتلة للطرق التي ستحددها لاحقا ، وقم بتحميل الصورة وتحويلها إلى بايت باستخدام toByteArray().
// IMPORTANT: MAKE SURE TO USE S9 PRICING TIER OF THE BING SEARCH V7 API KEY FOR VISUAL SEARCH.
// Otherwise, you will get an invalid subscription key error.
public static void main(String[] args) {
// Set the BING_SEARCH_V7_SUBSCRIPTION_KEY environment variable with your subscription key,
// then reopen your command prompt or IDE. If not, you may get an API key not found exception.
final String subscriptionKey = System.getenv("BING_SEARCH_V7_SUBSCRIPTION_KEY");
BingVisualSearchAPI client = BingVisualSearchManager.authenticate(subscriptionKey);
//runSample(client);
byte[] imageBytes;
try {
imageBytes = ByteStreams.toByteArray(ClassLoader.getSystemClassLoader().getResourceAsStream("image.jpg"));
visualSearch(client, imageBytes);
searchWithCropArea(client, imageBytes);
// wait 1 second to avoid rate limiting
Thread.sleep(1000);
searchWithFilter(client);
searchUsingCropArea(client);
searchUsingInsightToken(client);
}
catch (java.io.IOException f) {
System.out.println(f.getMessage());
f.printStackTrace();
}
catch (java.lang.InterruptedException f){
f.printStackTrace();
}
}
تثبيت مكتبة العميل
يستخدم هذا التشغيل السريع مدير تبعية Gradle. يمكنك العثور على مكتبة العميل ومعلومات مديري التبعية الآخرين على Maven Central Repository.
في ملف build.gradle.kts المشروع، تأكد من تضمين مكتبة العميل implementation كعبارة.
dependencies {
compile("org.slf4j:slf4j-simple:1.7.25")
compile("com.microsoft.azure.cognitiveservices:azure-cognitiveservices-visualsearch:1.0.2-beta")
compile("com.google.code.gson:gson:2.8.5")
}
أمثلة التعليمات البرمجية
توضح لك هذه المقتطفات البرمجية كيفية تنفيذ المهام التالية مع مكتبة عميل Bing Visual Search وJava:
مصادقة العميل
ملاحظة
تفترض هذه البداية السريعة أنك قمت بإنشاء متغير بيئة لمفتاح Bing Visual Search، المسمى BING_SEARCH_V7_SUBSCRIPTION_KEY.
في الأسلوب الرئيسي، تأكد من استخدام مفتاح الاشتراك لإنشاء مثيل كائن BingVisualSearchAPI.
BingVisualSearchAPI client = BingVisualSearchManager.authenticate(subscriptionKey);
إرسال طلب بحث مرئي
في أسلوب جديد، إرسال مصفوفة الصورة بايت (الذي تم إنشاؤه في main() الأسلوب) باستخدام أسلوب bingImages.visualSearch() العميل.
public static void visualSearch(BingVisualSearchAPI client, byte[] imageBytes){
System.out.println("Calling Bing Visual Search with image binary");
ImageKnowledge visualSearchResults = client.bingImages().visualSearch()
.withImage(imageBytes)
.execute();
PrintVisualSearchResults(visualSearchResults);
}
طباعة تفاصيل الرمز المميز للصورة المرئية وعلامات البحث المرئية
تحقق مما إذا كان الكائن ImageKnowledge فارغ. إذا لم يكن الأمر كذلك، فاطبع الرمز المميز لتفاصيل الصورة وعدد العلامات وعدد الإجراءات ونوع الإجراء الأول.
static void PrintVisualSearchResults(ImageKnowledge visualSearchResults) {
if (visualSearchResults == null) {
System.out.println("No visual search result data.");
} else {
// Print token
if (visualSearchResults.image() != null && visualSearchResults.image().imageInsightsToken() != null) {
System.out.println("Found uploaded image insights token: " + visualSearchResults.image().imageInsightsToken());
} else {
System.out.println("Couldn't find image insights token!");
}
// List tags
if (visualSearchResults.tags() != null && visualSearchResults.tags().size() > 0) {
System.out.format("Found visual search tag count: %d\n", visualSearchResults.tags().size());
ImageTag firstTagResult = visualSearchResults.tags().get(0);
// List of actions in first tag
if (firstTagResult.actions() != null && firstTagResult.actions().size() > 0) {
System.out.format("Found first tag action count: %d\n", firstTagResult.actions().size());
System.out.println("Found first tag action type: " + firstTagResult.actions().get(0).actionType());
}
} else {
System.out.println("Couldn't find image tags!");
}
}
}
شغّل التطبيق
بإمكانك بناء التطبيق بـ:
gradle build
تشغيل التطبيق run بهدف:
gradle run
تنظيف الموارد
إذا كنت تريد تنظيف وإلغاء اشتراك الخدمات المعرفية، يمكنك حذف المورد أو مجموعة الموارد. يؤدي حذف مجموعة الموارد إلى حذف أية موارد أخرى مقترنة بها أيضًا.
الخطوات التالية
استخدم هذه البداية السريعة للبدء في الحصول على رؤى الصور من خدمة البحث المرئي Bing، باستخدام مكتبة عميل JavaScript. عندما يكون لدى Bing Visual Search تطبيق REST API ويكون مطابقًا لمعظم لغات البرمجة، تُوفر مكتبة العميل طريقة سهلة لدمج الخدمة في التطبيقات الخاصة بك. يمكن العثور على كود المصدر لهذا النموذج على GitHub.
الوثائق المرجعية | كود مصدر المكتبة | حزمة (NPM) | النماذج
المتطلبات الأساسية
- أحدث إصدار من Node.js.
- Bing Video Search SDK لـ JavaScript
- للتثبيت، قم بتشغيل
npm install @azure/cognitiveservices-visualsearch
- للتثبيت، قم بتشغيل
- فئة
CognitiveServicesCredentialsمن الحزمة@azure/ms-rest-azure-jsلمصادقة العميل.- للتثبيت، قم بتشغيل
npm install @azure/ms-rest-azure-js
- للتثبيت، قم بتشغيل
انشاء مورد Azure.
بدء استخدام واجهة برمجة تطبيقات البحث المرئي Bing عن طريق إنشاء أحد موارد Azure التالية:
- متوفر من خلال مدخل Azure إلى أن تقوم بحذف المورد.
- حدد
S9فئة التسعير.
- متوفر من خلال مدخل Azure إلى أن تقوم بحذف المورد.
- استخدم نفس المفتاح ونقطة النهاية للتطبيقات الخاصة بك، عبر الخدمات المعرفية المتعددة.
قم بإنشاء التطبيق وتهيئته
قم بإنشاء ملف JavaScript جديد في IDE المفضلة لديك أو محرر، وإضافة المتطلبات التالية. ثم قم بإنشاء متغيرات لمفتاح الاشتراك الخاص بك، معرف التكوين المخصص، ومسار الملف إلى الصورة التي تريد تحميلها.
const os = require("os"); const async = require('async'); const fs = require('fs'); const Search = require('@azure/cognitiveservices-visualsearch'); const CognitiveServicesCredentials = require('@azure/ms-rest-azure-js').CognitiveServicesCredentials; let keyVar = 'YOUR-VISUAL-SEARCH-ACCESS-KEY'; let credentials = new CognitiveServicesCredentials(keyVar); let filePath = "../Data/image.jpg";إنشاء مثيل للعميل.
let visualSearchClient = new Search.VisualSearchClient(credentials);
البحث عن الصور
استخدم
fs.createReadStream() للقراءة في ملف الصورة، وإنشاء متغيرات لطلب البحث والنتائج. ثم استخدم العميل للبحث عن الصور.let fileStream = fs.createReadStream(filePath); let visualSearchRequest = JSON.stringify({}); let visualSearchResults; try { visualSearchResults = await visualSearchClient.images.visualSearch({ image: fileStream, knowledgeRequest: visualSearchRequest }); console.log("Search visual search request with binary of image"); } catch (err) { console.log("Encountered exception. " + err.message); }قم بتوزيع نتائج الاستعلام السابق:
// Visual Search results if (visualSearchResults.image.imageInsightsToken) { console.log(`Uploaded image insights token: ${visualSearchResults.image.imageInsightsToken}`); } else { console.log("Couldn't find image insights token!"); } // List of tags if (visualSearchResults.tags.length > 0) { let firstTagResult = visualSearchResults.tags[0]; console.log(`Visual search tag count: ${visualSearchResults.tags.length}`); // List of actions in first tag if (firstTagResult.actions.length > 0) { let firstActionResult = firstTagResult.actions[0]; console.log(`First tag action count: ${firstTagResult.actions.length}`); console.log(`First tag action type: ${firstActionResult.actionType}`); } else { console.log("Couldn't find tag actions!"); } } else { console.log("Couldn't find image tags!"); }
الخطوات التالية
استخدم هذه البداية السريعة للبدء في رؤية الصور من خدمةBing Visual Search، باستخدام مكتبة عميل Python. عندما يكون لدىBing Visual Search تطبيق REST API ويكون مطابقاً لمعظم لغات البرمجة، تُوفر مكتبة العميل طريقة سهلة لدمج الخدمة في التطبيقات الخاصة بك. يمكن العثور على كود المصدر للنموذج على GitHub
الوثائق المرجعية | لكود مصدر المكتبة | لنماذج | Package (PyPi)
المتطلبات الأساسية
- Python 2.x أو 3.x
- يُوصى باستخدام بيئة افتراضية. تثبيت وتفعيل البيئة الافتراضية باستخداموحدة فينف
- مكتبة عميل Bing Visual Search لـ Python يُمكنك تثبيته باتباع الأوامر التالية:
cd mytestenvpython -m pip install azure-cognitiveservices-search-visualsearch
انشاء مورد Azure.
بدء استخدام واجهة برمجة تطبيقات البحث المرئي Bing عن طريق إنشاء أحد موارد Azure التالية:
- متوفر من خلال مدخل Azure إلى أن تقوم بحذف المورد.
- حدد
S9فئة التسعير.
- متوفر من خلال مدخل Azure إلى أن تقوم بحذف المورد.
- استخدم نفس المفتاح ونقطة النهاية للتطبيقات الخاصة بك، عبر الخدمات المعرفية المتعددة.
إنشاء التطبيق وتهيئته
أنشئ ملف Python جديداً في بيئة التطوير المتكاملة المفضلة أو المحرر وأضف بيانات الاستيراد التالية
import http.client, urllib.parse import json import os.path from azure.cognitiveservices.search.visualsearch import VisualSearchClient from azure.cognitiveservices.search.visualsearch.models import ( VisualSearchRequest, CropArea, ImageInfo, Filters, KnowledgeRequest, ) from msrest.authentication import CognitiveServicesCredentialsأنشئ متغيرات لمفتاح الاشتراك وCustom Configuration ID والصورة التي تريد تحميلها
subscription_key = 'YOUR-VISUAL-SEARCH-ACCESS-KEY' PATH = 'C:\\Users\\USER\\azure-cognitive-samples\\mytestenv\\TestImages\\' image_path = os.path.join(PATH, "image.jpg")أنشئ مثيلاً للعميل
client = VisualSearchClient(endpoint="https://api.cognitive.microsoft.com", credentials=CognitiveServicesCredentials(subscription_key))
أرسل طلب البحث
عند فتح ملف الصور
VisualSearchRequest()مررها بوصفهاknowledge_requestمعلمة لـvisual_search().with open(image_path, "rb") as image_fd: # You need to pass the serialized form of the model knowledge_request = json.dumps(VisualSearchRequest().serialize()) print("\r\nSearch visual search request with binary of dog image") result = client.images.visual_search(image=image_fd, knowledge_request=knowledge_request)إذا تم إرجاع أي نتائج، اطبع العلامات والإجراءات في العلامة الأولى
if not result: print("No visual search result data.") # Visual Search results if result.image.image_insights_token: print("Uploaded image insights token: {}".format(result.image.image_insights_token)) else: print("Couldn't find image insights token!") # List of tags if result.tags: first_tag = result.tags[0] print("Visual search tag count: {}".format(len(result.tags))) # List of actions in first tag if first_tag.actions: first_tag_action = first_tag.actions[0] print("First tag action count: {}".format(len(first_tag.actions))) print("First tag action type: {}".format(first_tag_action.action_type)) else: print("Couldn't find tag actions!") else: print("Couldn't find image tags!")