pd3f-core
تجريبي، استخدمه بحذر.
pd3f-core
عبارة عن حزمة Python لإعادة بناء النص الأصلي المستمر من ملفات PDF باستخدام نماذج اللغة. يفترض pd3f-core
أن ملف PDF الخاص بك إما قائم على النص أو التعرف الضوئي على الحروف (OCRd) بالفعل. يقع pd3f-core
في قلب pd3f: خط أنابيب كامل لاستخراج النص المستند إلى Docker (بما في ذلك التعرف الضوئي على الحروف).
يستخدم pd3f-core
أولاً Parsr لتقطيع ملفات PDF إلى أسطر وفقرات. ثم يستخدم حزمة Python dehyphen لإعادة بناء الفقرات بالطريقة الأكثر احتمالاً. يتم اشتقاق الاحتمال من خلال حساب درجة الحيرة باستخدام نماذج لغة Flair القائمة على الأحرف. تتم إزالة الواصلات غير الضرورية، ويتم الاحتفاظ بالمسافات أو الأسطر الجديدة أو إسقاطها اعتمادًا على الكلمات المحيطة.
لقد تم تطويره بشكل أساسي للغة الألمانية ولكن يجب أن يعمل مع اللغات الأخرى أيضًا. المشروع لا يزال في مرحلة مبكرة. توقع حواف خشنة وتغيرات سريعة.
توثيق واجهة برمجة التطبيقات لـ pd3f-core: https://pd3f.github.io/pd3f-core/index.html
توثيق pdf3f (ال): https://pd3f.com/docs/
تحقق من إمكانية ربط سطرين عن طريق إزالة الواصلات ('-').
اختر بين إضافة مسافة بسيطة (' ') أو سطر جديد ('n') عند ضم الأسطر.
تحقق من إمكانية ضم الفقرة الأخيرة من الصفحة والفقرة الأولى من الصفحة التالية.
من أجل ضم الفقرات (وعكس فواصل الصفحات)، اكتشف الحواشي السفلية وقم بتحويلها إلى تعليقات ختامية. في الوقت الحالي، يتم سحب الحواشي السفلية إلى نهاية الملف.
إذا كان الرأس أو التذييل هو نفسه بالنسبة لجميع الصفحات، فاعرضهما مرة واحدة فقط. يتم سحب الرؤوس إلى بداية المستند والتذييل إلى النهاية. يتم استخدام بعض الأساليب الإرشادية بناءً على تشابه التذييلات. (مسافة Jaccard للنص، ومقارنة الأشكال المتداخلة)
pip install pd3f
أو
poetry add pd3f
بدء مثيل Parsr محلي:
docker-compose up
(يمكنك أيضًا استخدام نفق مثيل Parsr بعيد (برنامج نصي) أو اختيار عنوان بعيد.)
from pd3f import extract
text , tables = extract ( file_path , tables = False , experimental = False , force_gpu = False , lang = "multi" , fast = False , parsr_location = "localhost:3001" )
شرح المعلمات في المستندات: https://pd3f.github.io/pd3f-core/export.html#pd3f.export.extract
يؤدي استخدام CUDA إلى تسريع عملية التقييم باستخدام Flair. لكنك بحاجة إلى وحدة معالجة الرسومات (باهظة الثمن). تحتاج إلى إعداد GPU الخاص بك مع CUDA. هنا دليل لأوبونتو 18.04
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
(مثال)pd3f-core
مع الشعر: poetry add pd3f
يدرك الشعر أنه يتم تشغيله ضمن بيئة افتراضية، لذا فهو لا يخلق بيئة جديدة. نظرًا لصعوبة إعداد CUDA، قم بتثبيته بالطريقة الأكثر سهولة (باستخدام conda).
في قلب pd3f-core
يوجد مخرج JSON لـ Parsr. بعض التعليقات حول كيفية وسبب اختيار أشياء معينة. وثائق Parsr حول الوحدات المختلفة
يحتوي Parsr على عدة وحدات لتصنيف الفقرات إلى أنواع معينة. أنها توفر اكتشافات القائمة وكذلك الكشف عن العنوان. من خلال تجربتي، الدقة منخفضة جدًا لكليهما، لذلك لا نستخدمها الآن. وهذا يعني أيضًا أن كل النص المستخرج (المخرج) مسطح (بدون عناوين أو تنسيقات مختلفة وما إلى ذلك).
نقوم بتمكين الرسم + اكتشاف الصورة لأننا قد نحتاج إلى فهم الفقرة التي تتبع أي فقرة أخرى. قد يكون هذا مفيدًا عندما تقرر ما إذا كنت تريد ضم الفقرات أم لا. ولكن يتم إسقاطه عند تفعيل الإعداد fast
.
في إخراج JSON يوجد حقل pageNumber
. يأتي هذا من وحدة اكتشاف الصفحة. لذلك يتم اشتقاق pageNumber
من رأس/تذييل كل صفحة. لذلك قد يكون مختلفًا عن الفهرس الموجود في مصفوفة الصفحات. لا تقم بالترحيل على pageNumber
في إخراج JSON.
تم استخدام words-to-line-new
مثل هذا. لا يوجد خطأ ولكن الدقة تنخفض إذا تم استخدامه بطريقة أخرى.
" words-to-line-new " ,
[
" reading-order-detection " ,
لا تقم بإجراء التعرف الضوئي على الحروف باستخدام Parsr لأن النتائج أسوأ من OCRmyPDF (لأن الأخير يستخدم المعالجة المسبقة للصور).
تثبيت واستخدام الشعر.
رخصة أفيرو العامة 3.0