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

تم تحميل الصفحة في 1,4801436 ثانية
برمجة سكريبت بايثون لتحويل PDF الى نص Text
إنضم
2 نوفمبر 2012
المشاركات
3,404
الإعجابات
2,872
النقاط
113
العمر
30
الإقامة
Algeria


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



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


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


افتح الطرفية أو Terminal وانسخ امر التثبيت المناسب لنظامك

Debian, Ubuntu, and friends:

```

Bash:
sudo apt-get update
sudo apt-get install build-essential libpoppler-cpp-dev pkg-config python-dev
```

Fedora, Red Hat, and friends:

```

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


macOS:

```
Bash:
brew install pkg-config poppler
```
تثبيت المكتبة pdftotext

```

Bash:
pip install pdftotext
```



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

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

أكتب أول سطر حتى نحدد نسخة البايثون المراد العمل عليها, طبعا دائما افضل النسخة القديمة 2
لانها تدعم جميع المكاتب.

Python:
#!/usr/bin/env python
ثم نحتاج استدعاء المكتبة

Python:
import pdftotext

1- نقوم بفتح ملف pdf المراد تحويله بواسطة دالة Open

ثم قراءة محتواه على شكل Read Binary باستعمال rb

ونضع محتواه في كائن نسميه f

Python:
with open("ScapyCheatSheet_v0.2.pdf", "rb") as f:
2- الأن نأتي لدالة التحويل pdftotext نمرر لها ملفنا السابق f

ستقوم بتحويله الى نص وتضعه في متغير المسمى pdf

Python:
pdf = pdftotext.PDF(f)
3- نغلق الان عملية القراءة حتى لا تستهلك الرام

كود:
f.close()
كود:

	

الأن مثلا سنقوم بكتابة ما قرأناه داخل ملف سأسميه output.txt


1- ننشئ ملف output.txt بواسطة الدالة open

2- نعطيه خاصية الكتابة w بمعنى write

3- وسنتحكم بهذا الملف أو الكائن باسم txt

Python:
with open("output.txt", 'w') as txt:
4- نقوم بكتابة ملفنا الذي حولناه سابقا المسمى pdf داخل الملف output.txt

والتي يشير اليها داخل سكريبت البايثون الخاص بنا الكائن txt باستعمال امر الكتابة ()txt.write.

Python:
txt.write("\n\n".join(pdf).encode('utf-8'))

استعملنا الدالة join حتى نقوم بدمج جميع الصفحات في ملف واحد بحيث يضع بين الصفحات سطرين "n\n\"

استعملنا encode والترميز utf-8 حتى يقوم بكتابة الملف على القرص الصلب دون مشاكل

لانه يوجد رموز وربما الحروف العربية قد تتشوه ولا يتم حفظها

ثم اغلقنا مقبض الكتابة

Python:
txt.close()

الكود النهائي




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




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

لو اردنا تحويل ملف pdf يحتوي على رقم سري نستعمل الدالة كالاتي

نقوم بتمرير الكتاب المراد تحويله ومعه كلمة السر

Python:
pdf = pdftotext.PDF(f,"password")
لمعرفة كم يحتوي الكتاب pdf من صفحات نستعمل الدالة len

Python:
print(len(pdf))

اذا اردنا طباعة أو تحويل صفحة معينة من الكتاب نستعمل [رقم الصفحة]pdf نتعامل معها على انها مصفوفة

Python:
print(pdf[0])

print(pdf[1])
 
إنضم
8 سبتمبر 2013
المشاركات
7,666
الإعجابات
11,474
النقاط
168
الإقامة
Live.IQ(JO => JO.AMMAN)
مكتبة جميلة فعلا .. لا اعلم ماذا يمكن ان لا يتواجد في مكتبات البايثون ..

كل شي موجود فعلا

احسنت اخي و جازاك الله خير للمشاركة
 
إنضم
2 نوفمبر 2012
المشاركات
3,404
الإعجابات
2,872
النقاط
113
العمر
30
الإقامة
Algeria
مكتبة جميلة فعلا .. لا اعلم ماذا يمكن ان لا يتواجد في مكتبات البايثون ..

كل شي موجود فعلا

احسنت اخي و جازاك الله خير للمشاركة
شكرا لمرورك اخي الحبيب أمير

فعلا بايثون غنية بالمكتبات في شتى المجالات
وغنية بالادوات والسورسات أيضا
/
ما يحيرني دائما أن لغة البرمجة بيرل وروبي قوية أيضا لكن لا يوجد الكثير من يستعملها كالبايثون
 

hasan-taha

Beginner Developer
rank
إنضم
21 سبتمبر 2016
المشاركات
128
الإعجابات
87
النقاط
28
بارك الله فيك
تبسيط الشروحات أهم شيء بالنسبة لنا
وهذا من اختصاصك
شكرا لك
 
إنضم
2 نوفمبر 2012
المشاركات
3,404
الإعجابات
2,872
النقاط
113
العمر
30
الإقامة
Algeria

الأعضاء النشطين حاليآ الذين يشاهدون هذا الموضوع (1 عضو و 0 ضيف)

خيارات الاستايل

نوع الخط
مودك
اخفاء السايدر بار OFF
توسيط المنتدى OFF
فصل الأقسام OFF
الأقسام الفرعية OFF
عرض المشاركات
حجم الخط
معلومات العضو OFF
إخفاء التوقيع OFF

إرجاع خيارات الإستايل