“يا أبو عمر، السيرفرات رح توقع والناس بتشتكي!”
كان ذلك في عام 2018، وكنا على وشك إطلاق تطبيق مالي جديد كنا نعمل عليه لشهور طويلة. الحماس كان في أوجه، والفريق كله سهران “متل اللي بستنى العيد”. أطلقنا التطبيق، وبدأ المستخدمون بالتسجيل. في البداية، كانت الأرقام متواضعة، وفريق عمليات التحقق من الهوية (KYC) – المكون من ستة موظفين مجتهدين – كان مسيطرًا على الوضع.
لكن بعد حملة تسويقية ناجحة، انفجر الوضع. آلاف المستخدمين بدأوا بالتسجيل في ساعة واحدة. فجأة، تحولت غرفة العمليات إلى خلية نحل تضج بالتوتر. الهواتف لا تتوقف عن الرنين، ورسائل الدعم الفني تتراكم: “صارلي يومين بستنى تفعيل حسابي!”، “ليش التأخير؟”، “التطبيق تبعكم بطيء جدًا”.
أتذكر مدير العمليات وهو يصرخ في وجهي عبر الهاتف، وصوته يملأه القلق: “يا أبو عمر، الحقنا! الشباب مش ملحقين يدخلوا البيانات يدويًا، الأوراق متكومة، والأخطاء كترت من العجلة. رح نخسر كل هالناس!”. في تلك اللحظة، أدركت أن طريقتنا التقليدية في التحقق من الهوية لم تكن مجرد عملية بطيئة، بل كانت “عنق الزجاجة” الذي سيخنق مشروعنا قبل أن يولد. كانت تلك هي الشرارة التي دفعتنا للبحث عن حل جذري، حل لا يعتمد على زيادة عدد الموظفين، بل على تغيير العملية بأكملها.
ما هو جحيم التحقق من الهوية (KYC) اليدوي؟
قبل أن نغوص في الحل، دعونا نفهم المشكلة. “اعرف عميلك” أو (Know Your Customer – KYC) هي ليست مجرد إجراء روتيني، بل هي ضرورة قانونية وتنظيمية تفرضها البنوك المركزية والهيئات المالية على أي شركة تقدم خدمات مالية (Fintech). الهدف منها هو منع غسيل الأموال وتمويل الإرهاب والاحتيال.
الطريقة التقليدية كانت كالتالي:
- العميل يقوم بتحميل صورة عن بطاقة هويته أو جواز سفره، وأحيانًا فاتورة خدمات لإثبات العنوان.
- موظف (مسكين) يفتح الصورة في نافذة، ويفتح نظام إدخال البيانات في نافذة أخرى.
- يبدأ بنقل المعلومات حرفًا حرفًا ورقمًا رقمًا: الاسم الكامل، رقم الهوية، تاريخ الميلاد، تاريخ انتهاء الصلاحية… إلخ.
- موظف آخر يقوم بمراجعة البيانات المدخلة للتأكد من عدم وجود أخطاء.
- بعد كل هذا، يتم تفعيل حساب العميل.
هذه العملية، كما يمكنكم أن تتخيلوا، كانت كارثية على كل المستويات:
- البطء الشديد: العملية كانت تستغرق من 24 إلى 72 ساعة في أفضل الأحوال.
- التكلفة العالية: تحتاج إلى فريق كبير من الموظفين، وهذا يعني رواتب وتكاليف تشغيلية مرتفعة.
- الأخطاء البشرية: مع ضغط العمل، تكثر الأخطاء الإملائية والبيانات غير الصحيحة، مما يتطلب جولات إضافية من المراجعة.
- صعوبة التوسع (Scalability): لا يمكنك التعامل مع طفرات النمو المفاجئة. إذا سجل 10,000 مستخدم في يوم واحد، فأنت في ورطة حقيقية.
- تجربة مستخدم سيئة: من يريد أن ينتظر ثلاثة أيام ليستخدم تطبيقًا قام بتحميله للتو؟
الإنقاذ: التعرف الضوئي على الحروف (OCR) والعقل المدبر (AI)
هنا يأتي دور التكنولوجيا لتنقذ الموقف. الحل الذي اعتمدناه يرتكز على تقنيتين رئيسيتين تعملان معًا بتناغم مذهل: التعرف الضوئي على الحروف (OCR) والذكاء الاصطناعي (AI).
أولاً: الساحر الذي يقرأ الصور – التعرف الضوئي على الحروف (OCR)
ببساطة، الـ OCR هي تقنية تحول النص الموجود داخل صورة إلى نص حقيقي يمكن للكمبيوتر قراءته والتعامل معه. بدلًا من أن يقوم الموظف بقراءة “محمد أحمد” من صورة الهوية وكتابتها، يقوم نظام الـ OCR بذلك آليًا في أجزاء من الثانية.
العملية تتم خلف الكواليس عبر عدة خطوات:
- المعالجة المسبقة للصورة (Image Pre-processing): يقوم النظام بتحسين جودة الصورة، مثل إزالة الظلال، زيادة التباين، وتصحيح أي ميلان في الصورة.
- اكتشاف النص (Text Detection): يحدد المناطق التي تحتوي على نصوص داخل الصورة.
- التعرف على الحروف (Character Recognition): يبدأ “بفك شيفرة” كل حرف وكلمة في المناطق المحددة.
- المعالجة اللاحقة (Post-processing): يستخدم نماذج لغوية لتصحيح الأخطاء المحتملة (مثلاً، إذا قرأ حرف “ل” كـ “ا”، يمكن للنموذج اللغوي أن يصححه بناءً على سياق الكلمة).
ثانيًا: العقل المدبر – الذكاء الاصطناعي لاستخلاص المعنى
لكن الـ OCR وحده لا يكفي. سيمنحك كتلة نصية غير منظمة، شيء من هذا القبيل: “جمهورية مصر العربية بطاقة تحقيق شخصية الاسم أحمد علي محمود العنوان 123 شارع التحرير رقم قومي 29001010123456”.
هنا يأتي دور الذكاء الاصطناعي، وتحديدًا تقنية تسمى “التعرف على الكيانات المسماة” (Named Entity Recognition – NER). لقد قمنا بتدريب نموذج ذكاء اصطناعي ليفهم هذا النص ويستخرج منه المعلومات المهمة ويضعها في هيكل منظم.
النموذج يتعلم كيف يميز بين “الاسم”، “رقم الهوية”، “تاريخ الميلاد”، وغيرها. فالناتج النهائي يتحول من كتلة نصية فوضوية إلى كائن JSON منظم وجميل بهذا الشكل:
{
"fullName": "أحمد علي محمود",
"nationalId": "29001010123456",
"address": "123 شارع التحرير",
"documentType": "ID_CARD"
}
بالإضافة إلى ذلك، يمكن للذكاء الاصطناعي القيام بمهام أكثر تعقيدًا:
- التحقق من صحة الوثيقة: تحليل الصورة للبحث عن علامات تزوير، مثل وجود خطوط غير متناسقة أو تلاعب في منطقة الصورة الشخصية.
- مطابقة الوجه (Face Matching): مقارنة الصورة الموجودة على بطاقة الهوية مع صورة “سيلفي” حية يطلب من المستخدم التقاطها، للتأكد من أن الشخص الذي يقدم الطلب هو نفسه صاحب الوثيقة.
رحلتنا في بناء النظام: دليل عملي
الكلام النظري جميل، ولكن “الحكي ما بيطعمي خبز”. كيف بنينا هذا النظام فعليًا؟
المرحلة الأولى: اختيار الأدوات المناسبة
كان أمامنا خياران: بناء كل شيء من الصفر باستخدام مكتبات مفتوحة المصدر، أو الاعتماد على خدمات سحابية جاهزة (APIs).
- الخيار الأول (مفتوح المصدر): استخدام مكتبات مثل Tesseract-OCR للتعرف على الحروف، و spaCy أو NLTK لبناء نموذج NER. هذا الخيار يمنحك تحكمًا كاملاً، ولكنه يتطلب خبرة كبيرة ووقتًا طويلاً في التطوير والتدريب.
- الخيار الثاني (الخدمات السحابية): استخدام خدمات مثل Google Cloud Vision AI, Amazon Textract, أو Microsoft Azure AI Vision. هذه الخدمات سهلة الاستخدام، سريعة، ومدربة مسبقًا على ملايين الوثائق.
نصيحة أبو عمر: يا جماعة، نصيحة من أخوكو أبو عمر، ابدأوا بالـ APIs الجاهزة. لا تعيدوا اختراع العجلة من أولها، خصوصًا في البدايات. ركزوا على بناء منتجكم الأساسي. لما يكبر شغلكم وتصيروا بحاجة لتخصيص أكبر أو لتقليل التكاليف على المدى الطويل، وقتها فكروا تبنوا حلولكم الخاصة.
المرحلة الثانية: تصميم تدفق العمل (Workflow)
رسمنا تدفقًا آليًا للعملية كالتالي:
- المستخدم يرفع صورة الهوية عبر التطبيق.
- نظامنا الخلفي (Backend) يرسل الصورة إلى خدمة OCR سحابية (مثل Amazon Textract).
- الخدمة تعيد لنا النص المستخرج بالإضافة إلى درجة ثقة (Confidence Score) لكل كلمة.
- نقوم بتمرير النص إلى نموذج NER الخاص بنا (أو نستخدم قواعد Regex ذكية في البداية) لاستخلاص الحقول المطلوبة (الاسم، الرقم، إلخ).
- نتحقق من صحة البيانات (مثلاً، هل رقم الهوية يتكون من العدد الصحيح من الأرقام؟ هل تاريخ الميلاد منطقي؟).
- إذا كانت درجات الثقة عالية والبيانات تبدو صحيحة، يتم تفعيل حساب العميل تلقائيًا. ✅
- إذا كانت درجات الثقة منخفضة (بسبب صورة غير واضحة مثلاً)، يتم إرسال الحالة إلى لوحة تحكم خاصة ليراجعها موظف. هذا يضمن أن الفريق يركز فقط على الحالات الصعبة، وليس على 95% من الحالات السهلة.
مثال كود بسيط (Python)
هذا مثال مبسط جدًا يوضح فكرة استدعاء خدمة سحابية (هنا سنستخدم مثالًا وهميًا يشبه Google Vision API) ومعالجة النتائج.
import requests
import re
import json
# عنوان الخدمة السحابية الوهمي
OCR_API_URL = "https://api.cloud-ocr.com/v1/process"
API_KEY = "YOUR_API_KEY_HERE"
def extract_text_from_image(image_path):
"""
يرسل صورة إلى خدمة OCR ويعيد النص المستخرج.
"""
with open(image_path, 'rb') as image_file:
files = {'image': image_file}
headers = {'Authorization': f'Bearer {API_KEY}'}
response = requests.post(OCR_API_URL, files=files, headers=headers)
if response.status_code == 200:
# الخدمة عادةً ما تعيد النص في حقل 'text' داخل JSON
return response.json().get('text')
else:
print(f"Error: {response.status_code}")
return None
def parse_id_data(text):
"""
يحلل النص باستخدام تعابير نمطية (Regex) بسيطة لاستخراج البيانات.
"""
if not text:
return {}
# مثال بسيط جدًا للبحث عن رقم قومي مصري (14 رقمًا)
id_match = re.search(r'b(2|3)d{13}b', text)
# يمكن إضافة تعابير أكثر تعقيدًا للاسم والتاريخ...
# ...
extracted_data = {
"nationalId": id_match.group(0) if id_match else None
# "fullName": ...
}
return extracted_data
# --- التنفيذ ---
image_path = "path/to/id_card.jpg"
raw_text = extract_text_from_image(image_path)
print("--- النص المستخرج ---")
print(raw_text)
structured_data = parse_id_data(raw_text)
print("n--- البيانات المنظمة ---")
print(json.dumps(structured_data, indent=2, ensure_ascii=False))
طبعًا، في الواقع، تكون عملية التحليل (Parsing) أكثر تعقيدًا وتعتمد على نماذج NER مدربة بدلاً من مجرد Regex، خاصة للتعامل مع اللغات المختلفة وتنسيقات الوثائق المتنوعة.
النتائج: من جحيم الانتظار إلى نعيم الفورية
بعد تطبيق النظام الجديد، كانت النتائج مذهلة وفاقت توقعاتنا:
- السرعة: متوسط وقت التحقق من الهوية انخفض من 48 ساعة إلى أقل من 60 ثانية.
- الدقة: نسبة التحقق الآلي الصحيح وصلت إلى أكثر من 96%، مما قلل الأخطاء البشرية بشكل كبير.
- التكلفة: تمكنا من إعادة توجيه فريق العمليات للتركيز على المهام الأكثر أهمية (مثل التعامل مع الحالات المعقدة ومكافحة الاحتيال) بدلاً من إدخال البيانات.
- رضا العملاء: ارتفعت معدلات إكمال التسجيل بشكل ملحوظ، واختفت شكاوى التأخير تقريبًا. أصبح بإمكان العميل تحميل التطبيق، التسجيل، وتفعيل حسابه وبدء استخدامه في نفس الجلسة.
الخلاصة: لا تخف من الأتمتة، بل احتضنها 🚀
كانت رحلتنا مع أتمتة عملية KYC درسًا قيمًا. تعلمنا أن المشاكل التشغيلية الكبرى التي تبدو مستعصية، غالبًا ما يكون حلها في التكنولوجيا الذكية وليس في زيادة الموارد البشرية. الانتقال من الإدخال اليدوي إلى نظام يعتمد على OCR والذكاء الاصطناعي لم يكن مجرد تحسين، بل كان نقلة نوعية أنقذت تجربة المستخدم وسمحت لشركتنا بالنمو والتوسع بثقة.
نصيحتي الأخيرة لك: سواء كنت مطورًا أو صاحب مشروع في قطاع التكنولوجيا المالية، انظر دائمًا إلى العمليات اليدوية المتكررة في شركتك. هذه هي “الكنوز” التي يمكنك تحويلها إلى كفاءة وأرباح باستخدام الأتمتة والذكاء الاصطناعي. لا تخف من تعقيد هذه التقنيات، ابدأ صغيرًا، استخدم الأدوات الجاهزة، وسترى بنفسك كيف يمكن للآلة أن تحرر الإنسان ليبدع في ما لا تستطيعه الآلة.