اعمل OCR للفواتير: من PDF إلى Excel بـ Python
هتطلع من المقال بسكربت عملي يحوّل فواتير PDF أو صور الفواتير إلى ملف Excel منظم بدل النسخ اليدوي المتكرر.
مستوى القارئ: متوسط
المشكلة باختصار
لو عندك 100 فاتورة شهريًا، وبتنقل رقم الفاتورة، التاريخ، المورد، والإجمالي يدويًا، فأنت غالبًا بتصرف من ساعتين إلى 3 ساعات على شغل ممل وسهل الغلط. الطريقة الشائعة هي فتح كل PDF ونسخ القيم في Sheet. الطريقة دي بتفشل لما الفاتورة تكون صورة ممسوحة scan، أو لما المورد يغير شكل القالب.
الحل هنا مش نظام محاسبة كامل. الحل سكربت صغير يعمل pipeline واضحة: يحوّل الصفحة لصورة، ينظفها، يشغل OCR، يستخرج الحقول المهمة، ثم يكتب Excel. الافتراض إن الفواتير عندك إنجليزي أو أرقام واضحة، وحجمها أقل من 500 ملف في الدفعة الواحدة.
الفكرة بمثال واضح
ركز في المثال ده: عندك فولدر اسمه invoices/ فيه صور فواتير بصيغة PNG أو JPG. كل فاتورة فيها سطور شبه دي:
Invoice No: INV-1042
Date: 2026-04-21
Vendor: Acme Cloud
Total: $248.50السكريبت هيقرأ النص من الصورة، ثم يستخدم regex بسيط لاستخراج القيم. لو عندك PDF ممسوح ضوئيًا، ابدأ بتحويله لصورة أولًا باستخدام أداة زي pdftoppm أو أي export من نظامك. الهدف هنا إننا نثبت pipeline، وبعدها توسعها على PDF متعدد الصفحات.
جهّز البيئة
تحتاج Python، ومحرّك Tesseract نفسه، ثم مكتبات Python. مهم تفهم الفرق: pytesseract مجرد wrapper يستدعي Tesseract، وليس بديلًا عن تثبيت Tesseract على الجهاز.
# Ubuntu / Debian
sudo apt-get update
sudo apt-get install -y tesseract-ocr
# داخل مشروع Python
python -m venv .venv
source .venv/bin/activate
pip install pytesseract pillow opencv-python pandas openpyxlعلى Windows ثبّت Tesseract من الحزمة الرسمية أو Chocolatey، ثم تأكد إن الأمر tesseract --version يعمل من الطرفية.
اكتب السكربت
أفضل طريقة تبدأ بها هي تنظيف الصورة قبل OCR. اللي بيحصل فعلاً إن OCR يتأثر جدًا بالإضاءة، الظلال، ودقة scan. OpenCV adaptive thresholding يساعد لما الإضاءة مختلفة داخل نفس الصورة، لأنه يحدد العتبة حسب منطقة صغيرة بدل قيمة واحدة ثابتة.