يا جماعة الخير، السلام عليكم ورحمة الله.
بتذكر قبل كم سنة، كنا شغالين على مشروع “فنتك” (Fintech) جديد، وكان الحماس واصل للسما. كل إشي كان ماشي زي الحلاوة، التصميم بجنن، والبرمجة الخلفية قوية ومتينة، لحد ما وصلنا لعقبة كادت أن تنسف المشروع كله: عملية التحقق من هوية العملاء، أو ما يُعرف بـ “اعرف عميلك” (Know Your Customer – KYC).
كنا قاعدين أنا والشباب بالمكتب للساعة 2 بالليل، وقدامنا جبل من صور الهويات وجوازات السفر اللي بعتوها المستخدمين الأوائل. كان في شب معنا اسمه “سامر”، شب أصيل وشغيل، بس كان هو المسؤول عن إدخال البيانات يدويًا. أتطلع عليه ألاقيه صافن بالشاشة وعينيه حمر، بكتب اسم العميل، بعدين رقم الهوية، بعدين تاريخ الميلاد… حرف حرف ورقم رقم. وفي مرة من المرات، صرخ سامر: “يا زلمة ولّعت معي! كمان مرة غلطت برقم هوية!”. كان غلط بسيط، بدل 8 كتب 3، بس هالغلط كلفنا تأخير يومين كاملين لعميل مهم، وكنا رح نخسره. وقتها قلت لحالي: “لهون وبس! مستحيل نكمل هيك. لازم نلاقي حل تقني، إحنا مبرمجين مش مدخلي بيانات!”. ومن هداك اليوم، بلشت رحلتنا مع الـ OCR اللي غيرت كل إشي.
ما هو كابوس “اعرف عميلك” (KYC) الذي عشناه؟
قبل ما أغوص في الحل، خليني أشرحلكم أكتر عن المشكلة. عملية “اعرف عميلك” (KYC) هي إجراء إلزامي على كل المؤسسات المالية والبنوك والشركات التقنية المالية. الهدف منها هو التحقق من هوية العميل الحقيقية عشان نمنع عمليات غسيل الأموال، تمويل الإرهاب، والاحتيال. الإجراء بحد ذاته مهم وضروري، بس الطريقة التقليدية لتنفيذه كانت الجحيم بعينه.
دورة المعاناة اليدوية
كانت العملية تسير بالشكل التالي:
- العميل يقوم بالتسجيل في التطبيق، ثم يرفع صورة عن بطاقة هويته أو جواز سفره.
- تصل الصورة لفريق العمليات (اللي كان مكون من سامر المسكين في البداية).
- يقوم الموظف بفتح الصورة على شاشة، وفتح نظام الإدارة على شاشة ثانية.
- يبدأ بنقل المعلومات يدويًا: الاسم الكامل، الرقم الوطني، تاريخ الميلاد، تاريخ انتهاء صلاحية الوثيقة، إلخ.
- بعد الانتهاء، يضغط على زر “موافقة” لتفعيل حساب العميل.
وين المشاكل بهاي العملية؟ حدث ولا حرج:
البطء الشديد: العملية كانت تاخد من 5 إلى 10 دقائق لكل عميل في أفضل الأحوال. تخيل لما يكون عندك 1000 عميل جديد في اليوم؟
الأخطاء البشرية: كما حصل مع صاحبنا سامر، الأخطاء في إدخال الأرقام أو الحروف كانت واردة جدًا، وتسبب مشاكل قانونية وتشغيلية كبيرة.
التكلفة العالية: أنت تدفع رواتب لموظفين ليقوموا بمهمة روتينية ومملة بدلًا من استغلال طاقاتهم في مهام أكثر أهمية.
تجربة عميل سيئة: مين بحب يسجل في خدمة ويستنى يوم أو يومين ليتفعل حسابه؟ العميل اليوم بده كل إشي فوري.
شعاع النور في نهاية النفق: التعرف الضوئي على الحروف (OCR)
هنا دخلت تقنية التعرف الضوئي على الحروف (Optical Character Recognition – OCR) كالبطل المنقذ. ببساطة، الـ OCR هي تقنية تسمح للكمبيوتر “بقراءة” النصوص الموجودة داخل الصور وتحويلها إلى بيانات نصية قابلة للمعالجة.
شو قصة الـ OCR هاي؟
تخيل أنك صورت صفحة من كتاب. بالنسبة للكمبيوتر، هذه الصورة هي مجرد مجموعة من البيكسلات (نقاط ملونة). هو لا “يفهم” أن هذه الأشكال هي حروف وكلمات. تقنية الـ OCR هي العقل الذكي الذي يحلل هذه البيكسلات، يتعرف على الأنماط التي تشكل الحروف، ويقوم بتحويلها إلى نص حقيقي يمكنك نسخه ولصقه في أي محرر نصوص. باختصار، هي الجسر بين العالم المرئي (الصور) وعالم البيانات الرقمية.
كيف يعمل الـ OCR في سياق الـ KYC؟
عندما طبقنا نظام الـ OCR، تحولت دورة المعاناة إلى عملية مؤتمتة وسلسة:
- التجهيز المسبق للصورة (Image Pre-processing): أول ما توصلنا صورة الهوية، النظام بقوم بتنظيفها تلقائيًا. يشمل ذلك تصحيح أي ميلان في الصورة (Deskewing)، إزالة الظلال والتشويش (Noise Reduction)، وزيادة التباين لجعل النص أوضح.
- اكتشاف النص (Text Detection): الخوارزمية تحدد أماكن وجود النصوص على بطاقة الهوية وترسم مربعات حولها (Bounding Boxes).
- التعرف على النص (Text Recognition): هنا يبدأ السحر الحقيقي. النظام يقرأ الحروف داخل كل مربع ويحولها إلى نص رقمي.
- هيكلة البيانات (Data Structuring): هذه هي الخطوة الأهم. النظام لا يكتفي باستخراج النص بشكل عشوائي، بل يفهم سياقه. باستخدام تقنيات مثل التعبيرات النمطية (Regular Expressions) أو حتى نماذج تعلم الآلة المصغرة، يقوم النظام بتحديد أن “محمد أحمد” هو الاسم، و “123456789” هو الرقم الوطني، و “1990/05/20” هو تاريخ الميلاد، ثم يضع كل معلومة في الحقل المخصص لها في قاعدة البيانات.
من النظرية إلى التطبيق: بناء نظام KYC مع OCR
الكلام النظري جميل، لكن خلينا نحكي “شغل مقاولات” زي ما بنقول. كيف ممكن نبني نظام زي هاد؟
الأدوات والتقنيات اللي ممكن نستخدمها
هناك خيارات كثيرة، منها مفتوح المصدر ومنها الخدمات السحابية المدفوعة:
- Tesseract OCR: هو أشهر محرك OCR مفتوح المصدر، مدعوم من جوجل. قوي جدًا ويدعم اللغة العربية بشكل جيد (مع الحاجة لبعض التعديلات). يمكن استخدامه مع لغات برمجة كثيرة مثل بايثون.
- الخدمات السحابية (Cloud Services): شركات مثل Google (Vision AI), Amazon (Textract), و Microsoft (Azure Cognitive Services) تقدم خدمات OCR جاهزة وقوية جدًا عبر API. ميزتها أنها سهلة الاستخدام ومدربة على كم هائل من البيانات، لكنها مدفوعة وتتطلب اتصال بالإنترنت.
مثال كود بسيط باستخدام Python و Tesseract
لتقريب الصورة، هي مثال بسيط بلغة بايثون يوضح كيف ممكن نستخدم مكتبة pytesseract (التي تعتمد على Tesseract) لاستخراج نص من صورة، ثم استخدام التعبيرات النمطية (Regular Expressions) لاستخلاص معلومات محددة.
# أولاً، تأكد من تثبيت المكتبات اللازمة
# pip install pytesseract opencv-python pillow
import pytesseract
import cv2
import re
# قم بتحديد مسار Tesseract على جهازك (قد يختلف المسار)
# pytesseract.pytesseract.tesseract_cmd = r'C:Program FilesTesseract-OCRtesseract.exe'
# 1. تحميل الصورة ومعالجتها بشكل بسيط
image_path = 'id_card_example.jpg'
image = cv2.imread(image_path)
# تحويل الصورة إلى تدرج الرمادي لتحسين دقة القراءة
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 2. استخدام Tesseract لاستخراج كل النص من الصورة
# نستخدم lang='ara' لتحديد أننا نتوقع نصًا عربيًا
# يمكن استخدام 'ara+eng' إذا كانت الوثيقة تحتوي على اللغتين
extracted_text = pytesseract.image_to_string(gray_image, lang='ara')
print("--- النص الخام المستخرج ---")
print(extracted_text)
print("---------------------------n")
# 3. هيكلة البيانات باستخدام التعبيرات النمطية (Regex)
# لنفترض أننا نبحث عن رقم وطني مكون من 9 أرقام
# ونبحث عن تاريخ ميلاد بصيغة YYYY/MM/DD
national_id = None
dob = None
# البحث عن نمط الرقم الوطني (مثال: 9 أرقام متتالية)
id_pattern = re.compile(r'bd{9}b')
id_match = id_pattern.search(extracted_text)
if id_match:
national_id = id_match.group(0)
# البحث عن نمط تاريخ الميلاد
dob_pattern = re.compile(r'(d{4}/d{2}/d{2})')
dob_match = dob_pattern.search(extracted_text)
if dob_match:
dob = dob_match.group(0)
print(f"الرقم الوطني المستخرج: {national_id}")
print(f"تاريخ الميلاد المستخرج: {dob}")
هذا مجرد مثال بسيط جدًا. الأنظمة الحقيقية أكثر تعقيدًا وتتضمن معالجة متقدمة للصور ونماذج أذكى لفهم تخطيط الوثيقة.
نصائح من خبرة “أبو عمر” الميدانية
بعد سنوات من الشغل على هاي الأنظمة، تعلمت كم درس “على جلدي” زي ما بقولوا. اسمحولي أشاركم أهمها:
- جودة الصورة هي كل إشي: دائمًا كنت أحكي للفريق: “الزبالة اللي بتدخل، زبالة بتطلع” (Garbage in, garbage out). إذا كانت الصورة المُدخلة سيئة (مغبشة، فيها انعكاس ضوء، مصورة من زاوية)، فالنتائج ستكون كارثية. لذلك، استثمر في واجهة المستخدم (UI) لتوجيه العميل لالتقاط صورة ممتازة. كنا نطلع للمستخدم رسالة بسيطة: “يا غالي، صوّر الهوية بمكان فيه إضاءة كويسة وبدون فلاش الله يرضى عليك”.
- لا تثق بالـ OCR ثقة عمياء: حتى أفضل أنظمة الـ OCR ليست دقيقة بنسبة 100%. الحل الأمثل هو بناء نظام هجين (Hybrid). يقوم النظام باستخراج البيانات وتحديد “مستوى ثقة” (Confidence Score) لكل حقل. إذا كان مستوى الثقة عاليًا (مثلاً فوق 95%)، تتم الموافقة تلقائيًا. إذا كان منخفضًا، يتم تحويل الحالة لموظف بشري لمراجعتها. بهذه الطريقة، أنت تؤتمت 90% من الحالات وتترك الـ 10% الصعبة للبشر.
- التخصص يفرق كثيرًا: نماذج الـ OCR العامة جيدة، لكن النماذج المدربة والمخصصة على نوع معين من الوثائق (مثل بطاقات الهوية لدولة معينة) تعطي نتائج أدق بكثير. إذا كان لديك حجم بيانات كبير، فكّر في عمل Fine-tuning لنموذج OCR على بياناتك الخاصة.
- تعامل مع الاختلافات: بطاقات الهوية والجوازات تختلف في تصميمها من بلد لآخر، وحتى في نفس البلد بين الإصدارات القديمة والجديدة. يجب أن يكون نظامك مرنًا بما يكفي للتعامل مع هذه الاختلافات في أماكن الحقول واللغات (عربي، إنجليزي، RTL, LTR).
الخلاصة: من الجحيم إلى النعيم الرقمي 🚀
تبني تقنية الـ OCR في عمليات الـ KYC لم يكن مجرد تحسين، بل كان نقلة نوعية. حولنا عملية كانت تأخذ دقائق طويلة ومصدرًا للصداع والأخطاء إلى عملية تتم في ثوانٍ معدودة وبدقة عالية. الموظف “سامر” تحول من مدخل بيانات مُرهَق إلى مشرف على النظام، يركز فقط على الحالات المعقدة التي تتطلب تدخلاً بشريًا.
الفوائد كانت واضحة: زيادة هائلة في سرعة إنجاز المعاملات، دقة أعلى في البيانات، تخفيض كبير في التكاليف التشغيلية، والأهم من كل ذلك، تجربة عميل ممتازة وسريعة.
نصيحتي الأخيرة لكل مطور أو صاحب شركة يفكر في هذا المجال: لا تخاف من تبني التقنيات الجديدة. ممكن تكون معقدة بالبداية، بس الأثر اللي بتتركه على شغلك وعلى راحة بالك لا يقدر بثمن. بلّش صغير، جرّب، واغلط، وتعلم. هاي هي طريقة المبرمج الشاطر. بالتوفيق يا جماعة!