Formats2026-08-254 دقيقة قراءة

كيف يقرأ OCR ملف PDF ممسوحاً، ولماذا تعيد هذه الأداة صيغة Markdown

ملف PDF الممسوح صورةُ نص، ونقطة OCR هذه تعيد Markdown لا PDF بطبقة مخفية. الوضع Auto يستعمل النص الموجود، وForce OCR يعيد قراءة كل صفحة.

PDF123 · Updated 2026-09-19

يخزّن ملف PDF الممسوح ضوئياً صفحاته كصور نقطية: صور فوتوغرافية لنص، لا محارف قابلة للتحديد. ويقرأ OCR، أي التعرّف الضوئي على المحارف، تلك البكسلات ويخمّن أي أشكال تمثّل محارف، ثم يُخرج نصاً حقيقياً. وفي PDF123 يعمل ذلك كأداة مجانية في المتصفح عبر نقطة النهاية POST /api/v1/misc/ocr-pdf التي تعيد Markdown لا ملف PDF معاداً كتابته.

رسم لصفحة ممسوحة قبل OCR حيث لا توجد إلا صورة، وبعده حيث يظهر نص بمحاذاة الصفحة؛ كثير من أدوات OCR تكتب ذلك النص طبقةً مخفية، أما نقطة النهاية هنا فتعيد Markdown

المسح يبقى صورة

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

يكتب OCR الكلاسيكي في PDF طبقة نصية ثانية غير مرئية بمحاذاة تحت الصورة، حتى يقع التحديد والبحث على الكلمات الصحيحة. هذا ما يوضحه الرسم، وما زالت أدوات مكتبية كثيرة تعمل به.

ما الذي تعيده نقطة النهاية هذه فعلاً

يستدعي مسار OCR نقطة /api/v1/misc/ocr-pdf، التي تعمل على صندوق Rust مستقل باسم pdf-inspector (مبنيّ بميزته ocr). ولا يُسلَّم ملف PDF كاملاً إلى نموذج تعرّف. يصنّف pdf-inspector أولاً كل صفحة إما بأنها تملك نصاً أصلياً قابلاً للاستخراج أو أنها صورة فقط. الصفحات ذات النص الأصلي تبقي ذلك النص كما هو ولا تلامس نموذج التعرّف أبداً؛ أما الصفحات المصوّرة فتمر بخط أنابيب التعرّف: يرسم PDFium (المحرّك مفتوح المصدر نفسه الذي يستخدمه Chrome داخلياً) الصفحة، ثم يشغّل ONNX Runtime نموذج PP-OCRv6 Small ليقرأها. وتُدمج الصفحتان معاً بترتيبهما في مستند Markdown واحد، ولهذا يكون الرد بصيغة text/markdown وينتهي التنزيل بامتداد .md.

وهذا العقد جديد على إعادة الكتابة هذه. فالخادم القديم المبني بـ Java/Spring Boot الذي كان هذا المشروع يشغّله كان يستدعي OCRmyPDF، أي أسلوب "الصورة مع طبقة نصية مخفية" الكلاسيكي، ويعيد ملف PDF. واستبدلت إعادة الكتابة بـ Rust ذلك المسار بالكامل بخاصية OCR الانتقائية في pdf-inspector، فتحوّل الناتج معها من PDF إلى Markdown. وقد أُزيل خادم Java القديم من المستودع تماماً منذ ذلك الحين؛ فهو ليس مفتاحاً يمكنك إعادة تفعيله.

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

Auto في مقابل Force OCR

يحمل النموذج حقلاً اسمه ocrType:

  • Normal، أي قيمة غير force-ocr تُقابل الوضع Auto: يستخدم النص الموجود حيث يكون الملف محتوياً عليه، ويشغّل OCR على الصفحات المصوّرة وحدها. وفي ملف رقمي نظيف لا يحمّل Auto وقت تشغيل OCR أصلاً.
  • Force OCR (ocrType=force-ocr) يعيد تشغيل التعرّف على كل صفحة، بما فيها الصفحات التي تملك طبقة نصية أصلاً. وتدفع هنا الوقت لا دقة إضافية على الصفحات المصوّرة الخالصة، مقابل تمريرة تتجاهل طبقة قائمة معطوبة أو ناقصة.

والوضع الافتراضي في البوابة هو Force OCR. ولا يوجد تحكم باللغة، إذ تُتجاهل رموز tessdata المتبقية من مسار Java القديم.

وينفصل مساران Auto وForce داخل الطلب نفسه، ولا تتحقق منه لا البوابة ولا مسبار القدرات في الواجهة البرمجية مسبقاً. فـ GET /api/v1/settings/get-endpoints-status يبلّغ دائماً أن ocr-pdf "مفعّل"، دون أن يتحقق فعلياً من تثبيت PDFium أو ONNX Runtime أو نموذج PP-OCRv6. ويحدث التحقق الحقيقي فقط لحظة أن يستدعي طلبٌ ما عملية التعرّف: فإن كان أيٌّ منها مفقوداً، تعيد نقطة النهاية الرمز 503، لا Markdown متدهوراً يتراجع بصمت إلى النص الأصلي فقط. وحجم نموذج PP-OCRv6 Small نفسه نحو 31 ميغابايت؛ وما لم يكن قد زُرع مسبقاً في الذاكرة المؤقتة المحلية وقت النشر، فإنه يُنزَّل عبر الشبكة أول مرة تحتاج فيها صفحة إلى تعرّف فعلي. والجهاز غير المتصل بالإنترنت بلا نموذج مزروع مسبقاً سيفشل على الأرجح في أول طلب Force له بدلاً من أن يعمل ببطء فحسب.

التعرّف احتمالي

تطابق المحرّكات أنماط البكسلات مع نماذج للحروف والكلمات. وهي تبلو حسناً مع مطبوعات نظيفة عالية التباين بخطوط قياسية، وتسوء مع:

  • مسحات منخفضة الدقة أو التباين (جودة فاكس في مقابل أصل بدقة 300 DPI)
  • الكتابة اليدوية والخطوط الزخرفية والتخطيطات الغريبة (جداول متعددة الأعمدة، ونص مُدار، ونماذج مكتظة)
  • الصفحات المائلة التي تشوّه أشكال المحارف بما يكفي لإرباك المطابقة

وفاكس ضبابي لن يُقرأ بـ OCR كما يُقرأ مسح نظيف، سواء اخترت Auto أم Force. وهذا حدّ في النموذج نفسه، لا شيء يصلحه معامل إعداد.

ما لا يفعله OCR

يمنحك OCR نصاً، ولا يعيد بناء الفقرات أو العناوين أو الجداول أو مستند Word قابل لإعادة التدفق. فالتخطيط القابل للتحرير مشكلة تحويل فوق خطأ التعرّف، لا المهمة نفسها التي تنجزها قراءة مسح.

يشغّل تشغيل OCR على ملف PDF على الخادم بلا حساب، والتنزيل بصيغة Markdown. وإن بدت طبقة نصية قائمة خاطئة، فاستخدم Force OCR كي لا يثق Auto بها؛ ولمعرفة هل يملك جهاز معيّن فعلاً PDFium والنموذج مثبَّتين، فتشغيل طلب حقيقي أوثق من قراءة مسبار القدرات، إذ لا يؤكد المسبار سوى وجود نقطة النهاية، لا جاهزية بيئة تشغيلها. ولمفاتيح الأتمتة وOpenAPI راجع المطوّرين.

Open tool
Process in the browser — no watermark, files removed after the job.
Open tool