Skip to content
DrAbdulmalekPublic

About

Shared OCR engine — Visual Evidence Charter (18 rules) + Arabic medical corrections

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

ocr-core

مستودع OCR المشترك — محرك قواعد "ميثاق الأدلة البصرية" (18 قاعدة) + تصحيحات طبية عربية + محركات OCR + معالجة مسبقة/لاحقة + معايير قياس.

الحالة

  • هيكل المستودع (stage 2)
  • نقل محرك القواعد (stage 3)
  • التصحيحات العربية (stage 4)
  • محرك Tesseract (stage 5)
  • محرك PaddleOCR منقول من omni-medical-suite — extra: pip install .[paddle]
  • محرك EasyOCR منقول من omni-medical-suite — extra: pip install .[easyocr]
  • EnsembleEngine + EngineRouter + telemetry (PR #6)
  • Preprocess (scanner_fixer) (PR #6) — extra: pip install .[preprocess]
  • Postprocess طبي: normalization / field_extractor / deduplication (PR #6)
  • Benchmarks: suite كاملة + ci_suite (بوابات CER/WER، A/B) (PR #6)
  • التكامل مع marathon_ted_pipeline (PR #14 مدموج — shim + pin)
  • التكامل الكامل مع omni-medical-suite (استهلاك ocr-core بدل المكررات)
  • خط الأنابيب الموحد ست المراحل + إعادة التعرف الانتقائي (clean-room — docs/research/abbyy_features.md)
  • Medical Region Editor UI (PR in progress) — optional PySide6 extra: pip install -e ".[ui]"
  • نظام الأوامر الموحد (Command Pattern — 34 أمرًا في 8 فئات + CLI) — docs/commands.md
  • كشف كلمات الخط اليدوي: word_detector (ONNX/projection/heuristic) + line_grouper (RTL) — extra: pip install .[word-detect] — docs/word_detection.md
  • محرك jina-ocr-v1 (VLM للمستندات الكاملة) — extra: pip install .[jina] — ⚠️ الأوزان CC BY-NC 4.0 — docs/jina_ocr_v1.md

الوحدات

المسار الوظيفة
ocr_core.rules محرك قواعد الميثاق — الافتراضي المدمج: ocr_core/config/marathon_ocr_rules.yaml (ميثاق v2) مع pre-pass شقيق text_normalization_rules.yaml (18 قاعدة)
ocr_core.engines base (OCREngine/OCRResult) + tesseract + paddle + easyocr + ensemble + router
ocr_core.preprocess crop/deskew/rotate/enhance/normalize/dedup/text_dedup/pipeline
ocr_core.postprocess corrections_ar (311 زوجًا) + normalization + field_extractor + deduplication + medical_terms.json
ocr_core.benchmarks suite القياس الكاملة + ci_suite (threshold_checker + ab_testing)
ocr_core.pipeline خط الأنابيب الموحد: Preprocess → Layout → Recognition → Page Synthesis → Document Synthesis → Export — أوضاع التخطيط simple/complex/tables/auto
ocr_core.regional إعادة التعرف الانتقائي على منطقة محددة (bbox بصيغتي xywh وxyxy)
ocr_core.postprocess.arabic_rtl نقطة ربط RTL/العربية لخط الأنابيب (تفويض حرفي لـ rtl_utils)
ocr_core.rtl_utils معالجة العربية RTL (خرائط مبنية وقت الاستيراد)
ocr_core.telemetry سجل قرارات مهيكل (بديل decision_log)
ocr_core.commands نظام الأوامر الموحد: Command/Registry/Executor/Pipeline/ExecutionContext — 34 أمرًا (io, preprocess, ocr, postprocess, export, benchmark, detect, vlm) + محوّل CLI (ocr-core list/describe/run/pipeline)
ocr_core.preprocess.word_detector كشف كلمات الخط اليدوي: OnnxWordDetector (xournalpp-htr) / ProjectionDetector / HeuristicDetector + مصنع create_detector
ocr_core.preprocess.line_grouper تجميع الكلمات في سطور بترتيب القراءة (RTL/LTR)
ocr_core.engines.jina_vlm محرك jina-ocr-v1 (VLM end-to-end → Markdown/LaTeX/HTML — بلا bounding boxes). تحميل كسول؛ الأوزان CC BY-NC 4.0

سياسة الثقة: الثقة 0.0 = مجهولة — لا تُختلق أبدًا (engines/base.py). المحركات تبلّغ الأخطاء عبر OCRResult.error ولا ترفع استثناءات.

التثبيت

pip install -e ".[dev,preprocess,benchmarks]"   # لتشغيل مجموعة الاختبارات كاملة (كما في CI)
# optional engines / modules
pip install -e ".[tesseract]"   # pytesseract
pip install -e ".[paddle]"      # PaddleOCR
pip install -e ".[easyocr]"     # EasyOCR
pip install -e ".[preprocess]"  # opencv-headless + imagehash + rapidfuzz
pip install -e ".[benchmarks]"  # rapidfuzz + click + rich
pip install -e ".[all]"         # الكل

الاستخدام

from ocr_core.rules.engine import OCRProcessor
p = OCRProcessor()  # الافتراضي: ocr_core/config/marathon_ocr_rules.yaml (ميثاق v2)
# التجاوز: OCRProcessor(rules_file=...) أو المتغير البيئي MARATHON_OCR_RULES

from ocr_core.engines.paddle import PaddleEngine
r = PaddleEngine().process_image("scan.png")  # r.error عند غياب paddleocr

from ocr_core.engines.tesseract import TesseractEngine
from ocr_core.engines.ensemble import EnsembleEngine
ens = EnsembleEngine({"tesseract": TesseractEngine(), "paddle": PaddleEngine()})
best = ens.process_image("scan.png")  # أفضل نتيجة: ثقة×طول×صلاحية

from ocr_core.preprocess import fix_scan
fixed = fix_scan("scan.png")  # crop → deskew → rotate → denoise → enhance

from ocr_core.postprocess.field_extractor import ArabicMedicalFieldExtractor
fields = ArabicMedicalFieldExtractor().extract_fields(fixed_text)

المصدر والترخيص

معظم الوحدات منقولة من omni-medical-suite (MIT) مع انحرافات موثقة داخل docstrings كل وحدة — التفاصيل في PR #6.

📚 موارد تعليمية وبدائل مفتوحة المصدر لدراسة خوارزميات OCR

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

1. Tesseract OCR

  • المحرك الأكثر شهرة ومفتوح المصدر (ترخيص Apache 2.0).
  • يمكنك دراسة الكود المصدري لكيفية معالجة الصور، وتقسيم الصفحات، وخوارزميات التعرف (LSTM).
  • يدعم اللغة العربية بشكل جيد، ويمكنك فحص ملفات تدريب اللغة العربية (.traineddata) وفهم هيكلتها.

2. PaddleOCR

  • مشروع مفتوح المصدر قوي جداً من Baidu (ترخيص Apache 2.0).
  • يوفر بنية معمارية حديثة تعتمد على الشبكات العصبية (مثل DBNet للكشف عن النصوص، و CRNN/SVTR للتعرف عليها).
  • الكود مفتوح بالكامل، ويحتوي على نماذج مدربة مسبقاً للغة العربية يمكنك دراستها وتحليل أدائها.

3. الأوراق البحثية (Academic Papers)

  • بدلاً من محاولة استخراج خوارزميات مغلقة، يمكنك البحث في منصات مثل arXiv عن أوراق بحثية حول "Arabic OCR Deep Learning" أو "Scene Text Recognition". هذه الأوراق تشرح الخوارزميات الرياضية والمعمارية بدقة وتفصيل علمي.

About

Shared OCR engine — Visual Evidence Charter (18 rules) + Arabic medical corrections

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages