وداعاً للأوراق والمكالمات: بناء نظام KYC رقمي بالكامل باستخدام OCR والتعرف على الوجوه

يا جماعة الخير، السلام عليكم ورحمة الله وبركاته.

بتذكر قبل حوالي عشر سنين، لما قررت أفتح حساب بنكي لشركتي الصغيرة الناشئة. يا الله شو كانت قصة! أوراق ما بتخلص، وطوابع، وتواقيع، وروحات وجيات على الفرع. أسبوعين كاملين وأنا أركض ورا موظف البنك، وكل يوم يطلعلي بطلب جديد: “بدنا صورة عن الهوية مصدقة”، “نسيت تجيب إثبات السكن”، “هاي الورقة لازم يوقعها المحامي”. شعرت وقتها إن فتح حساب بنكي أصعب من كتابة كود لنظام تشغيل كامل! الموقف هاد انحفر بذاكرتي، وخلاني أفكر: “معقول في 2024 لسا الناس بتتعامل بهي الطريقة؟”.

الجواب هو لأ، والحمد لله. اليوم، كمهندس ذكاء اصطناعي، صار لي الشرف أكون جزء من الحل. اشتغلت مع عدة شركات تقنية مالية (Fintech) لبناء أنظمة بتخليك تفتح حساب بنكي أو محفظة رقمية وأنت قاعد على الكنباية في بيتك، وكل العملية ما بتاخد أكتر من خمس دقايق. كيف؟ هاد هو موضوعنا اليوم. بدنا نحكي بالتفصيل عن بناء نظام “اعرف عميلك” أو الـ KYC الرقمي، ونغوص في التقنيات اللي بتشغله.

ما هو نظام “اعرف عميلك” (KYC) ولماذا هو مهم؟

قبل ما ندخل في التفاصيل التقنية، خلينا نوضح الأساسيات. مصطلح KYC هو اختصار لـ Know Your Customer، أو “اعرف عميلك”. هو عبارة عن مجموعة من الإجراءات اللي بتقوم فيها المؤسسات المالية (بنوك، شركات تأمين، محافظ رقمية، منصات تداول) عشان تتحقق من هوية عملائها.

الهدف مش تعقيد الأمور على الناس، أبداً. الهدف الرئيسي هو حماية النظام المالي والمجتمع من خلال:

  • مكافحة غسيل الأموال (AML – Anti-Money Laundering): التأكد من أن الأموال اللي بتدخل النظام المالي مصدرها شرعي.
  • مكافحة تمويل الإرهاب (CTF – Combating the Financing of Terrorism): منع استخدام الخدمات المالية لدعم الأنشطة الإرهابية.
  • منع الاحتيال: حماية العملاء والمؤسسة من عمليات النصب وسرقة الهوية.

زمان، كانت العملية كلها يدوية: تروح بنفسك على الفرع، تسلم أوراقك الثبوتية، والموظف يقارن صورتك على الهوية بوجهك، ويدخل البيانات يدوياً على النظام. عملية بطيئة، مكلفة، وعرضة للخطأ البشري.

القلب النابض للنظام الرقمي: التقنيات الأساسية

اليوم، وبفضل الذكاء الاصطناعي، انتقلت عملية الـ KYC بالكامل للعالم الرقمي. النظام الحديث يعتمد بشكل أساسي على تقنيتين ساحرتين: التعرف الضوئي على الحروف (OCR) والتعرف على الوجوه (Face Recognition).

1. التعرف الضوئي على الحروف (OCR): قراءة المستندات آلياً

تخيل إنك بتقدر تخلي الكمبيوتر “يقرأ” أي نص موجود في صورة. هاد هو باختصار الـ OCR. في سياق الـ KYC، بنستخدم هاي التقنية عشان نستخرج كل البيانات من بطاقة الهوية أو جواز السفر بشكل آلي وفوري.

كيف تعمل؟

  1. المستخدم بصوّر بطاقة الهوية الخاصة فيه من خلال تطبيق الموبايل.
  2. الصورة تُرسل للخادم (Server).
  3. نظام الـ OCR يحلل الصورة، يتعرف على أماكن وجود النصوص (الاسم، الرقم الوطني، تاريخ الميلاد…).
  4. يحوّل هاي النصوص من مجرد بيكسلات في الصورة إلى بيانات نصية (string) قابلة للمعالجة والتخزين في قاعدة البيانات.

نصيحة عملية من أبو عمر

جودة الصورة هي مفتاح نجاح الـ OCR. إضاءة سيئة، صورة مغبشة، أو انعكاس ضوء الفلاش على البطاقة ممكن يفشّل العملية كلها. لهيك، لازم توجه المستخدم في التطبيق ليلتقط صورة جيدة. اعطيه إرشادات واضحة مثل:

  • “ضع البطاقة على سطح مستوٍ.”
  • “تأكد من وجود إضاءة جيدة وبدون انعكاسات.”
  • “تأكد من أن جميع أطراف البطاقة ظاهرة داخل الإطار.”

تقنياً، قبل ما تمرر الصورة على محرك الـ OCR، من المفيد جداً تعمل عليها شوية معالجة مسبقة (Image Pre-processing) لتحسين النتائج. عمليات مثل تحويل الصورة للون الرمادي (Grayscale)، وزيادة التباين (Contrast)، وإزالة التشويش (Noise Reduction) بتعمل فرق كبير.

مثال كود بسيط (Python باستخدام Tesseract)

Tesseract هو محرك OCR مفتوح المصدر وقوي جداً، مدعوم من جوجل. عشان تستخدمه في بايثون، بتحتاج تثبت المكتبة الوسيطة `pytesseract`.


# First, install the libraries
# pip install pytesseract
# pip install opencv-python
# You also need to install the Tesseract engine on your system

import cv2
import pytesseract

# --- Abu Omar's Tip: Image Pre-processing ---
def preprocess_image(image_path):
    # Read the image using OpenCV
    img = cv2.imread(image_path)
    
    # Convert to grayscale
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    # Apply thresholding to get a binary image
    # This helps in separating text from the background
    _, binary_img = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)
    
    return binary_img

# Path to your Tesseract installation (example for Windows)
# pytesseract.pytesseract.tesseract_cmd = r'C:Program FilesTesseract-OCRtesseract.exe'

# Path to the ID card image
id_card_image_path = 'id_card.jpg'

# Pre-process the image for better results
processed_image = preprocess_image(id_card_image_path)

# Use Tesseract to extract text (specify Arabic language)
# You need to have the Arabic language data file for Tesseract installed
try:
    extracted_text = pytesseract.image_to_string(processed_image, lang='ara+eng')
    print("--- النص المستخرج من البطاقة ---")
    print(extracted_text)
except Exception as e:
    print(f"An error occurred: {e}")
    print("Is Tesseract installed and in your PATH? Is the language data file installed?")

هاد الكود بيعطيك فكرة أساسية. في الأنظمة الحقيقية، الموضوع أعقد شوي، وبنحتاج نماذج مدربة مسبقاً للتعرف على حقول معينة في أنواع مختلفة من بطاقات الهوية.

2. التعرف على الوجوه والتحقق من الحيوية (Face Recognition & Liveness Detection)

بعد ما استخرجنا البيانات من الهوية، لازم نتأكد من شغلتين مهمتين:

  1. الشخص اللي بيقدم الطلب هو نفسه صاحب الهوية.
  2. الشخص اللي بيقدم الطلب هو شخص حقيقي وحي، مش مجرد صورة أو فيديو.

هنا يأتي دور تقنيات التعرف على الوجه والتحقق من الحيوية.

التعرف على الوجه (Face Recognition)

العملية بسيطة المفهوم: النظام بياخد صورة “سيلفي” من المستخدم، وبقارنها مع الصورة الموجودة على بطاقة الهوية اللي تم تصويرها. بيتم تحويل كل وجه إلى بصمة رياضية (vector embedding)، ثم تُحسب درجة التشابه بين البصمتين. إذا كانت درجة التشابه عالية، فهذا يعني أن الشخصين متطابقين.

التحقق من الحيوية (Liveness Detection)

هاي الخطوة هي الأهم لمنع الاحتيال. شو الفائدة من مقارنة الوجوه إذا كان المحتال بيستخدم صورة صاحب الهوية ويعرضها على كاميرا الموبايل؟ التحقق من الحيوية هو اللي بيكشف هاي الحيلة.

في طريقتين أساسيتين للتحقق من الحيوية:

  • التحقق النشط (Active Liveness): نطلب من المستخدم يقوم بحركة معينة، مثل أن يبتسم، أو يومض بعينيه، أو يدير رأسه لليمين واليسار. النظام بيحلل الفيديو ويتأكد إن المستخدم نفذ المطلوب.
  • التحقق السلبي (Passive Liveness): هاي الطريقة أحدث وأكثر سلاسة للمستخدم. ما بنطلب من المستخدم يعمل أي شي. النظام بيحلل إطار واحد أو عدة إطارات من الفيديو باستخدام نماذج ذكاء اصطناعي متطورة للبحث عن علامات تدل على أن ما أمام الكاميرا هو وجه ثلاثي الأبعاد وحقيقي (مثل انعكاسات الضوء الدقيقة، حركة الجلد، نسيج البشرة) وليس شاشة ثنائية الأبعاد.

حكي بينا (نصيحة من أبو عمر): دائماً فضل التحقق السلبي (Passive Liveness) إذا ميزانيتك بتسمح. تجربة المستخدم بتكون أفضل بمليون مرة. المستخدم ما بحب حدا يقله “ابتسم” أو “لف وجهك”. بده العملية تكون سريعة وسلسة. هاي التفاصيل الصغيرة هي اللي بتصنع الفرق بين تطبيق ناجح وتطبيق بزهق المستخدم وبخليه يتركه.

بناء النظام خطوة بخطوة (نظرة عامة)

طيب يا أبو عمر، كيف بنجمع كل هاي القطع مع بعضها؟ خلينا نرسم صورة كاملة للرحلة اللي بيمر فيها المستخدم والنظام.

  1. واجهة المستخدم (التقاط الصور):
    • شاشة ترحيب تشرح العملية في 3 خطوات بسيطة.
    • شاشة لتصوير الوجه الأمامي للهوية مع إطار توجيهي.
    • شاشة لتصوير الوجه الخلفي للهوية.
    • شاشة لفتح الكاميرا الأمامية لأخذ “فيديو سيلفي” قصير (لعملية التحقق من الحيوية والوجه).
  2. المعالجة في الخادم (Backend Magic):
    • الخطوة أ: استلام الصور والفيديو.
    • الخطوة ب (OCR): إرسال صورة الهوية إلى خدمة الـ OCR. استلام البيانات المنظمة (الاسم، الرقم، …).
    • الخطوة ج (Face & Liveness):
      • إرسال فيديو السيلفي إلى خدمة التحقق من الحيوية. هل هذا شخص حقيقي؟ (نعم/لا).
      • إذا كانت الإجابة “نعم”، يتم استخلاص أفضل صورة للوجه من الفيديو.
      • استخلاص صورة الوجه من بطاقة الهوية.
      • إرسال الصورتين (السيلفي وصورة الهوية) إلى خدمة مقارنة الوجوه. هل هما متطابقان؟ (نعم/لا + درجة الثقة).
  3. اتخاذ القرار (Decision Engine):
    • الحالة 1 (المسار السعيد): كل الخطوات نجحت (OCR واضح، الشخص حي، الوجوه متطابقة). يتم التحقق من المستخدم والموافقة على طلبه آلياً. ✅
    • الحالة 2 (رفض واضح): فشل واضح في إحدى الخطوات (محاولة احتيال واضحة، بيانات غير صحيحة). يتم رفض الطلب آلياً. ❌
    • الحالة 3 (المنطقة الرمادية): درجة الثقة في تطابق الوجوه متوسطة، أو جودة صورة الـ OCR منخفضة. هنا، يتم تحويل الطلب إلى “مراجعة يدوية” (Manual Review) ليقوم موظف بشري بالتدقيق واتخاذ القرار النهائي. 🧐

هذا الهيكل يضمن التوازن بين السرعة والأمان. معظم المستخدمين الشرعيين بيمروا من المسار السعيد في دقائق، بينما الحالات المشبوهة يتم التعامل معها بعناية أكبر.

الخلاصة ونصيحة أخيرة من أبو عمر 🚀

بناء نظام KYC رقمي هو نقلة نوعية في عالم الخدمات المالية وغيرها. هو ليس مجرد تطبيق لتقنيات مبهرة، بل هو حل لمشكلة حقيقية يعاني منها الملايين. هو تحويل لتجربة كانت معقدة ومملة إلى تجربة سلسة، سريعة، وآمنة.

التقنيات مثل OCR والتعرف على الوجوه لم تعد حكراً على الشركات العملاقة. بوجود الخدمات السحابية (مثل AWS Rekognition, Azure Face API, Google Vision AI) والمكتبات مفتوحة المصدر، أصبح بإمكان الشركات الناشئة والصغيرة بناء أنظمة قوية ومنافسة.

نصيحتي الأخيرة لك إذا كنت تفكر في بناء نظام كهذا: ابدأ صغيراً، فكر كبيراً، وركز على الأمان وتجربة المستخدم من اليوم الأول. لا تحاول بناء كل شيء بنفسك من الصفر. استخدم الأدوات والخدمات المتاحة بذكاء، وركز جهودك على تصميم رحلة مستخدم سلسة وبناء منطق عمل قوي يضمن الأمان والامتثال للقوانين.

والله ولي التوفيق.

أبو عمر

سجل دخولك لعمل نقاش تفاعلي

كافة المحادثات خاصة ولا يتم عرضها على الموقع نهائياً

آراء من النقاشات

لا توجد آراء منشورة بعد. كن أول من يشارك رأيه!

آخر المدونات

التكنلوجيا المالية Fintech

من الصندوق الأسود إلى الشفافية: كيف فتحنا أبواب الثقة في التقييم الائتماني باستخدام XAI

التقييم الائتماني كان صندوقاً أسود غامضاً، يرفض الطلبات دون تفسير. في هذه المقالة، أسرد لكم قصة حقيقية من تجربتي كـ "أبو عمر" عن كيفية استخدامنا...

29 مايو، 2026 قراءة المزيد
البنية التحتية وإدارة السيرفرات

كانت بيئاتنا نسخاً مشوهة: كيف أنقذتنا ‘البنية التحتية كوداً’ (IaC) من جحيم الانحراف التكويني؟

أشارككم قصة من قلب المعركة التقنية، عن ليلة كادت أن تودي بمشروع كامل بسبب "الانحراف التكويني". اكتشفوا كيف أصبحت "البنية التحتية كوداً" (IaC) وأدوات مثل...

29 مايو، 2026 قراءة المزيد
أدوات وانتاجية

كانت واجهة الأوامر تبطئني: كيف أنقذني ‘الباحث التقريبي’ (Fuzzy Finder) من جحيم البحث عن الملفات والأوامر؟

كنت أقضي دقائق ثمينة في البحث عن ملفات وأوامر قديمة في واجهة الأوامر، مما كان يقتل إنتاجيتي. في هذه المقالة، أشارككم قصتي مع أداة 'الباحث...

29 مايو، 2026 قراءة المزيد
​معمارية البرمجيات

ذاكرة فريقنا المعمارية قصيرة: كيف أنقذتنا ‘سجلات القرارات المعمارية’ (ADRs) من جحيم إعادة اكتشاف العجلة؟

أتذكر جيدًا تلك النقاشات العقيمة التي كانت تسرق أيامًا من عمر مشاريعنا، فقط لنعيد اكتشاف قرارات اتخذناها بالفعل ونسينا أسبابها. في هذه المقالة، أسرد لكم...

29 مايو، 2026 قراءة المزيد
البودكاست