إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
في هذا الدرس، تتعلم كيفية رفع صورة إلى Azure Blob Storage ومعالجتها باستخدام Azure Functions و Computer Vision. كما تتعلم كيفية تنفيذ محفزات وربط وظائف Azure كجزء من هذه العملية. تقوم هذه الخدمات معا بتحليل صورة تم تحميلها تحتوي على نص، واستخراج النص منه، ثم تخزين النص في صف قاعدة بيانات لتحليله لاحقا أو لأغراض أخرى.
Azure Blob Storage هو حل تخزين الكائنات القابل للتوسع الضخم من مايكروسوفت للسحابة. تم تصميم Blob Storage لتخزين الصور والمستندات، وبث ملفات الوسائط، وإدارة بيانات النسخ الاحتياطي والأرشيفة، وأكثر من ذلك بكثير. يمكنك قراءة المزيد عن Blob Storage في صفحة نظرة عامة.
Azure Functions هو حل حاسوبي بدون خادم يتيح لك كتابة وتشغيل كتل صغيرة من الكود كدوال قابلة للتوسع عالية، بدون خوادم، ومدفوعة بالأحداث. يمكنك قراءة المزيد عن Azure Functions في صفحة overview العامة.
في هذا البرنامج التعليمي، تتعلم كيفية:
- رفع الصور والملفات إلى Blob Storage
- استخدم محفز حدث Azure Function لمعالجة البيانات المرفوعة إلى Blob Storage
- استخدم أدوات Foundry لتحليل صورة
- كتابة البيانات إلى تخزين الجدول باستخدام روابط إخراج Azure Function
Prerequisites
- حساب Azure مع اشتراك نشط. أنشئ حسابا مجانا.
- Visual Studio 2022
إنشاء حساب تخزين وحاوية
تتمثل الخطوة الأولى في إنشاء حساب التخزين للاحتفاظ ببيانات الكائن الثنائي كبير الحجم التي تم تحميلها، والتي تكون في هذا السيناريو عبارة عن صور تحتوي على نص. يقدم حساب التخزين عدة خدمات مختلفة، لكن هذا الدرس يستخدم Blob Storage وTable Storage.
سجل الدخول إلى بوابة Azure.
في شريط البحث الموجود في أعلى المدخل، ابحث عن Storage وحدد النتيجة التي تحمل التسمية Storage accounts.
في صفحة Storage accounts، حدد + Create في أعلى اليسار.
في صفحة Create a storage account، أدخل القيم التالية:
- Subscription: اختر الاشتراك الذي تريده.
-
Resource Group: حدد Create new وأدخل اسم
msdocs-storage-function، ثم اختر OK. -
Storage account name: أدخل قيمة
msdocsstoragefunction. يجب أن يكون اسم حساب التخزين فريدا عبر Azure، لذا قد تحتاج إلى إضافة أرقام بعد الاسم، مثلmsdocsstoragefunction123. - Region: حدد المنطقة الأقرب إليك.
- Performance: اختر Standard.
- Redundancy: اترك القيمة الافتراضية محددة.
اختر Review + Create في الأسفل ويقوم Azure بالتحقق من المعلومات التي أدخلتها. بمجرد التحقق من الإعدادات، اختر Create ويبدأ Azure في توفير حساب التخزين، وقد يستغرق ذلك بعض الوقت.
إنشاء الحاوية
بعد تزويد حساب التخزين، حدد Go to Resource. الخطوة التالية هي إنشاء حاوية تخزين داخل الحساب للاحتفاظ بالصور المُحمَّلة لتحليلها.
في جزء التنقّل، اختر Containers.
في صفحة Containers حدد + Container في الأعلى. في لوحة الخروج، أدخل اسم تحليل الصور، وتأكد من تعيين مستوى الوصول العام إلى Blob (الوصول للقراءة المجهولة للكائنات الثنائية كبيرة الحجم فقط) . وبعد ذلك، حدد إنشاء.
يجب أن ترى الحاوية الجديدة ظاهرة في قائمة الحاويات.
استرجاع connection string
الخطوة الأخيرة هي استرجاع connection string الخاص بنا لحساب التخزين.
في جزء التنقّل الأيسر، حدد Access Keys.
في Access Keys page، حدد Show keys. انسخ قيمة سلسلة الاتصال ضمن قسم key1 والصق المفتاح في مكان ما لاستخدامه لاحقا. قم بتدوين اسم
msdocsstoragefunctionحساب التخزين لوقت لاحق أيضا.
هذه القيم ضرورية عندما نحتاج لتوصيل وظيفة Azure بهذا الحساب التخزيني.
إنشاء خدمة Computer Vision
بعد ذلك، أنشئ حساب خدمة Computer Vision الذي يعالج ملفاتنا المرفوعة. Computer Vision هي جزء من Foundry Tools وتقدم ميزات متنوعة لاستخراج البيانات من الصور. يمكنك معرفة المزيد عن Computer Vision في صفحة overview العمومية.
في شريط البحث الموجود في أعلى المدخل، ابحث عن Computer وحدد النتيجة التي تحمل التسمية Computer vision.
في صفحة Computer vision، حدد + Create.
في صفحة إنشاء Computer Vision، أدخل القيم التالية:
- Subscription: اختر الاشتراك الذي تريده.
-
Resource Group: استخدم مجموعة الموارد
msdocs-storage-functionالتي أنشأتها سابقاً. - Region: حدد المنطقة الأقرب إليك.
-
Name: أدخل اسم
msdocscomputervision. - Pricing Tier: اختر Free إذا كانت متوفرة، وإلا فاختر Standard S1.
- حدد مربع Responsible AI Notice إذا كنت توافق على الشروط
حدد Review + Create في الأسفل. Azure يأخذ لحظة للتحقق من المعلومات التي أدخلتها. بمجرد التحقق من الإعدادات، اختر Create ويبدأ Azure في تجهيز خدمة Computer Vision، وقد يستغرق ذلك بعض الوقت.
عند اكتمال العملية، حدد الانتقال إلى المورد.
استرداد المفاتيح
بعد ذلك، نحتاج إلى العثور على المفتاح السري ورابط نقطة النهاية لخدمة Computer Vision لاستخدامها في تطبيق Azure Function الخاص بنا.
في صفحة النظرة العامة Computer Vision، اختر Keys و Endpoint.
في صفحة Keys and EndPoint، انسخ قيمة Key 1 وقيم EndPoint والصقها في مكان ما لاستخدامها لاحقاً.
تنزيل عينة المشروع وتكوينها
يمكن العثور على الكود الخاص بدالة Azure المستخدمة في هذا الدرس في this GitHub repository. يمكنك أيضا استنساخ المشروع باستخدام الأمر التالي:
git clone https://github.com/Azure-Samples/msdocs-storage-bind-function-service.git \
cd msdocs-storage-bind-function-service/dotnet
تنجز عينة التعليمات البرمجية للمشروع المهام التالية:
- يسترجع متغيرات البيئة للاتصال بحساب التخزين وخدمة Computer Vision
- قبول الملف المُحمَّل كمعلمة كائن ثنائي كبير الحجم
- يحلل الكتلة باستخدام خدمة Computer Vision
- إرسال نص الصورة الذي تم تحليله إلى صف جدول جديد باستخدام عمليات ربط المخرجات
بمجرد تنزيل المشروع وفتحه ، هناك بعض المفاهيم الأساسية التي يجب فهمها في الطريقة الرئيسية Run الموضحة أدناه. تستخدم دالة Azure روابط المحفز والإخراج، والتي تطبق باستخدام سمات على توقيع طريقة Run.
تستخدم سمة Table معلمتين. تحدد المعلمة الأولى اسم الجدول لكتابة قيمة نص الصورة الموزّعة التي تُرجِعها الدالة. المعامل الثاني Connection يسحب connection string تخزين الجدول من متغيرات البيئة بحيث يكون لدى دالة Azure وصول إليها.
تستخدم خاصية BlobTrigger لربط وظيفتنا بحدث الرفع في Blob Storage، وتوفر الكتلة التي تم رفعها إلى دالة Run. لمشغل blob معياران خاصان به - واحد لاسم حاوية blob لمراقبتها للرفعات، وواحد لسلسلة connection string في حساب التخزين لدينا مرة أخرى.
// Azure Function name and output Binding to Table Storage
[FunctionName("ProcessImageUpload")]
[return: Table("ImageText", Connection = "StorageConnection")]
// Trigger binding runs when an image is uploaded to the blob container below
public async Task<ImageContent> Run([BlobTrigger("imageanalysis/{name}",
Connection = "StorageConnection")]Stream myBlob, string name, ILogger log)
{
// Get connection configurations
string subscriptionKey = Environment.GetEnvironmentVariable("ComputerVisionKey");
string endpoint = Environment.GetEnvironmentVariable("ComputerVisionEndpoint");
string imgUrl = $"https://{ Environment.GetEnvironmentVariable("StorageAccountName")}
.blob.core.windows.net/imageanalysis/{name}";
ComputerVisionClient client = new ComputerVisionClient(
new ApiKeyServiceClientCredentials(subscriptionKey)) { Endpoint = endpoint };
// Get the analyzed image contents
var textContext = await AnalyzeImageContent(client, imgUrl);
return new ImageContent {
PartitionKey = "Images",
RowKey = Guid.NewGuid().ToString(), Text = textContext
};
}
public class ImageContent
{
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public string Text { get; set; }
}
يسترجع هذا الكود أيضا قيم التكوين الأساسية من متغيرات البيئة، مثل حساب التخزين connection string ومفتاح Computer Vision. سنضيف هذه المتغيرات البيئية إلى بيئة Azure Function بعد نشرها.
تستخدم الوظيفة ProcessImage أيضا طريقة ثانية تسمى AnalyzeImage. يستخدم هذا الكود رابط الرابط ونقطة النهاية والمفتاح في حسابنا في Computer Vision لتقديم طلب إلى ذلك الخادم لمعالجة صورتنا. يقوم الطلب بإرجاع كل النص المكتشف في الصورة، والذي تمت كتابته إلى Table Storage باستخدام ربط الإخراج على Run الطريقة.
static async Task<string> ReadFileUrl(ComputerVisionClient client, string urlFile)
{
// Analyze the file using Computer Vision Client
var textHeaders = await client.ReadAsync(urlFile);
string operationLocation = textHeaders.OperationLocation;
Thread.Sleep(2000);
// Complete code omitted for brevity, view in sample project
return text.ToString();
}
التشغيل محلياً
إذا كنت ترغب في تشغيل المشروع محلياً، يمكنك ملء متغيرات البيئة باستخدام ملف local.settings.json. داخل هذا الملف، املأ القيم المؤقتة بالقيم التي حفظتها سابقا عند إنشاء موارد Azure.
على الرغم من أن كود Azure Function يعمل محليا، إلا أنه لا يزال يتصل بالخدمات الحية الموجودة على Azure، بدلا من استخدام أي محاكيات محلية.
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"StorageConnection": "your-storage-account-connection-string",
"StorageAccountName": "your-storage-account-name",
"ComputerVisionKey": "your-computer-vision-key",
"ComputerVisionEndPoint": "your-computer-vision-endpoint"
}
}
Deploy the code to Azure Functions
أنت الآن جاهز لنشر تطبيقنا على Azure باستخدام Visual Studio. يمكنك أيضا إنشاء تطبيق Azure Functions في Azure في نفس الوقت كجزء من عملية النشر.
للبدء، حدد عقدة مشروع ProcessImage وحدد Publish.
في شاشة الحوار Publish، اختر Azure واختر Next.
اختر Azure تطبيق الوظائف (Windows) أو Azure تطبيق الوظائف (لينكس) في الشاشة التالية، ثم اختر Next مرة أخرى.
في خطوة Functions instance، تأكد من اختيار الاشتراك الذي تريد التوزيع عليه. بعد ذلك، حدد رمز + الأخضر على الجانب الأيمن من مربع الحوار.
يفتح مربع حوار جديد. أدخل القيم التالية لتطبيق الوظائف الجديد.
- Name: أدخل msdocsprocessimage أو ما شابه.
- Subscription Name: اختر الاشتراك الذي تريد استخدامه.
-
Resource Group: اختر مجموعة الموارد
msdocs-storage-functionالتي أنشأتها سابقاً. - Plan Type: حدد Consumption.
- Location: اختر المنطقة الأقرب إليك.
- Azure Storage: اختر حساب التخزين الذي أنشأته سابقا.
بمجرد ملء كل هذه القيم، حدد إنشاء. تبدأ Visual Studio وAzure في تجهيز الموارد المطلوبة، ويستغرق ذلك بضع لحظات لإكماله.
بمجرد انتهاء العملية، حدد إنهاء لإغلاق سير عمل مربع الحوار.
الخطوة النهائية لنشر دالة Azure هي اختيار Publish في أعلى يمين الشاشة. قد يستغرق نشر الدالة أيضاً بضع لحظات حتى يكتمل. بمجرد الانتهاء، يصبح تطبيقك يعمل على Azure.
اتصال الخدمات
تم نشر وظيفة Azure بنجاح، لكنها لا تستطيع الاتصال بحسابنا التخزيني وخدمات Computer Vision حتى الآن. يجب أولا إضافة المفاتيح الصحيحة وسلاسل الاتصال إلى إعدادات التكوين في تطبيق Azure Functions.
في أعلى بوابة Azure، ابحث عن function واختر Function App من النتائج.
على شاشة Function App، اختر تطبيق الوظائف الذي أنشأته في Visual Studio.
في صفحة نظرة عامة على تطبيق الوظائف ، حدد التكوين في شريط التنقل الأيمن لفتح صفحة حيث يمكننا إدارة أنواع مختلفة من إعدادات التكوين لتطبيقنا. في الوقت الحالي، نحن مهتمون بقسم Application Settings.
الخطوة التالية هي إضافة إعدادات لاسم حساب التخزين وسلسلة connection string، ومفتاح Computer Vision السري، ونقطة النهاية Computer Vision.
في علامة التبويب Application settings، حدد + New application setting. في القائمة المنبثقة التي تظهر، أدخل المعلومات التالية:
- Name: أدخل قيمة ComputerVisionKey.
- Value: قم بلصق مفتاح Computer Vision الذي حفظته سابقا.
حدد موافق لإضافة هذا الإعداد إلى تطبيقك.
بعد ذلك، دعونا نكرر هذه العملية لنقطة نهاية خدمة Computer Vision الخاصة بنا، باستخدام القيم التالية:
- Name: أدخل قيمة ComputerVisionEndpoint.
- Value: الصق عنوان URL لنقطة النهاية الذي حفظته سابقاً.
كرر هذه الخطوة مرة أخرى لاتصال حساب التخزين، باستخدام القيم التالية:
- Name: أدخل قيمة StorageConnection.
- Value: الصق connection string حفظته سابقا.
وأخيراً، كرر هذه العملية مرة أخرى لاسم حساب التخزين، باستخدام القيم التالية:
- Name: أدخل قيمة StorageAccountName.
- Value: أدخل اسم حساب التخزين الذي أنشأته.
بعد إضافة إعدادات التطبيق هذه، تأكد من تحديد حفظ في أعلى صفحة التكوين. عند اكتمال الحفظ، يمكنك الضغط على Refresh أيضاً للتأكد من التقاط الإعدادات.
جميع المتغيرات البيئية المطلوبة لربط وظيفة Azure بخدمات مختلفة أصبحت الآن جاهزة.
رفع صورة إلى Blob Storage
أنت الآن جاهز لاختبار طلبنا! يمكنك تحميل كائن ثنائي كبير الحجم إلى الحاوية، ثم التحقق من حفظ النص الموجود في الصورة في Table Storage.
أولا، في أعلى بوابة Azure، ابحث عن Storage واختر storageaccount. في صفحة storage account، حدد الحساب الذي أنشأته سابقاً.
بعد ذلك، حدد Containers على شريط التنقل الأيسر، ثم انتقل إلى حاوية ImageAnalysis التي أنشأتها سابقاً. من هنا، يمكنك تحميل صورة اختبارية مباشرة داخل المستعرض.
يمكنك العثور على بعض نماذج الصور المضمنة في مجلد images في جذر عينة المشروع القابلة للتنزيل، أو يمكنك استخدام صورة خاصة بك.
في أعلى صفحة ImageAnalysis، حدد Upload. في القائمة المنبثقة التي تفتح، حدد أيقونة المجلد لفتح مستعرض ملفات. اختر الصورة التي تريد تحميلها، ثم حدد Upload.
يجب أن يظهر الملف داخل حاوية الكائنات الثنائية كبيرة الحجم. بعد ذلك، يمكنك التحقق من أن الرفع هو من فعل وظيفة Azure، وأن النص في الصورة تم تحليله وحفظه في التخزين الجدولي بشكل صحيح.
باستخدام العناوين في أعلى الصفحة، انتقل لأعلى مستوى واحد في حساب التخزين. حدد موقع Storage browser وحدده على شريط التنقل الأيسر، ثم حدد Tables.
يجب أن يكون جدول ImageText متاحاً الآن. حدد في الجدول لمعاينة صفوف البيانات بداخله. يجب أن ترى إدخالاً لنص الصورة الذي تمت معالجته للتحميل. يمكنك التحقق من ذلك باستخدام الطابع الزمني، أو عن طريق عرض محتوى عمود Text.
Congratulations! لقد نجحت في معالجة صورة تم رفعها إلى Blob Storage باستخدام Azure Functions و Computer Vision.
تنظيف الموارد
إذا كنت لن تستمر في استخدام هذا التطبيق، يمكنك حذف الموارد التي أنشأتها عن طريق إزالة مجموعة الموارد.
- حدد Resource groups من التنقل الرئيسي
- حدد مجموعة الموارد
msdocs-storage-functionمن القائمة. - حدد زر Delete resource group أعلى صفحة النظرة العامة على مجموعة الموارد.
- أدخل اسم مجموعة الموارد msdocs-storage-function في مربع حوار التأكيد.
- حدد حذف. قد تستغرق عملية حذف مجموعة الموارد بضع دقائق لإكمالها.