التعرف البصري على الأحرف (OCR) هو أحد نماذج الذكاء الصنعي البصرية. يستخدم بشكل شائع في قراءة المستند المطبوع أو النص المكتوب باليد. عادة تكون عملية التعرف البصري للنص هي خطوة أولية لاستخراج النص ثم تمريره لعملية تحليل أو معالجة أخرى لاحقة.
كما أنه يوجد سيناريوهات متقدمة لاستخدام نماذج تعرف بصري (OCR) لاستخراج النص من عدة أشكال من المستندات مثل:
- طلبات الشراء
- الفواتير
- السير الذاتية
وغيرها من النماذج المحددة لغرض ما، وبالتالي يتم استخراج النص مع فهم أن له دلالة محددة لحقول مختلفة مثل تاريخ الفاتورة أو العناصر التي تم شرائها.
خدمة Azure Form Recognizer صممت من أجل هذا النوع المتقدم من التعرف البصري.
Form Recognizer يستخرج النص من الصور التي تمثل مستندات من الأنواع التالية:
- النص المكتوب يدوياً
- الفواتير
- إيصالات الشراء
- بطاقات تعارف العمل (Business cards)
- مستندات الهويات المختلفة
- العقود
- بطاقات التأمين الصحي
- بطاقات التطعيم
- يمكن تدريب نموذج ذكاء صنعي لنوع مستند مخصص ما
خدمة Form recognizer تستطيع أيضاً معرفة البنية الخاصة بالنص، مثل key/value أو بنية النص الموجود ضمن جدول يحوي أسطر وأعمدة. تماماً كما هو الحال في إيصال الشراء والفواتير.
هذه التدوينة هي جزء من تدوينة مفصلة عن سيناريو سحابي متعلق بتصميم برمجية سحابية عن حملة تسويقية تقوم بطرح مسابقة تحتاج إلى عمليات تحقق من الصور باستخدام الذكاء الصنعي.
إنشاء مجموعة موارد (Resource Group) في Azure
إنشاء الموارد في الخدمة السحابية Azure يتم بعدة طرق
- يمكن استخدام Azure CLI وتنفيذ az scripts
- يمكن استخدام برمجية (Infrastructure as a Code) مثل Terraform
- يمكن استخدام تطبيق الويب Azure Portal
سأقوم باستخدام بوابة الويب Azure portal لأنها الأبسط والأسرع الآن.
الخطوة الأولى هي إنشاء مجموعة الموارد (resource group) ضمن اشتراك azure subscription. قمت بتسميتها “AI-Demos”.
إنشاء خدمة From Recognizer
انتقل إلى Azure Marketplace وابحث عن “Form Recognizer”:
ثم قم بإنشاء الخدمة:
- اختر المنطقة السحابية (Region): UAE North شمال الإمارات العربية المتحدة
- اسم الخدمة
- شريحة التسعير :اختر الشريحة المجانية في حالات الاختبار ولكن عند بناء البرمجية بشكل فعلي يجب اختيار Standard
بعد ذلك ستنتقل إلى تبويبة إعدادات الشبكة:
- في حالات التجربة بإمكانك إبقاء الخيار كل الشبكات “all networks” ولكن في السيناريوهات الحقيقية يجب أن تكون الخدمة محتواة في شبكة معينة ويجب التحكم في من يستطيع استخدامها. يوجد خيار إضافي يمكن استخدامه وهو “private endpoint”
ثم الانتقال إلى تبويبة الهوية “Identity” ويمكن إلغاء تفعيلها أثناء التجربة ، أما في السيناريوهات الحقيقية يمكن الاستفادة من تفعيل “managed identity” الخاص بالخدمة لتسهيل إعطاء الخدمة سماحيات وصول لخدمات أخرى كخدمة التخزين مثلاً، حيث من الممكن أن تخزن الصورعلى خدمة التخزين ثم تقوم الخدمة بقرائتها واستخراج النص منها.
بعد إنشاء الخدمة ستلاحظ أنها ظهرت ضمن موارد المجموعة التي أنشأتها في الخطوة الأولى، هذا كل شيء !!
استخدام Form Recognizer Studio
بعد إنشاء خدمة Form Recognizer, يمكنك استخدام Form Recognizer Studio.
Form Recognizer Studio هو عبارة عن أداة تتيح لك تجربة الميزات المختلفة لخدمات Form Recognizer لكي تتمكن من دمجها وتضمينها في حلولك البرمجية. هذه الأداة تتيح تجربة مختلف نماذج التوقع المتوفرة ضمنها وتقوم باستخراج النص من الصور دون الحاجة أن تكتب الأكواد، بل تقويم بتزويدك بأمثلة موضحة بعدة لغات برمجة عن كيفية استدعاء الخدمة ضمن البرمجية التي تصممها.
لنقم الآن بتجربة هذه الأداة بالانتقال إلى الرابط التالي: https://formrecognizer.appliedai.azure.com/
في هذه الصفحة الرئيسة ستلاحظ وجود خدمات مختلفة ومتنوعة متعلقة بتحليل المستندات ، نمائج مصممة مسبقاً “pre-built” وكذلك إمكانية صنع نموذج مخصص “custom models”
- النماذج المصممة مسبقاً تستخدم من أجل نوع محدد من المستندات مثل إيصال الشراء “receipt”
- نماذج مخصصة تتيح إمكانية تدريب النموذج على نوع مخصص من المستندات
بالنسبة لهذه التدوينة فإن النماذج الجاهزة كافية حيث يوجد نموذج جاهز لإيصالات الشراء.
اضغط على النموذج “Receipts” ثم تسجيل الدخول بنفس حساب الخدمة السحابية في حال لم يتم تسجيل الدخول مسبقاً.
بعد ذلك ستظهر نافذة مخصصة لضبط بعض الإعدادات المتعلقة بالخدمة:
- اختيار اشتراك السحابة “azure subscription”
- اختيار مجموعة الموارد التي تحوي الخدمة “resource group”
- الضغط على إكمال “Continue”
والآن يتم الانتقال إلى الصفحة الرئيسة للمشروع :
- هنا نستطيع تحليل صورة إيصال شراء من الأمثلة المتوفرة عن طريق اختيارها ثم الضغط ، كما يمكن تحميل صورة “Analyze”
بعد الضغط على “Analyze” نلاحظ النتائج التالية
- الحقول التي تنتج على عملية التحليل وموضحة بعدة ألوان
- يمكن أيضاً قراءة النتيجة بصيغة JSON
- يمكن الاطلاع على أمثلة الكود بمختلف اللغات Python, JavaScript, C#
الآن تم إنشاء الخدمة بنجاح ويمكن دمجها في الحلول البرمجية الخاصة بنا.
كم تكلّف خدمة Form Recognizer?
يمكن استخدام حاسبة التكلفة الخاصة بـ Azure, سنلاحظ أنها تكلف $10 من أجل كل 1000 استدعاء بالنسبة للنماذج الجاهزة كإيصال الشراء بحالتنا.
في تدوينة السيناريوهات السحابية الخاصة بحملة التسويق الرقمي واستخدام الذكاء الصنعي كان المتوقع استهداف مليون مستخدم وبالتالي مليون إيصال شراء بحاجة للتحليل، بمعنى ستكلف هذه الخدمة مبلغ 10 آلاف دولار
ماذا لو كان هذا المبلغ يتجاوز الميزانية المخصصة؟
قمت بالإطلاع على بعض البدائل التي قد تكون كافية بحسب طبيعة البرمجية والحل الذي نحاول تطبيقه، فوجدت هذه المكتبة واسمها PaddleOCR وهي مفتوحة المصدر، أنا لم استخدمها من قبل في أي سيناريو حقيقي ولكن قد تكون مناسبة لبعض الحالات وهي ليست بنفس درجة الاحترافية والدقة التي تتمتع بها Form Recognizer بالطبع
طبعاً ليس من السهل المقارنة، لابد من الانطلاق أولاً من المتطلبات التي نحاول تلبيتها وكذلك يجب أن نقوم ببعض الاختبارات المتعلقة بالأداء “Load Test” فحتى لو استخدمنا مكتبة مجانية لكن لازال علينا احتساب تكلفة المعالجة “computation power” لأننا سنقوم بتشغيلها على مخدم افتراضي على السحابة وقد تكلفنا أكثر من Form Recognizer فضلاً عن جهد التشغليلي الإضافي للمخدم .
لذلك ليس من البساطة معرفة إن كانت بديلاً جيداً أم لا.