يا جماعة الخير، السلام عليكم. معكم أخوكم أبو عمر.
قبل كم سنة، كنت أعمل مع شركة تكنولوجيا مالية (Fintech) ناشئة وطموحة. الأمور كانت ماشية تمام، والمنتج كان قوي، لكن كان فيه “علّة” كبيرة بتنغّص علينا عيشتنا كل يوم: عملية التحقق من هوية العملاء، أو ما يُعرف بـ “اعرف عميلك” (KYC).
أتذكر ذلك اليوم وكأنه مبارح. كنا في اجتماع مع الإدارة، والأرقام على الشاشة كانت زي الكف على الوجه. نسبة رفض العملاء الجدد في السماء، والأسوأ من هيك، فريق مكافحة الاحتيال اكتشف حسابات لعمليات مشبوهة تم قبولها عبر نفس النظام. المدير التفت عليي وسألني بنبرة كلها إحباط: “يا أبو عمر، فهّمني. كيف بنرفض ناس حقيقيين من كل الدنيا، وبنفس الوقت بنفتح حسابات لناس نصّابين بستعملوا هويات فوتوشوب؟ الوضع، بالصلاة ع النبي، فايت بالحيط!”.
كانت لحظة صعبة. شعرت بفشل كبير، لأن النظام كان تحت مسؤوليتي بشكل أو بآخر. كان واضحًا أن الاعتماد على فريق من الموظفين لمراجعة آلاف الهويات يدويًا كل يوم كان وصفة لكارثة محققة. من هنا، بدأت رحلتي في هدم هذا النظام القديم وبناء واحد جديد، أكثر ذكاءً وفعالية، بالاعتماد على الذكاء الاصطناعي.
ما هي عملية “اعرف عميلك” (KYC) ولماذا هي كابوس حقيقي؟
ببساطة، “اعرف عميلك” أو KYC هي مجموعة من الإجراءات الإلزامية اللي لازم تعملها البنوك والشركات المالية عشان تتأكد من هوية عملائها. الهدف هو منع غسيل الأموال، تمويل الإرهاب، والاحتيال المالي. على الورق، الموضوع يبدو منطقيًا، لكن على أرض الواقع، هو كابوس متعدد الأوجه:
- الامتثال التنظيمي: الحكومات والبنوك المركزية تفرض قوانين صارمة، وأي تقصير يعني غرامات بالملايين.
- تجربة المستخدم: لا أحد يحب الانتظار. إذا كانت عملية فتح الحساب معقدة وبطيئة، العميل ببساطة سيذهب إلى منافس آخر.
- التكلفة والتوسع: توظيف فريق كبير لمراجعة الهويات يدويًا مكلف جدًا، وبطيء، ولا يمكنه مواكبة نمو الشركة.
- الدقة والخطأ البشري: الموظف يتعب، يمل، وقد لا يكون لديه خبرة في كل أنواع الهويات وجوازات السفر من مختلف دول العالم، مما يؤدي إلى أخطاء فادحة.
الكارثة: عندما يفشل النظام اليدوي
نظامنا القديم كان مثالًا حيًا على كل المشاكل المذكورة أعلاه. كان لدينا فريق جيد من المراجعين، لكنهم كانوا بشرًا في النهاية.
رفض الصادقين
كانت تأتينا طلبات من كل أنحاء العالم. عميل من المغرب بهويته الوطنية المكتوبة بالعربية والفرنسية، وآخر من مصر بصورة هوية فيها انعكاس ضوء بسيط، وثالث من الأردن بجواز سفر تصميم قديم شوي. الموظف، تحت ضغط الوقت وعدم الألفة، كان يختار الطريق الأسهل: “رفض لعدم وضوح المستند”. كنا نخسر عملاء حقيقيين كل ساعة، وسمعتنا كانت تتأثر سلبًا.
قبول المحتالين
على الجانب الآخر، المحتالون كانوا أكثر ذكاءً. كانوا يستخدمون برامج مثل الفوتوشوب لإنشاء هويات مزيفة عالية الجودة. بالنسبة للعين البشرية، كانت تبدو مثالية. نفس الخطوط، نفس الألوان، وصورة شخصية واضحة. كان المحتال يمر من عملية المراجعة اليدوية بسهولة، بينما العميل الحقيقي الذي التقط صورة لهويته في غرفة بإضاءة خافتة كان يتم رفضه. كانت مفارقة مؤلمة ومُكلفة.
نصيحة من أبو عمر: إذا كان نظامك يعتمد بشكل كامل على العين البشرية للتحقق من المستندات الرقمية، فاعلم أنك لا تحارب المحتالين، بل تحارب عملائك الصادقين.
الحل: التعرف الضوئي على الحروف (OCR) والذكاء الاصطناعي
كان واضحًا أن الحل يجب أن يكون آليًا وذكيًا. هنا دخلت تقنية التعرف الضوئي على الحروف (OCR) إلى الصورة.
ما هو الـ OCR؟
ببساطة شديدة، الـ OCR هي تقنية تحول الصور التي تحتوي على نصوص (مثل صورة بطاقة هوية أو جواز سفر) إلى نص يمكن للكمبيوتر قراءته ومعالجته. بدلًا من أن ينظر موظف إلى الصورة ويكتب الاسم وتاريخ الميلاد يدويًا، يقوم الكمبيوتر بهذه المهمة في أجزاء من الثانية.
كيف يعمل الـ OCR في سياق KYC؟
- التقاط الصورة: العميل يستخدم كاميرا هاتفه لالتقاط صورة لهويته الشخصية.
- معالجة الصورة الأولية: يقوم النظام بتحسين الصورة تلقائيًا (مثل قص الحواف، تعديل الإضاءة والتباين، وإزالة الظلال).
- استخراج النص: محرك الـ OCR “يقرأ” الصورة ويستخرج كل النصوص الموجودة فيها.
- هيكلة البيانات: يقوم النظام بتحليل النص المستخرج وتحديد الحقول المهمة (الاسم، الرقم الوطني، تاريخ الميلاد، تاريخ الانتهاء) ووضعها في صيغة منظمة مثل JSON.
بناء النظام الجديد: خطوة بخطوة
بعد إقناع الإدارة، بدأنا العمل على بناء النظام الجديد. هذه هي الخطوات العملية التي اتبعناها:
1. اختيار الأداة المناسبة
هناك خيارات كثيرة لمحركات الـ OCR، ولكل منها مزايا وعيوب:
- خدمات سحابية (Cloud Services): مثل Google Vision AI, Amazon Textract, و Microsoft Azure Cognitive Services. هذه الخدمات قوية جدًا وتدعم لغات كثيرة (بما فيها العربية)، وسهلة الربط. لكنها مكلفة على المدى الطويل وقد تكون هناك مخاوف تتعلق بخصوصية البيانات.
- مكتبات مفتوحة المصدر (Open Source): أشهرها مكتبة Tesseract. هي مجانية وتمنحك تحكمًا كاملًا، لكنها تحتاج إلى الكثير من الجهد في الإعداد والتدريب لتحقيق دقة عالية، خاصة مع اللغة العربية وتصاميم الهويات المختلفة.
في مشروعنا، بدأنا باستخدام Tesseract كنموذج أولي (Proof of Concept) لإثبات الفكرة، ثم انتقلنا إلى خدمة سحابية (Amazon Textract) في النسخة الإنتاجية للحصول على دقة وسرعة أعلى ودعم أفضل للهويات المختلفة.
2. معالجة الصور (Image Pre-processing)
هذه الخطوة هي أهم سر لنجاح أي نظام OCR. “Garbage in, garbage out”. إذا كانت الصورة المدخلة سيئة، ستكون النتائج سيئة. استخدمنا مكتبة OpenCV بلغة بايثون للقيام بالعمليات التالية قبل إرسال الصورة لمحرك الـ OCR:
- تحويل لدرجات الرمادي (Grayscaling): تبسيط الصورة.
- الموازنة (Binarization): تحويل الصورة إلى أبيض وأسود فقط، مما يبرز النصوص.
- إزالة التشويش (Noise Removal): التخلص من النقاط العشوائية التي قد تربك محرك الـ OCR.
- تصحيح الميلان (Deskewing): تعديل استقامة الصورة إذا التقطها المستخدم بشكل مائل.
هذا مثال بسيط جدًا على كود بايثون باستخدام OpenCV لمعالجة صورة:
import cv2
import numpy as np
# دالة لمعالجة الصورة قبل إدخالها لنظام OCR
def preprocess_for_ocr(image_path):
# قراءة الصورة
img = cv2.imread(image_path)
# تحويل الصورة إلى درجات الرمادي
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# تطبيق فلتر لزيادة الحدة والوضوح
sharpen_kernel = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]])
sharpened = cv2.filter2D(gray, -1, sharpen_kernel)
# تطبيق Thresholding للحصول على صورة ثنائية (أبيض وأسود)
_, thresh = cv2.threshold(sharpened, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
print("Image pre-processing complete.")
return thresh
# استخدام الدالة
processed_image = preprocess_for_ocr('path/to/your/id_card.jpg')
# cv2.imwrite('path/to/your/processed_image.jpg', processed_image) # لحفظ الصورة المعالجة
3. استخراج البيانات والتحقق منها
بعد أن يقوم الـ OCR باستخراج النص، نحصل على كتلة نصية غير منظمة. الخطوة التالية هي “فهم” هذا النص. استخدمنا التعابير النمطية (Regular Expressions – Regex) للبحث عن أنماط معينة داخل النص:
- نمط للبحث عن تاريخ الميلاد (مثال:
d{2}/d{2}/d{4}) - نمط للبحث عن الرقم الوطني (مثال:
d{10}) - البحث عن كلمات مفتاحية مثل “الاسم”، “تاريخ الميلاد”، “الرقم الوطني” لتحديد أماكن البيانات.
نصيحة من أبو عمر: الـ Regex أداة جبارة لكنها تحتاج لحذر. قم ببناء مكتبة من التعابير النمطية لكل دولة ونوع هوية تدعمها، واختبرها على مئات العينات الحقيقية. لا تفترض أن نمطًا واحدًا سيعمل للجميع.
4. إضافة طبقة من الذكاء الاصطناعي
الـ OCR وحده يستخرج البيانات، لكنه لا يكشف التزوير. هذه هي الخطوة التي فصلت نظامنا الجديد عن القديم تمامًا:
- التحقق από الحيوية (Liveness Detection): طلبنا من المستخدم القيام بحركة بسيطة أثناء التقاط صورة سيلفي (مثل أن يبتسم أو يومئ برأسه). هذا يضمن أن الشخص الذي يقدم الطلب هو إنسان حقيقي وليس صورة أو فيديو مسجل.
- مطابقة الوجوه (Face Matching): استخدمنا نماذج التعرف على الوجوه لمقارنة صورة السيلفي مع الصورة الموجودة على بطاقة الهوية. النظام يعطي درجة تشابه، وإذا كانت أقل من حد معين، يتم رفض الطلب أو إرساله لمراجعة يدوية.
- كشف التزوير (Forgery Detection): هذه كانت الضربة القاضية. استخدمنا نماذج تعلم آلة مدربة على كشف علامات التلاعب الرقمي في الصور، مثل: عدم تطابق الإضاءة بين الوجه والخلفية في صورة الهوية، وجود بقايا وحدات بكسل غير طبيعية حول النصوص (يدل على تعديل فوتوشوب)، أو عدم تطابق نوع الخط مع الخط الرسمي المستخدم في الهويات.
النتائج: من حافة الهاوية إلى قصة نجاح
النتائج كانت مذهلة وفاقت كل التوقعات. خلال ثلاثة أشهر من إطلاق النظام الجديد:
- ارتفعت نسبة التحقق التلقائي (Automation Rate) من 20% إلى 92%. معظم العملاء أصبحوا يحصلون على موافقة في أقل من دقيقة.
- انخفضت نسبة رفض العملاء الحقيقيين بأكثر من 80%. نظامنا أصبح “يفهم” الهويات المختلفة ويتعامل مع الصور الأقل مثالية.
- بدأنا في الإمساك بالمحتالين. النظام بدأ يرفض تلقائيًا هويات مزيفة كانت قد مرت بسهولة على الفريق اليدوي. أتذكر فرحة الفريق عندما أمسك النظام بأول عملية تزوير متقنة، وحلّلنا الصورة ووجدنا آثار التلاعب التي كشفها الذكاء الاصطناعي. وقتها حسيت إنه كل سهر الليالي والتعب ما راح عالفاضي. يا الله شو كان شعور حلو!
خلاصة أبو عمر ونصيحة من القلب ❤️
يا أصدقائي المبرمجين ورواد الأعمال، قصة الفشل والنجاح هذه علمتني دروسًا كثيرة، وأحب أن أشارككم أهمها:
- العمليات اليدوية هي قنبلة موقوتة: في عالم اليوم الرقمي، الاعتماد على العمل اليدوي في المهام المتكررة والحساسة مثل KYC هو طريق للفشل.
- الـ OCR هو البداية وليس النهاية: استخراج النص هو مجرد خطوة أولى. القوة الحقيقية تكمن في كيفية معالجة هذا النص والطبقات الأمنية الإضافية التي تبنيها فوقه.
- البيانات والذكاء الاصطناعي هما السلاح الأقوى: لا تكتفِ بالتحقق من صحة البيانات، بل استخدم الذكاء الاصطناعي للتحقق من مصداقية المستند نفسه.
- لا تخف من التجربة: ابدأ صغيرًا، ابنِ نموذجًا أوليًا، اختبره، وحسّنه باستمرار. الفشل في البداية هو جزء طبيعي من عملية التعلم والابتكار.
التكنولوجيا ليست عصا سحرية، بل هي مطرقة في يد بنّاء ماهر. استخدموها بحكمة لبناء أنظمة قوية، آمنة، وعادلة تخدم الناس حقًا، بدلًا من أن تكون عائقًا في طريقهم.
يلا، شدوا حيلكم يا شباب، والمستقبل إلكم!