استخدام 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.png

37d264871000675d.png

96d86d3d5655cdbe.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/

وإضافة حزمة NuGet Google.Cloud.Vision.V1 إلى المشروع:

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

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

الترخيص

هذا العمل مرخّص بموجب رخصة المشاع الإبداعي 2.0 مع نسب العمل إلى مؤلف عام.