Bank Statement Parser هي مكتبة Python مفتوحة المصدر تحلل كشوفات الحساب البنكية من سبعة تنسيقات (CAMT.053، PAIN.001، CSV، OFX، QFX، MT940، وPDF) إلى DataFrames منظمة من pandas. تتم جميع العمليات محليًا — مخرجات حتمية، تنقيح تلقائي لمعلومات تحديد الهوية الشخصية (PII)، وخط أنابيب هجين اختياري لملفات PDF يمر عبر نماذج LLM المحلية عند الحاجة.
ابدأ في ثوانٍ
pip install bankstatementparser
from bankstatementparser import create_parser, detect_statement_format
fmt = detect_statement_format("statement.xml")
parser = create_parser("statement.xml", fmt)
df = parser.parse() # pandas DataFrame, ready to use
# Parse PDFs with the hybrid pipeline (v0.0.5+)
from bankstatementparser.hybrid import smart_ingest
result = smart_ingest("statement.pdf")
print(result.source_method) # "deterministic" | "llm" | "vision"
print(result.verification.status) # VERIFIED | DISCREPANCY | FAILED
مكتبة واحدة، سبعة تنسيقات
حلل CAMT.053 وPAIN.001 وCSV وOFX وQFX وMT940 وPDF إلى DataFrames منظمة من pandas عبر واجهة برمجة تطبيقات موحدة واحدة. لا حاجة لتثبيت حزم منفصلة لكل تنسيق.
| الميزة | Bank Statement Parser | مكتبات أحادية التنسيق (mt940، ofxparse) | SaaS (Ocrolus، Parseur) |
|---|---|---|---|
| التنسيقات المدعومة | 7، واجهة موحدة | 1 لكل مكتبة | كثيرة (عبر OCR) |
| دعم PDF | خط أنابيب هجين (حتمي + LLM + رؤية) | لا | نعم (OCR سحابي) |
| خصوصية البيانات | 100% محلي (نماذج LLM تعمل محليًا عبر Ollama) | 100% محلي | البيانات تُرسل خارجيًا |
| التكلفة | مجاني، Apache 2.0 | مجاني | 49$ - 1,000$+/شهر |
| التحقق من الرصيد | القاعدة الذهبية (رصيد افتتاحي + إيداعات − خصومات = رصيد ختامي) | لا | يختلف |
| تنقيح PII | مدمج، مفعّل افتراضيًا | لا | يختلف |
| Streaming | ذاكرة محدودة | لا | غير متاح |
| REST API | خدمة FastAPI مدمجة | لا | نعم |
| إزالة التكرار | hash حتمي للمعاملات | لا | جزئي |
| تصدير دفتر الأستاذ | hledger + beancount | لا | لا |
خط أنابيب PDF الهجين
يتضمن Bank Statement Parser v0.0.5+ خط أنابيب هجينًا ثلاثي المسارات لكشوفات PDF البنكية:
- المسار A (حتمي): جداول PDF المنظمة تُحلل مباشرة — مجاني، الأسرع، لا يحتاج LLM.
- المسار B (نص + LLM): ملفات PDF رقمية بتخطيطات معقدة تُستخرج عبر LLM محلي (LiteLLM/Ollama).
- المسار C (رؤية + LLM): كشوفات ممسوحة ضوئيًا أو مصورة تُعالج بنماذج رؤية متعددة الوسائط.
يُتحقق من كل استخراج بواسطة القاعدة الذهبية: opening balance + credits − debits == closing balance.
مصمم لترحيل ISO 20022
حددت SWIFT مواعيد نهائية ثابتة: يجب أن تستقبل جميع المؤسسات المالية CAMT.053 بحلول نوفمبر 2027، وسيُوقف MT940/MT942/MT950 بالكامل بحلول نوفمبر 2028. يتعامل Bank Statement Parser مع كل من تنسيقات MT940 القديمة وتنسيقات ISO 20022 الحديثة (CAMT.053، PAIN.001) في واجهة واحدة، بحيث يعمل خط التحليل أثناء الفترة الانتقالية وما بعدها.
الأداء
- أكثر من 27,000 معاملة/ثانية لتحليل CAMT.053
- أكثر من 52,000 معاملة/ثانية لتحليل PAIN.001
- أقل من 2 مللي ثانية للوصول إلى أول نتيجة
- ذاكرة ثابتة من 1 ألف إلى 50 ألف+ معاملة عبر streaming
- 718 اختبارًا بتغطية فرعية 100% عبر Python 3.10 إلى 3.14
لماذا Bank Statement Parser؟
- استخراج PDF هجين:
smart_ingest()يعالج ملفات PDF الرقمية والممسوحة ضوئيًا مع توجيه تلقائي وتحقق من الرصيد. - اكتشاف تلقائي للتنسيق:
detect_statement_format()يحدد الملفات تلقائيًا وcreate_parser()يُعيد المحلل المناسب. - الخصوصية أولًا: تنقيح PII مفعّل افتراضيًا. نماذج LLM تعمل محليًا عبر Ollama — لا تغادر بياناتك جهازك.
- REST API: انشر كخدمة FastAPI مع نقاط
/ingestو/health. - الإثراء: تصنيف معاملات مدعوم بـ LLM مع مخططات قابلة للتوصيل (مخطط Plaid ذو 13 فئة افتراضيًا).
- تصدير دفتر الأستاذ: تصدير إلى تنسيقات hledger وbeancount لسير عمل المحاسبة النصية.
- مسح مجمّع:
scan_and_ingest()يعالج أشجار المجلدات مع إزالة التكرار تلقائيًا عبر الملفات. - متعدد العملات:
verify_balance_multi_currency()يُشغّل تحقق القاعدة الذهبية لكل مجموعة عملات. - جاهز للإنتاج: استيعاب ZIP آمن، تحقق من المدخلات، منع اجتياز المسار، ووضع مراجعة تفاعلي.
- إخراج مرن: تصدير إلى CSV أو JSON أو Excel أو Polars أو hledger أو beancount.
- معالجة متوازية: حلل ملفات متعددة بالتوازي مع
parse_files_parallel().
مصمم للإنتاج
صُمم Bank Statement Parser لفرق الخزانة ومطوري التكنولوجيا المالية ومسؤولي الامتثال الذين يعالجون بيانات مالية حساسة. تُستخدم المكتبة في خطوط ترحيل MT940 إلى CAMT، وأنظمة التسوية الآلية، واستيعاب كشوفات PDF، وسير عمل التدقيق التنظيمي في المؤسسات المالية.
- 718 اختبارًا بتغطية فرعية 100% عبر Python 3.10 إلى 3.14
- تبعيات مقفلة بـ SHA-256 hash مع CycloneDX SBOM لكل إصدار
- مخرجات حتمية — المدخلات المتطابقة تنتج نتائج متطابقة بالبايت في كل مرة
- مرخص بـ Apache 2.0 — استخدمه بحرية في الأنظمة التجارية والداخلية
تقيّم البدائل؟ انظر كيف يقارن Bank Statement Parser ❯ | استكشف حالات الاستخدام الواقعية ❯