Python و pydf - كيفية استخراج النص من الصفحات بحيث تكون هناك مسافات بين الخطوط

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

  •  16-09-2019
  •  | 
  •  

سؤال

حاليا، إذا قمت بإنشاء كائن صفحة من صفحة PDF مع PYPDF، وفشلت ()، فما يحدث هو أن هذه الخطوط متسلسلة معا. على سبيل المثال، إذا كان الخط 1 من الصفحة يقول "Hello" والخط 2 يقول "العالم" يتم إرجاع النص الناتج الذي تم إرجاعه من Extrettext () "HelloWorld" بدلا من "Hello World". هل يعرف أحد كيفية إصلاح هذا، أو لديك اقتراحات للعمل حولها؟ أحتاج حقا إلى النص أن يكون لديك مسافات بين الأسطر لأنني أفعل نص تعدين على نص PDF هذا وعدم وجود مسافات بين الأسطر يقتله ....

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

المحلول

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

انا إستعملت Pdfminer. لاستخراج XML من PDF، وجدت أيضا كلمات متسلسلة في XML. استخراج نفس PDF مثل HTML ويمكن وصف HTML من خلال خطوط Regex التالية:

<span style="position:absolute; writing-mode:lr-tb; left:[0-9]+px; top:([0-9]+)px; font-size:[0-9]+px;">([^<]*)</span>

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

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

تمتص تحليل PDF وإذا وجدت مصدرا أفضل، فاستخدمه.

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