كيف تعرف ما إذا كان ملف PDF يحتوي على صور فقط أو تم مسحه ضوئيًا باستخدام تقنية التعرف الضوئي على الحروف للبحث؟

StackOverflow https://stackoverflow.com/questions/1489733

  •  18-09-2019
  •  | 
  •  

سؤال

لدي مجموعة من ملفات PDF التي جاءت من المستندات الممسوحة ضوئيًا.تحتوي الملفات على مزيج من الصور والنصوص.تم مسح بعضها ضوئيًا كصور بدون التعرف الضوئي على الحروف، لذا فإن كل صفحة PDF هي صورة واحدة كبيرة، حتى عندما تكون الصفحة بأكملها عبارة عن نص بالكامل.تم مسح البعض الآخر ضوئيًا باستخدام تقنية التعرف الضوئي على الحروف (OCR) وتحتوي على صور ونص قابل للبحث حيث يوجد النص.وفي كثير من الحالات، أصبحت حتى الكلمات الموجودة في الصور قابلة للبحث.

أريد إجراء عملية تلقائية للتعرف على النص الموجود في جميع المستندات الممسوحة ضوئيًا باستخدام التعرف الضوئي على الحروف (OCR)، باستخدام Acrobat 8 ​​Pro، لكنني لا أرغب في إعادة التعرف الضوئي على الحروف (OCR) على الملفات التي خضعت بالفعل لعملية التعرف الضوئي على الحروف (OCR) في الماضي.هل يعرف أحد ما إذا كانت هناك طريقة لمعرفة أي منها يحتوي على صور فقط وأيها يحتوي بالفعل على نص قابل للبحث؟

أخطط للقيام بذلك في C# أو VB.NET ولكن لا أعتقد أن القدرة على التمييز بين نوعي الملفات بشكل منفصل تعتمد على اللغة.

هل كانت مفيدة؟

المحلول

الصور الممسوحة ضوئيًا والمحولة إلى PDF والتي تم تعديلها للتعرف الضوئي على الحروف في أعقاب ذلك لجعل النص قابلاً للبحث، تحتوي عادةً على أجزاء النص التي تم عرضها على أنها "غير مرئية".لذا فإن ما تراه على الشاشة (أو على الورق عند طباعته) لا يزال هو الصورة الأصلية.ولكن عندما يبحث بنجاح، يمكنك الحصول على النتائج المميزة الموجودة على النص غير المرئي.

أنصحك بإلقاء نظرة على أدوات سطر الأوامر المشتقة من XPDF pdffonts(.exe), pdfinfo(.exe) و pdftotext(.exe).انظر هنا للتنزيلات: http://www.foolabs.com/xpdf/download.html

مثال لاستخدام pdffonts:

C:\downloads\> pdffonts cisco-ip-phone-7911-guide6.1.pdf
name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
LGOKFL+Univers-BlackOblique          Type 1C           yes yes no   13171  0
LGOKGM+Univers-Black                 Type 1C           yes yes no   13172  0
[....]

يستخدم ملف PDF هذا الخطوط (المشار إليها بعمود "الاسم")، وقد تم تضمينها (يشار إليها بـ "نعم" في العمود "emb") ويستخدم خطوط المجموعة الفرعية (يشار إليها بـ "نعم" في العمود "الفرعي").

C:\downloads\> pdffonts examle1.pdf
name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
Univers-BlackOblique                 Type 1C           yes no  no   14    0
Arial                                TrueType          no  no  no   15    0

يستخدم ملف PDF هذا خطين (يُشار إليهما في عمود "الاسم").تم تضمين الخط "Universe-BlackOblique" بالكامل (يُشار إليه بـ "yes" في العمود "emb" و"no" في العمود "sub").يتم استخدام الخط "Arial" أيضًا، ولكنه غير مضمن.

C:\downloads\> pdffonts examle2.pdf
name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------

لا يستخدم ملف PDF هذا خطًا واحدًا، وبالتالي لا يحتوي على أي نص مضمن (لذلك لا يوجد التعرف الضوئي على الحروف أيضًا).

مثال لاستخدام pdftotext:

C:\downloads\> pdftotext ^
                   -layout ^
                   cisco-ip-phone-7911-guide6.1.pdf ^
                   cisco-ip-phone-7911-guide6.1.txt

سيؤدي هذا إلى استخراج كافة السلاسل النصية من ملف PDF (محاولة الحفاظ على بعض التشابه في التخطيط الأصلي).إذا لم يكن هناك نص في ملف PDF، فستعرف أنه لا يوجد التعرف الضوئي على الحروف...

نصائح أخرى

يمكن لأدوات PDF المختلفة أن تخبرك إذا كان هناك نص.بعضها متاح كعناصر تحكم COM، وربما حتى عناصر .NET الأصلية.

افتح المستند في أكروبات.انتقل إلى ملف -> خصائص.ابحث في القسم "خيارات متقدمة" وابحث عن منتج PDF.إذا كان يقرأ شيئًا مثل "التقاط الورق..."، فهذا يعني أنه تم التعرف الضوئي على الحروف.

أتمنى أن يساعدك هذا.

يقوم برنامج pdfspy الخاص بـ Apago باستخراج المعلومات من ملف PDF إلى ملف XML.ويتضمن معلومات حول المستند بما في ذلك الصور والنصوص.بالنسبة لمشروعك، تتضمن المعلومات المفيدة عدد الصور وحجمها ومكان وجود نص التعرف الضوئي على الحروف (المخفي).

http://www.apagoinc.com/pdfspy

آسف لبحث موضوع قديم، لكن إذا وجدت هذا فراجع موضوعي:

دفعة برنامج التعرف الضوئي على الحروف لملفات PDF

يمكنك الحصول على معلومات إضافية حول ملف pdf عن طريق حفظه في نظام التشغيل unix/linux/osx أو فتحه كوضع "rb" في لغة python.(بالطبع هذا هو python ولم ترغب في استخدامه ولكن ربما يحتوي على شيء مكافئ).

استخدم "dtsearch" لإنشاء فهرس لجميع ملفات pdf...ثم "اعرض ملف السجل" الخاص بعملية الفهرسة للتحقق من قائمة ملفات pdf التي لم تتم فهرستها.

حل تقني منخفض جدًا:أي ملف يحتوي على نص تم مسحه ضوئيًا سيحتوي بلا شك على الحرف "a"، لذا قم بالبحث عن جميع محتويات الملف التي لا تحتوي على الحرف "a".أي."ليس أ".أي ملف يظهر لن يتم التعرف عليه ضوئيًا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top