1. نظرة عامة
تتيح واجهة Google Cloud Vision API للمطوّرين دمج ميزات رصد الصور بسهولة في التطبيقات، بما في ذلك تصنيف الصور، ورصد الوجوه والمعالم، والتعرّف البصري على الأحرف (OCR)، ووضع علامات على المحتوى الفاضح.
في هذا الدرس التطبيقي حول الترميز، ستركز على استخدام Vision API مع لغة C#. ستتعرّف على كيفية رصد النصوص والمعالم والوجوه.
ما ستتعلمه
- كيفية استخدام Cloud Shell
- كيفية تفعيل Google Cloud Vision API
- كيفية مصادقة طلبات البيانات من واجهة برمجة التطبيقات
- كيفية تثبيت مكتبة برامج Vision API للغة C#
- كيفية تنفيذ ميزة "التعرّف على الملصقات"
- كيفية إجراء عملية "رصد النص"
- كيفية تنفيذ ميزة "رصد المعالم"
- كيفية إجراء عملية "التعرّف على الوجوه"
المتطلبات
استطلاع الرأي
كيف ستستخدم هذا البرنامج التعليمي؟
كيف تقيّم تجربتك مع لغة C#؟
ما هو تقييمك لتجربة استخدام خدمات Google Cloud Platform؟
2. الإعداد والمتطلبات
إعداد البيئة بالسرعة التي تناسبك
- سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.



- اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديلها في أي وقت.
- رقم تعريف المشروع هو معرّف فريد في جميع مشاريع Google Cloud ولا يمكن تغييره بعد ضبطه. تنشئ Cloud Console تلقائيًا سلسلة فريدة، ولا يهمّك عادةً ما هي. في معظم دروس البرمجة، عليك الرجوع إلى رقم تعريف مشروعك (يُشار إليه عادةً باسم
PROJECT_ID). إذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. يمكنك بدلاً من ذلك تجربة اسم مستخدم من اختيارك ومعرفة ما إذا كان متاحًا. لا يمكن تغيير هذا الخيار بعد هذه الخطوة وسيظل ساريًا طوال مدة المشروع. - للعلم، هناك قيمة ثالثة، وهي رقم المشروع، تستخدمها بعض واجهات برمجة التطبيقات. يمكنك الاطّلاع على مزيد من المعلومات عن كل هذه القيم الثلاث في المستندات.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. لن تكلفك تجربة هذا الدرس التطبيقي حول الترميز الكثير، إن وُجدت أي تكلفة على الإطلاق. لإيقاف الموارد وتجنُّب تحمّل تكاليف تتجاوز هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.
بدء Cloud Shell
على الرغم من إمكانية تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس العملي Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.
تفعيل Cloud Shell
- من Cloud Console، انقر على تفعيل Cloud Shell
.

إذا كانت هذه هي المرة الأولى التي تبدأ فيها Cloud Shell، ستظهر لك شاشة وسيطة توضّح ماهية هذه الخدمة. إذا ظهرت لك شاشة وسيطة، انقر على متابعة.

يستغرق توفير Cloud Shell والاتصال به بضع لحظات فقط.

يتم تحميل هذا الجهاز الافتراضي بجميع أدوات التطوير اللازمة. توفّر هذه الخدمة دليلًا رئيسيًا دائمًا بسعة 5 غيغابايت وتعمل في Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يمكن إنجاز معظم عملك في هذا الدرس التطبيقي حول الترميز، إن لم يكن كله، باستخدام متصفح.
بعد الاتصال بـ Cloud Shell، من المفترض أن يظهر لك أنّه تم إثبات هويتك وأنّه تم ضبط المشروع على رقم تعريف مشروعك.
- نفِّذ الأمر التالي في Cloud Shell للتأكّد من إكمال عملية المصادقة:
gcloud auth list
ناتج الأمر
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- نفِّذ الأمر التالي في Cloud Shell للتأكّد من أنّ أمر gcloud يعرف مشروعك:
gcloud config list project
ناتج الأمر
[core] project = <PROJECT_ID>
إذا لم يكن كذلك، يمكنك تعيينه من خلال هذا الأمر:
gcloud config set project <PROJECT_ID>
ناتج الأمر
Updated property [core/project].
3- تفعيل Vision API
قبل البدء في استخدام Vision API، عليك تفعيلها. باستخدام Cloud Shell، يمكنك تفعيل واجهة برمجة التطبيقات باستخدام الأمر التالي:
gcloud services enable vision.googleapis.com
4. تثبيت مكتبة برامج Google Cloud Vision API للغة C#
أولاً، أنشئ تطبيق وحدة تحكّم بسيطًا بلغة C# ستستخدمه لتشغيل نماذج Vision API:
dotnet new console -n VisionApiDemo
من المفترض أن يظهر لك التطبيق الذي تم إنشاؤه وتم حلّ التبعيات:
The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.
بعد ذلك، انتقِل إلى المجلد VisionApiDemo:
cd VisionApiDemo/
وأضِف حزمة Google.Cloud.Vision.V1 NuGet إلى المشروع:
dotnet add package Google.Cloud.Vision.V1
info : Adding PackageReference for package 'Google.Cloud.Vision.V1' into project '/home/atameldev/VisionApiDemo/VisionApiDemo.csproj'.
log : Restoring packages for /home/atameldev/VisionApiDemo/VisionApiDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.Vision.V1' version '1.2.0' added to file '/home/atameldev/VisionApiDemo/VisionApiDemo.csproj'.
أنت الآن جاهز لاستخدام Vision API.
5- تنفيذ ميزة "اكتشاف التصنيفات"
من الميزات الأساسية في Vision API تحديد العناصر أو الكيانات في صورة، ويُعرف ذلك باسم "التعليق التوضيحي الخاص بالتصنيف". تحدّد ميزة "التعرّف على التصنيفات" العناصر العامة والمواقع الجغرافية والأنشطة وأنواع الحيوانات والمنتجات وغير ذلك. تتلقّى واجهة Vision API صورة كمدخل وتعرض التصنيفات الأكثر احتمالاً التي تنطبق على تلك الصورة. تعرض هذه الطريقة التصنيفات الأكثر تطابقًا مع الصورة، بالإضافة إلى درجة ثقة في التطابق مع الصورة.
في هذا المثال، ستنفّذ عملية رصد التصنيفات على صورة لمشهد شارع في شنغهاي. افتح أداة تعديل الرموز من أعلى يسار Cloud Shell:

انتقِل إلى ملف Program.cs داخل مجلد VisionApiDemo واستبدِل الرمز بالرمز التالي:
using Google.Cloud.Vision.V1;
using System;
namespace VisionApiDemo
{
class Program
{
static void Main(string[] args)
{
var client = ImageAnnotatorClient.Create();
var image = Image.FromUri("gs://cloud-samples-data/vision/using_curl/shanghai.jpeg");
var labels = client.DetectLabels(image);
Console.WriteLine("Labels (and confidence score):");
Console.WriteLine(new String('=', 30));
foreach (var label in labels)
{
Console.WriteLine($"{label.Description} ({(int)(label.Score * 100)}%)");
}
}
}
}
خصِّص دقيقة أو دقيقتَين لدراسة الرمز البرمجي والاطّلاع على كيفية استخدام مكتبة Vision API C# لإجراء عملية رصد التصنيفات.
في Cloud Shell، شغِّل التطبيق:
dotnet run
من المفترض أن يظهر لك الناتج التالي:
Labels (and confidence score):
==============================
Wheel (97%)
Tire (97%)
Photograph (94%)
Bicycle (94%)
Motor vehicle (89%)
Infrastructure (89%)
Vehicle (86%)
Mode of transport (84%)
Bicycle wheel (83%)
Asphalt (81%)
ملخّص
في هذه الخطوة، تمكّنت من رصد التصنيفات في صورة لمشهد في أحد شوارع الصين وعرض التصنيفات الأكثر صلة بهذه الصورة. مزيد من المعلومات حول ميزة "اكتشاف التصنيفات"
6. إجراء عملية رصد النص
تتيح ميزة "اكتشاف النص" في Vision API إمكانية التعرّف البصري على الأحرف. تتيح هذه الخدمة رصد النص واستخراجه من داخل صورة، وهي متوافقة مع مجموعة كبيرة من اللغات. تتضمّن هذه الميزة أيضًا التعرّف التلقائي على اللغة.
في هذا المثال، ستنفّذ عملية رصد للنص في صورة شاشة تحديث برامج النظام.
انتقِل إلى ملف Program.cs داخل مجلد VisionApiDemo واستبدِل الرمز بالرمز التالي:
using Google.Cloud.Vision.V1;
using System;
namespace VisionApiDemo
{
class Program
{
static void Main(string[] args)
{
var client = ImageAnnotatorClient.Create();
var image = Image.FromUri("gs://cloud-samples-data/vision/text/screen.jpg");
var response = client.DetectText(image);
foreach (var annotation in response)
{
if (annotation.Description != null)
{
Console.WriteLine(annotation.Description);
}
}
}
}
}
خصِّص دقيقة أو دقيقتَين لدراسة الرمز البرمجي والاطّلاع على كيفية استخدام مكتبة Vision API C# لإجراء عملية رصد النصوص.
في Cloud Shell، شغِّل التطبيق:
dotnet run
من المفترض أن يظهر لك الناتج التالي:
System Software Update
Back
Preparing to install...
After preparation is complete, the PS4 will automatically restart and the update file will be
installed.
37%
gus class
System
Software
Update
Back
Preparing
to
install
...
After
preparation
is
complete
,
the
PS4
will
automatically
restart
and
the
update
file
will
be
installed
.
37
%
gus
class
ملخّص
في هذه الخطوة، تمكّنت من رصد النص في صورة لحيوان قضاعة يعبر الطريق وطباعة النص الذي تم التعرّف عليه من الصورة. مزيد من المعلومات عن ميزة "رصد النص"
7. إجراء عملية رصد المعالم
تتعرّف ميزة "التعرّف على المعالم" في Vision API على المباني الطبيعية والمصنوعة يدويًا الشهيرة في الصورة.
في هذا المثال، ستنفّذ عملية التعرّف على المعالم البارزة في صورة برج إيفل.
انتقِل إلى ملف Program.cs داخل مجلد VisionApiDemo واستبدِل الرمز بالرمز التالي:
using Google.Cloud.Vision.V1;
using System;
namespace VisionApiDemo
{
class Program
{
static void Main(string[] args)
{
var client = ImageAnnotatorClient.Create();
var image = Image.FromUri("gs://cloud-samples-data/vision/eiffel_tower.jpg");
var response = client.DetectLandmarks(image);
foreach (var annotation in response)
{
if (annotation.Description != null)
{
Console.WriteLine(annotation.Description);
}
}
}
}
}
خصِّص دقيقة أو دقيقتَين لدراسة الرمز البرمجي والاطّلاع على كيفية استخدام مكتبة Vision API C# لإجراء عملية رصد المعالم.
في Cloud Shell، شغِّل التطبيق:
dotnet run
من المفترض أن يظهر لك الناتج التالي:
Eiffel Tower
ملخّص
في هذه الخطوة، تمكّنت من رصد معالم في صورة برج إيفل. مزيد من المعلومات حول ميزة "رصد المعالم"
8. تنفيذ ميزة "التعرّف على الوجوه العاطفية"
ترصد ميزة "التعرّف على الوجوه" وجوهًا متعددة في صورة واحدة، بالإضافة إلى السمات الرئيسية المرتبطة بالوجه، مثل الحالة العاطفية أو ارتداء غطاء الرأس.
في هذا المثال، ستكتشف احتمالية الحالة العاطفية من أربع احتمالات عاطفية مختلفة، بما في ذلك الفرح والغضب والحزن والمفاجأة.
انتقِل إلى ملف Program.cs داخل مجلد VisionApiDemo واستبدِل الرمز بالرمز التالي:
using Google.Cloud.Vision.V1;
using System;
namespace VisionApiDemo
{
class Program
{
static void Main(string[] args)
{
var client = ImageAnnotatorClient.Create();
var image = Image.FromUri("gs://cloud-samples-data/vision/face/face_no_surprise.jpg");
var response = client.DetectFaces(image);
foreach (var annotation in response)
{
Console.WriteLine($"Picture: {image}");
Console.WriteLine($" Surprise: {annotation.SurpriseLikelihood}");
}
}
}
}
خصِّص دقيقة أو دقيقتَين لدراسة الرمز البرمجي والاطّلاع على كيفية استخدام مكتبة Vision API C# لإجراء عملية التعرّف على الوجوه العاطفية.
تشغيل التطبيق
dotnet run
من المفترض أن يظهر لك الناتج التالي للمثال face_no_surprise:
Picture: { "source": { "imageUri": "gs://cloud-samples-data/vision/face/face_no_surprise.jpg" } }
Surprise: Likely
ملخّص
في هذه الخطوة، تمكّنت من رصد الوجوه التي تعبّر عن مشاعر. مزيد من المعلومات حول ميزة "التعرّف على الوجوه"
9- تهانينا!
تعرّفت على كيفية استخدام Vision API باستخدام C# لإجراء عمليات رصد مختلفة على الصور.
تَنظيم
لتجنُّب تحمّل رسوم في حسابك على Google Cloud Platform مقابل الموارد المستخدَمة في هذا الدليل السريع، اتّبِع الخطوات التالية:
- انتقِل إلى وحدة تحكّم Cloud Platform.
- اختَر المشروع الذي تريد إيقافه، ثم انقر على "حذف" في أعلى الصفحة: يؤدي ذلك إلى تحديد موعد لحذف المشروع.
مزيد من المعلومات
- Google Cloud Vision API: https://cloud.google.com/vision/docs/
- C#/.NET على Google Cloud Platform: https://cloud.google.com/dotnet/
- برنامج Google Cloud .NET: https://googlecloudplatform.github.io/google-cloud-dotnet
الترخيص
يخضع هذا العمل لترخيص المشاع الإبداعي مع نسب العمل إلى مؤلفه 2.0 Generic License.