استخدام Vision API مع C#

1. نظرة عامة

تتيح واجهة Google Cloud Vision API للمطوّرين دمج ميزات رصد الصور بسهولة في التطبيقات، بما في ذلك تصنيف الصور، ورصد الوجوه والمعالم، والتعرّف البصري على الأحرف (OCR)، ووضع علامات على المحتوى الفاضح.

في هذا الدرس التطبيقي حول الترميز، ستركز على استخدام Vision API مع لغة C#. ستتعرّف على كيفية رصد النصوص والمعالم والوجوه.

ما ستتعلمه

  • كيفية استخدام Cloud Shell
  • كيفية تفعيل Google Cloud Vision API
  • كيفية المصادقة على طلبات البيانات من واجهة برمجة التطبيقات
  • كيفية تثبيت مكتبة برامج Vision API للغة C#‎
  • كيفية تنفيذ ميزة "التعرّف على الملصقات"
  • كيفية تنفيذ عملية "رصد النص"
  • كيفية تنفيذ عملية "رصد المعالم"
  • كيفية إجراء عملية "التعرّف على الوجوه"

المتطلبات

  • مشروع على Google Cloud Platform
  • متصفّح، مثل Chrome أو Firefox
  • الإلمام باستخدام لغة C#‎

استطلاع الرأي

كيف ستستخدم هذا البرنامج التعليمي؟

قراءة النص فقط قراءة النص وإكمال التمارين

كيف تقيّم تجربتك مع لغة C#؟

مبتدئ متوسط متقن

ما هو تقييمك لتجربة استخدام خدمات Google Cloud Platform؟

مبتدئ متوسط متقدّم

2. الإعداد والمتطلبات

إعداد البيئة بالسرعة التي تناسبك

  1. سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

295004821bab6a87.png37d264871000675d.png96d86d3d5655cdbe.png

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

بدء Cloud Shell

على الرغم من إمكانية تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي حول الترميز Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.

تفعيل Cloud Shell

  1. من Cloud Console، انقر على تفعيل Cloud Shell d1264ca30785e435.png.

cb81e7c8e34bc8d.png

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

d95252b003979716.png

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

7833d5e1c5d18f54.png

يتم تحميل هذا الجهاز الافتراضي بجميع أدوات التطوير اللازمة. توفّر هذه الخدمة دليلًا منزليًا ثابتًا بسعة 5 غيغابايت وتعمل في Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يمكن إنجاز معظم عملك في هذا الدرس البرمجي، إن لم يكن كله، باستخدام متصفّح.

بعد الاتصال بـ Cloud Shell، من المفترض أن يظهر لك أنّه تم إثبات هويتك وأنّ المشروع مضبوط على رقم تعريف مشروعك.

  1. نفِّذ الأمر التالي في 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`
  1. نفِّذ الأمر التالي في 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:

92ea233083f961c5.png

انتقِل إلى ملف 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.
  • اختَر المشروع الذي تريد إيقافه، ثم انقر على "حذف" في أعلى الصفحة: يؤدي ذلك إلى تحديد موعد لحذف المشروع.

مزيد من المعلومات

الترخيص

يخضع هذا العمل لترخيص Creative Commons Attribution 2.0 Generic License.