أذكر ذلك اليوم جيدًا، كان يوم ثلاثاء في مكتبي الصغير. رائحة القهوة الثقيلة تملأ المكان، وعلى طاولتي أكوام من الأوراق المطبوعة، أو بالأحرى صور هويات وجوازات سفر أرسلها عملاء جدد لفتح حسابات في منصتنا المالية. كنت أنا وفريقي الصغير غارقين حتى آذاننا في عملية التحقق اليدوية، أو ما يُعرف في عالم الأعمال بـ “اعرف عميلك” (KYC).
كانت العملية أشبه بالجحيم على الأرض. شاب من الفريق يفتح صورة الهوية، يحاول بصعوبة قراءة الاسم المكتوب بخط غير واضح، ثم ينقله إلى نظامنا. فتاة أخرى تدقق في تاريخ الميلاد وتاريخ انتهاء الصلاحية، وتتأكد أن الصورة في الهوية تشبه “السيلفي” الذي أرسله العميل. كنت أسمعهم يتمتمون بكلمات مثل “الصورة مغبشة!” أو “مش قادر أقرأ الرقم الوطني يا زلمة!”. كانت الأخطاء المطبعية تتراكم، والعملاء ينتظرون أيامًا لتفعيل حساباتهم، والضغط يزداد علينا يومًا بعد يوم.
في تلك اللحظة، نظرت إلى كومة الأوراق الرقمية أمامي وقلت لنفسي: “يا أبو عمر، إنت زلمة تبع ذكاء اصطناعي وبرمجة، معقول ما في حل لهالمعاناة؟ شو هالحكي!”. كانت تلك هي الشرارة التي بدأت رحلة طويلة ومثمرة، رحلة نقلتنا من أيام من العمل اليدوي المُضني إلى ثوانٍ من التحقق الآلي الدقيق. تعالوا أحكي لكم القصة بالتفصيل.
ما هو الـ KYC ولماذا هو صداع في رأس كل شركة؟
قبل أن نغوص في الحلول التقنية، دعونا نفهم أصل المشكلة. مصطلح KYC هو اختصار لـ Know Your Customer أو “اعرف عميلك”. هي ليست مجرد إجراء روتيني، بل هي متطلب قانوني تفرضه الحكومات والهيئات التنظيمية على الشركات، خصوصًا في القطاع المالي (بنوك، منصات تداول، محافظ رقمية)، لمنع عمليات غسيل الأموال وتمويل الإرهاب والاحتيال.
ببساطة، يجب على أي شركة تتعامل مع أموال الناس أن تتأكد من هوية عملائها الحقيقية. وهذا يتضمن جمع والتحقق من صحة معلوماتهم الشخصية.
كيف كانت تبدو عملية الـ KYC اليدوية الكارثية؟
لتتخيلوا حجم المعاناة، كانت العملية تسير كالتالي:
- العميل يقوم بالتسجيل ويرفع صورة عن مستند إثبات شخصية (هوية وطنية، جواز سفر) وصورة شخصية له (سيلفي).
- تصل هذه المستندات إلى قائمة انتظار لدينا.
- يقوم أحد موظفينا (الضحية) بفتح صورة الهوية.
- يبدأ الموظف بنقل البيانات يدويًا من الصورة إلى حقول في نظامنا: الاسم الكامل، الرقم الوطني، تاريخ الميلاد، تاريخ الإصدار، تاريخ الانتهاء، إلخ.
- يقارن الموظف بصريًا بين صورة العميل في الهوية وصورة السيلفي ليتأكد من تطابقهما.
- يتحقق من أن المستند ليس منتهي الصلاحية.
- يحاول (بكل ما أوتي من قوة) اكتشاف أي علامات تزوير واضحة.
- أخيرًا، يوافق على الحساب أو يرفضه مع طلب مستندات أوضح.
هذه العملية كانت تستغرق ما بين 15 دقيقة إلى نصف ساعة لكل عميل، هذا إذا كانت المستندات واضحة! أما مشاكلها فكانت لا تعد ولا تحصى: بطيئة جدًا، مكلفة (وقت الموظفين = مال)، مليئة بالأخطاء البشرية (typos)، وغير قابلة للتوسع. إذا أردنا خدمة 1000 عميل جديد في اليوم، فسنحتاج إلى جيش من الموظفين!
المنقذ الأول: التعرف الضوئي على الحروف (OCR) – كيف يقرأ الكمبيوتر المستندات؟
هنا بدأ الحل يتبلور. أول تقنية فكرت فيها كانت التعرف الضوئي على الحروف (OCR). تخيل أنك تعلّم الكمبيوتر القراءة تمامًا كما يتعلم الطفل الصغير الأبجدية، لكن بسرعة خارقة. الـ OCR هي تقنية تحول الصور التي تحتوي على نصوص (مثل صورة هويتك) إلى نصوص حقيقية يمكن للكمبيوتر فهمها والتعامل معها.
كيف يعمل الـ OCR؟ (خطوات مبسطة)
وراء الكواليس، تمر عملية الـ OCR بعدة مراحل معقدة، ولكن يمكن تبسيطها كالتالي:
- المعالجة المسبقة للصورة (Image Pre-processing): هذه أهم خطوة. يتم فيها “تنظيف” الصورة لجعلها أسهل للقراءة. تشمل عمليات مثل تحويل الصورة إلى أبيض وأسود (Binarization)، إزالة الشوائب والنقاط العشوائية (Noise Removal)، وتصحيح ميلان الصورة (Deskewing).
- تحليل التخطيط (Layout Analysis): يقوم النظام بتحديد أماكن وجود النصوص، وأماكن الصور، والجداول. يفصل كل جزء ليتعامل معه بشكل مستقل.
- التعرف على الحروف (Character Recognition): هذه هي نواة العملية. يستخدم النظام خوارزميات مدربة مسبقًا للتعرف على كل حرف على حدة.
- المعالجة اللاحقة (Post-processing): بعد استخراج النص، قد تحدث بعض الأخطاء (مثلاً، الخلط بين الرقم ‘1’ وحرف ‘l’ أو ‘0’ و ‘O’). هنا، يمكن استخدام قواميس لغوية أو نماذج إحصائية لتصحيح هذه الأخطاء بناءً على السياق.
مثال عملي باستخدام Python ومكتبة Tesseract
لنأخذ مثالًا بسيطًا باستخدام لغة بايثون ومكتبة Tesseract، وهي أشهر محرك OCR مفتوح المصدر. أولاً، ستحتاج إلى تثبيت المكتبات اللازمة:
pip install pytesseract pillow
# ستحتاج أيضًا إلى تثبيت محرك Tesseract نفسه على نظام التشغيل الخاص بك
لنفترض أن لدينا صورة بسيطة لهوية اسمها “id_card.png”. الكود التالي سيحاول قراءة النص منها:
import pytesseract
from PIL import Image
# حدد مسار Tesseract إذا لم يكن في المسار الافتراضي للنظام
# pytesseract.pytesseract.tesseract_cmd = r'C:Program FilesTesseract-OCRtesseract.exe'
try:
# فتح الصورة
img = Image.open('id_card.png')
# استخدام Tesseract لاستخراج النص باللغة العربية والإنجليزية
text = pytesseract.image_to_string(img, lang='ara+eng')
print("النص المستخرج من الصورة:")
print(text)
except FileNotFoundError:
print("خطأ: لم يتم العثور على ملف الصورة 'id_card.png'")
except Exception as e:
print(f"حدث خطأ: {e}")
نصيحة من أبو عمر: استخدام Tesseract مباشرةً كان خطوتنا الأولى، ولكنه لم يكن كافيًا. الهويات وجوازات السفر تأتي بتصاميم مختلفة، خطوط متنوعة، وجودة صور متفاوتة. كان النص المستخرج فوضويًا وغير منظم. هنا أدركنا أننا لا نحتاج فقط إلى “قراءة” النص، بل إلى “فهمه”.
عندما لا يكفي الـ OCR وحده: دور الذكاء الاصطناعي (AI) في فهم السياق
الـ OCR الخام يعطيك كتلة من النصوص. قد يستخرج “أبو عمر الفلسطيني 15/01/1980 987654321”. لكنه لا يعرف أن “أبو عمر الفلسطيني” هو الاسم، و”15/01/1980″ هو تاريخ الميلاد، و”987654321″ هو الرقم الوطني. هنا يأتي دور الذكاء الاصطناعي ليضيف طبقة من “الذكاء” والفهم.
النماذج اللغوية (NLP) واستخراج الكيانات المسماة (NER)
استخدمنا تقنية تسمى Named Entity Recognition (NER)، وهي فرع من معالجة اللغات الطبيعية (NLP). قمنا بتدريب نموذج ذكاء اصطناعي على آلاف الأمثلة من الهويات. تعلم هذا النموذج أن يتعرف على أنماط معينة ويصنفها.
على سبيل المثال، تعلم النموذج أن:
- أي نص يتبع كلمة “الاسم” أو يأتي في أعلى المستند هو على الأرجح
PERSON_NAME. - أي سلسلة من 9 أرقام هي على الأرجح
ID_NUMBER. - أي نص بصيغة DD/MM/YYYY هو
DATE.
وهكذا، بدلاً من الحصول على نص فوضوي، بدأنا نحصل على بيانات منظمة وجاهزة للاستخدام.
الرؤية الحاسوبية (Computer Vision) لأكثر من مجرد قراءة
لم تتوقف مساهمة الذكاء الاصطناعي عند فهم النصوص. استخدمنا تقنيات الرؤية الحاسوبية المتقدمة لأتمتة باقي المهام:
- مطابقة الوجوه (Face Matching): بدلاً من أن يقارن الموظف الصور بعينيه، قامت خوارزميات الذكاء الاصطناعي بتحليل ملامح الوجه في صورة الهوية وملامح الوجه في صورة السيلفي، وحساب “متجهات” رياضية لكل وجه، ثم مقارنة هذه المتجهات لتعطينا نسبة تشابه دقيقة (e.g., 98.5% match).
- التحقق من الحيوية (Liveness Detection): للتأكد من أن العميل شخص حقيقي يلتقط سيلفي مباشر وليس مجرد صورة لصورة، طلبنا منه القيام بحركة بسيطة أثناء التصوير (مثل الابتسام أو تحريك رأسه يمينًا ويسارًا). تقوم الخوارزميات بتحليل الفيديو القصير للتأكد من أنها حركة ثلاثية الأبعاد لشخص حي.
- التحقق من أصالة المستند (Document Authenticity): تدربت نماذج أكثر تعقيدًا على اكتشاف علامات التزوير الدقيقة، مثل البحث عن العلامات المائية (Watermarks) أو الشعارات ثلاثية الأبعاد (Holograms) التي تظهر تحت إضاءة معينة، أو حتى اكتشاف التلاعب الرقمي بالصورة (Photoshop).
بناء نظام KYC آلي: خارطة الطريق من تجربتي الشخصية
بعد كل هذه التجارب، إليكم خارطة طريق عملية لمن يريد بناء نظام مماثل.
المرحلة الأولى: اختيار الأدوات المناسبة
أمامك ثلاثة خيارات رئيسية:
- البناء من الصفر (صعب ومكلف): باستخدام مكتبات مثل Tesseract, OpenCV, TensorFlow, spaCy. هذا الخيار يمنحك تحكمًا كاملاً ولكنه يتطلب فريقًا خبيرًا ووقتًا طويلاً جدًا. لا أنصح به إلا للشركات الكبيرة جدًا.
- استخدام خدمات سحابية (أسرع وأسهل): منصات مثل AWS Textract, Google Vision AI, و Microsoft Azure Form Recognizer تقدم واجهات برمجية (APIs) جاهزة تقوم بالكثير من العمل الشاق. أنت ترسل الصورة، وهي تعيد لك البيانات منظمة. هذا هو الخيار المفضل لمعظم الشركات.
- استخدام مزود خدمة KYC متخصص (الحل الجاهز): هناك شركات كل عملها هو توفير حلول KYC متكاملة. أنت فقط تقوم بربط نظامك معهم عبر API وهم يتولون كل شيء. هذا الخيار هو الأسرع إطلاقًا ولكنه قد يكون الأعلى تكلفة.
المرحلة الثانية: تصميم تدفق العمل (Workflow)
بغض النظر عن الأداة، سيكون تدفق العمل متشابهًا:
- العميل يرفع المستندات (هوية أمامية، خلفية، سيلفي) من خلال تطبيقك.
- نظامك الخلفي (Backend) يرسل هذه الصور إلى خدمة الـ AI/OCR.
- الخدمة تعالج الصور وتعيد لك النتائج على شكل ملف JSON منظم.
- يقوم نظامك بالتحقق من صحة البيانات المستخرجة (هل الهوية منتهية الصلاحية؟ هل العمر مناسب؟ هل نسبة تطابق الوجه عالية؟).
- بناءً على قواعد تحددها أنت:
- إذا كانت كل النتائج ممتازة ونسبة الثقة (Confidence Score) عالية (مثلاً فوق 95%)، يتم قبول العميل تلقائيًا. ✅
- إذا كانت نسبة الثقة متوسطة أو هناك عدم تطابق بسيط، يتم إرسال الحالة إلى قائمة انتظار للمراجعة اليدوية (Human in the loop). هذا يضمن الدقة ويقلل العبء على الموظفين بشكل هائل. 🕵️
- إذا كانت النتائج سيئة جدًا (صورة غير واضحة، تزوير محتمل)، يتم رفض الطلب تلقائيًا مع إرسال رسالة للعميل. ❌
مثال على مخرجات JSON من خدمة KYC
هذا ما قد تبدو عليه البيانات التي تتلقاها من الخدمة، مما يسهل على نظامك اتخاذ القرار:
{
"document_type": "ID_CARD",
"country_code": "PS",
"extracted_data": {
"full_name": "أبو عمر الفلسطيني",
"id_number": "987654321",
"date_of_birth": "1980-01-15",
"expiry_date": "2030-01-14",
"address": "القدس، فلسطين"
},
"validation_checks": {
"is_expired": false,
"is_tampered": false,
"mrz_checksum_valid": true
},
"face_match": {
"match": true,
"confidence": 0.987
},
"liveness_check": {
"passed": true,
"type": "BLINK_DETECTED"
},
"overall_confidence": 0.97
}
نصائح من قلب الميدان (من أبو عمر)
- الجودة أهم من كل شيء: علّموا ورشّدوا عملائكم على كيفية التقاط صور واضحة وغير مقصوصة، بدون انعكاسات ضوئية. 80% من مشاكل الـ OCR سببها الصور السيئة.
- لا تثق بالآلة ثقة عمياء: ابدأ دائمًا بوجود “مراجعة بشرية” للحالات المشكوك فيها. هدفك هو تقليل العمل اليدوي، وليس إلغاؤه تمامًا من اليوم الأول.
- فكر في الخصوصية والأمان: بيانات الهويات حساسة جدًا. تأكد من تشفيرها أثناء النقل والتخزين، وتحديد من يمكنه الوصول إليها، والالتزام بقوانين حماية البيانات.
- ابدأ صغيرًا ثم توسع: لا تحاول دعم كل أنواع المستندات من كل دول العالم دفعة واحدة. ابدأ بالهوية الوطنية وجواز السفر في بلدك أو سوقك الرئيسي، ثم أضف المزيد تدريجيًا.
- التجربة خير برهان: قبل إطلاق النظام لجميع العملاء، اختبره على أوسع مجموعة ممكنة من المستندات الحقيقية (قديمة، جديدة، مهترئة قليلاً، إلخ) لتعرف نقاط ضعفه وتقويها.
الخلاصة: من أيام إلى ثوانٍ، رحلة تستحق العناء 🚀
رحلتنا مع أتمتة عملية الـ KYC كانت نقلة نوعية. تحولنا من فريق مُرهَق غارق في الأعمال الروتينية إلى فريق يركز على ما هو أهم: تحسين المنتج وخدمة العملاء. العملية التي كانت تستغرق أيامًا وتتسبب في إحباط العملاء، أصبحت الآن تتم في أقل من دقيقة في معظم الحالات.
الفوائد كانت واضحة: زيادة هائلة في السرعة والكفاءة، دقة أعلى وتقليل للأخطاء البشرية، تجربة أفضل بكثير للعميل، وقدرة غير محدودة على التوسع واستيعاب آلاف العملاء الجدد يوميًا دون الحاجة لزيادة حجم الفريق.
نصيحتي الأخيرة لكل مطور أو صاحب شركة يواجه تحديات مماثلة: لا تخافوا من تبني التقنيات الحديثة. قد تبدو معقدة في البداية، ولكن العائد على الاستثمار فيها، من حيث توفير الوقت والجهد والمال، هائل جدًا. استخدموا الذكاء الاصطناعي ليس كبديل للبشر، بل كأداة خارقة تمكّن فريقكم من إنجاز ما كان مستحيلاً بالأمس. 💪