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



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

    الشرح

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

    تثبيت الملحقات 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])


    شارك المقال

    مقالات متعلقة

    إرسال تعليق