برمجة سكريبت بايثون لتحويل PDF الى نص Text

برمجة سكريبت بايثون لتحويل PDF الى نص pdftotext

برمجة سكريبت بايثون لتحويل PDF الى نص Text

اليوم سنتعرف على مكتبة مميزة  pdftotext هذه المكتبة سنقوم باستعمالها لتحويل كتاب الكتروني pdf الى ملف نصي text . سنقوم ببرمجة سكريبت بسيط لفهم الية التحويل وهذا بشرح مثال حتى يتضح المقال.

شرح تثبيت المكتبة pdftotext وملحقاتها

تثبيت الملحقات OS Dependencies

  • افتح الطرفية أو Terminal وانسخ امر التثبيت المناسب لنظامك
Debian, Ubuntu, and friends
sudo apt-get update
sudo apt-get install build-essential libpoppler-cpp-dev pkg-config python-dev

Fedora, Red Hat, and friends:

sudo yum install gcc-c++ pkgconfig poppler-cpp-devel python-devel redhat-rpm-config

macOS:
brew install pkg-config poppler

تثبيت المكتبة  pdftotext

pip install pdftotext

شرح برمجة السكريبت

  • افتح محرر البايثون الذي تفضله

  • أكتب أول سطر حتى نحدد نسخة البايثون المراد العمل عليها, طبعا دائما افضل النسخة القديمة 2 لانها تدعم جميع المكاتب.
#!/usr/bin/env python
  • ثم نحتاج استدعاء المكتبة
import pdftotext
1- نقوم بفتح ملف pdf المراد تحويله بواسطة دالة Open
ثم قراءة محتواه على شكل Read Binary باستعمال rb
ونضع محتواه في كائن نسميه f
with open("ScapyCheatSheet_v0.2.pdf", "rb") as f:
2- الأن نأتي لدالة التحويل pdftotext نمرر لها ملفنا السابق f
ستقوم بتحويله الى نص وتضعه في متغير المسمى pdf
    pdf = pdftotext.PDF(f)
3- نغلق الان عملية القراءة حتى لا تستهلك الرام
    f.close()
الأن مثلا سنقوم بكتابة ما قرأناه داخل ملف سأسميه output.txt
1- ننشئ ملف output.txt بواسطة الدالة open
2- نعطيه خاصية الكتابة w بمعنى write
3- وسنتحكم بهذا الملف أو الكائن باسم txt
with open("output.txt", 'w') as txt:
4- نقوم بكتابة ملفنا الذي حولناه سابقا المسمى pdf داخل الملف output.txt
والتي يشير اليها داخل سكريبت البايثون الخاص بنا الكائن txt باستعمال امر الكتابة ()txt.write.
    txt.write("\n\n".join(pdf).encode('utf-8'))
استعملنا الدالة join حتى نقوم بدمج جميع الصفحات في ملف واحد بحيث يضع بين الصفحات سطرين "n\n\"
استعملنا encode والترميز utf-8 حتى يقوم بكتابة الملف على القرص الصلب دون مشاكل
لانه يوجد رموز وربما الحروف العربية قد تتشوه ولا يتم حفظها
ثم اغلقنا مقبض الكتابة
    txt.close()
الكود النهائي

نتيجة التحويل

معلومات اضافية

  • لو اردنا تحويل ملف pdf يحتوي على رقم سري نستعمل الدالة كالاتي
نقوم بتمرير الكتاب المراد تحويله ومعه كلمة السر
    pdf = pdftotext.PDF(f,"password")
  • لمعرفة كم يحتوي الكتاب pdf من صفحات نستعمل الدالة len
print(len(pdf))
  • اذا اردنا طباعة أو تحويل صفحة معينة من الكتاب نستعمل  [رقم الصفحة]pdf نتعامل معها على انها مصفوفة
print(pdf[0])
print(pdf[1])