بياناتك مشفّرة، تُعالَج في بيئة معزولة، وتُحذف فوراً بعد جاهزية نتيجتك. لا نبيع بياناتك ولا نشاركها مع أي جهة أبداً. كيف نحمي بياناتك

٢ سبتمبر ٢٠٢٦حُدّث في ١٨ أكتوبر ٢٠٢٦8 دقائق قراءة

استخراج بيانات كشف الحساب البنكي: 6 مشاكل حللناها

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

لقطة مقربة لأكواد على شاشة

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

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

ما هو استخراج بيانات كشف الحساب البنكي؟

هو تحويل كشف PDF، المصمم للقراءة البشرية، إلى صفوف منظمة يفهمها برنامج: صف لكل حركة بالتاريخ والوصف والسحب والإيداع والرصيد.

الكشف الرقمي مقابل الممسوح ضوئياً

كشف رقميكشف ممسوح
كيف تعرفهتستطيع تحديد النص ونسخهصورة لا يمكن تحديد نصها
كيف يُقرأمن طبقة النص بالكودOCR أو ذكاء اصطناعي يقرأ الصورة
السرعةثوانٍأبطأ
الخطر الأكبربناء الصفوف خطأقراءة رقم خطأ من صورة رديئة

6 مشاكل استخراج واجهناها وكيف حللناها

1. إيداع وقع في عمود السحب

في البداية كانت المبالغ تُوزَّع حسب ترتيبها في السطر، فيقع الإيداع أحياناً في عمود السحب. الآن يقرأ المحرك مواقع الأعمدة من رأس الجدول، ويضع كل مبلغ حسب مكانه على الصفحة.

2. حركة واحدة مطبوعة على سطرين

الوصف الطويل ينكسر إلى سطر ثانٍ، فكانت الحركة الواحدة تتحول إلى حركتين. القاعدة الآن: سطر بلا تاريخ وبلا مبلغ هو تكملة، فيُضم إلى الصف الذي فوقه.

if not line.date and not line.amount:
    rows[-1].description += " " + line.text   # continuation of the row above
else:
    rows.append(line)
منطق مبسّط لضم سطر التكملة إلى الحركة التي فوقه.

3. مبلغ ملتصق بنص الوصف

بعض الكشوف تطبع المبلغ ملتصقاً بالوصف بلا مسافة، مثل PANDA1,250.00، فيضيع المبلغ. الحل قراءة المبلغ من نهاية النص بنمط رقمي واضح.

import re
m = re.search(r"(\d{1,3}(?:,\d{3})*\.\d{2})$", "POS PANDA1,250.00")
m.group(1)   # '1,250.00'
استخراج مبلغ ملتصق بنهاية الوصف.

4. صفحة ملخص قُرئت كأنها حركات

صفحات الملخص فيها أرقام أيضاً، فكانت تُعامل كحركات أو تُعطي للمستخدم بدل صفحات الحركات. الآن لا تُعد الصفحة صفحة حركات إلا إذا كان فيها عدد كافٍ من التواريخ، لا الأرقام فقط.

5. الرصيد مطبوع في بعض الصفوف فقط

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

6. ضياع الوصف العربي بعد التنظيف

خطوة تنظيف الأوصاف كانت تستبدل أحياناً الوصف العربي بملخص إنجليزي. الآن يبقى الوصف بلغة البنك، والأرقام المخفية تبقى مخفية.

التحقق الذي يكشف كل ما تبقى: الرصيد الجاري

balance = opening
for row in rows:
    balance += row.deposit - row.withdrawal
    assert abs(balance - row.printed_balance) < 0.01   # else: flag the row
كل صف يُثبت بالرصيد المطبوع. إذا لم يتطابق، يُعلَّم الصف للمراجعة.

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

كيف يقرأ بياني الكشف اليوم

  • الكشف الرقمي: تُبنى الصفوف بالكود من تخطيط الصفحة، وتُثبت بالرصيد الجاري.
  • الصفحات التي لا تجتاز التحقق، والصفحات الممسوحة: تُقرأ بالذكاء الاصطناعي ثم تُثبت بالرصيد نفسه.
  • يعمل مع الكشوف العربية والإنجليزية وثنائية اللغة من أكثر من 1,300 بنك.

الأسئلة الشائعة

هل يمكن استخراج البيانات من كشف حساب ممسوح ضوئياً؟

نعم. الصفحات الممسوحة تُقرأ بالذكاء الاصطناعي ثم يُتحقق منها بالرصيد مثل الكشوف الرقمية.

هل OCR وحده كافٍ؟

OCR يقرأ الحروف، لكنه لا يعرف أي رقم ينتمي لأي حركة. تحتاج بعده إعادة بناء الصفوف والتحقق من الرصيد.

كيف أعرف أن الاستخراج كامل؟

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

IBM: ما هو التعرف الضوئي على الحروف (OCR)؟

شرح تقني لكيفية تحويل صور المستندات إلى نص مقروء

تحويل كشف حساب PDF إلى Excel

جرّب الاستخراج على كشفك مع التحقق من الرصيد

جرّب بياني مجاناً

ارفع كشف حسابك البنكي واحصل على Excel مصنّف في ثوانٍ. 3 صفحات بدون تسجيل.

ابدأ مجاناً

مقالات أخرى