تقديم ملفات PDF واستخراج النصوص والصور عبر مكتبة Python المجانية

تسمح Python API المجانية بتحرير وتقديم ملفات PDF ؛ استخراج النصوص والصور وتحرير صفحات PDF ودمج / تقسيم وتحويل ملفات PDF بسهولة.

PyMuPDF هي واجهة برمجة تطبيقات Python خفيفة الوزن ومفتوحة المصدر تضيف روابط Python والتجريد إلى MuPDF. واجهة برمجة التطبيقات صغيرة الحجم ولكنها سريعة جدًا وتوفر دعمًا لعدد من تنسيقات المستندات الشائعة بما في ذلك تنسيقات PDF و XPS و OpenXPS و CBZ و EPUB و FB2 (الكتب الإلكترونية) بالإضافة إلى حوالي 10 تنسيقات صور شائعة يمكن فتحها ، و تعامل مثل المستندات. يعد PyMuPD موثوقًا للغاية ومعروفًا بقدرته على العرض. نظرًا لأن وزن المكتبة خفيف جدًا ، يجعلها خيارًا رائعًا للأنظمة الأساسية حيث تكون الموارد عادةً محدودة ، مثل الهواتف الذكية.

هناك العديد من الميزات الأساسية والمتقدمة التي تدعمها واجهة برمجة تطبيقات PyMuPDF لعرض وتحويل مستندات PDF ، مثل تحويل PDF إلى PNG ، والوصول إلى البيانات الأولية وعرضها ، والعمل مع الخطوط العريضة ، وتحويل الصفحة إلى صورة نقطية أو متجه (SVG) ، ونص PDF دعم البحث ، واستخراج النص من صفحة PDF ، واستخراج الصور من PDF ، وعرض الصورة في واجهة المستخدم الرسومية ، وتعديل صفحة PDF ، وإنشاء صفحات PDF جديدة ، وحذف صفحات PDF غير المرغوب فيها ، ودمج البيانات وما إلى ذلك. يتضمن PyMuPDF دعمًا للعديد من الأنظمة الأساسية ، مثل Mac و Linux و Windows.

Previous Next

الشروع في العمل مع PyMuPDF

يمكن تثبيت PyMuPDF باستخدام نقطة ، وسيتم تثبيت الأوامر التالية من عجلة Python إذا كان أحدها متاحًا لمنصتك.

قم بتثبيت PyMuPDF عبر النقطة

 python -m pip install --upgrade pip
python -m pip install --upgrade pymupdf
 

استنساخ PyMuPDF عبر مستودع git

 git clone https://github.com/pymupdf/PyMuPDF.git 

من الممكن أيضًا تثبيته يدويًا ؛ تنزيل أحدث ملفات الإصدار مباشرةً من مستودع GitHub .

البحث عن نص في ملفات PDF عبر بايثون

يعد PDF أحد تنسيقات الملفات المفضلة في العالم لمشاركة المستندات عبر الإنترنت لأنه يحتفظ بجميع تنسيقات النص والرسومات بداخله. لكن ليس من السهل البحث عن نص داخل هذه الملفات مقارنة بالمستندات الأخرى. تتيح مكتبة PyMuPDF المجانية لمطوري البرامج إضافة إمكانات البحث عن النص داخل تطبيقات Python الخاصة بهم. يسمح بالبحث عن مكان وجود سلسلة نصية معينة على الصفحة.

ابحث عن مكان ظهور سلسلة نص صفحة PDF عبر Python

areas = page.search_for("mupdf") 

استخراج نص وصور PDF عبر Python API

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

كيفية استخراج نص من ملف PDF عبر Python API

from operator import itemgetter
from itertools import groupby
import fitz
doc = fitz.open( 'mydocument.pdf' )
pages = [ doc[ i ] for i in range( doc.pageCount ) ]
for page in pages:
  text_words = page.getTextWords()
  # The words should be ordered by y1 and x0
  sorted_words = SortedCollection( key = itemgetter( 3, 0 ) )
  for word in text_words:
    sorted_words.insert( word )
  # At this point you already have an ordered list. If you need to 
  # group the content by lines, use groupby with y1 as a key
  lines = groupby( sorted_words, key = itemgetter( 3 ) )

انضم إلى مستندات PDF وتقسيمها في تطبيقات Python

يعد الجمع بين ملفات PDF المختلفة ميزة مفيدة للغاية تمنح المستخدمين القدرة على الحصول على ملف PDF واحد بدلاً من امتلاك عشرات ملفات PDF منفصلة. توفر مكتبة PyMuPDF عبر الأنظمة الأساسية المجانية والمفتوحة المصدر لمبرمجي البرامج القدرة على دمج ملفات مختلفة أو نسخ الصفحات بين مستندات PDF المختلفة بسهولة. كما أنه يمنح المستخدمين القدرة على تقسيم مستندات PDF الكبيرة إلى ملفات أصغر باستخدام سطرين فقط من كود Python. من الممكن أيضًا تحديد بعض الصفحات المحددة من مستند PDF وإنشاء مستند جديد منه.

يقوم بإنشاء مستند جديد من أول وآخر 10 صفحات

doc2 = fitz.open()                 # new empty PDF
doc2.insert_pdf(doc1, to_page = 9)  # first 10 pages
doc2.insert_pdf(doc1, from_page = len(doc1) - 10) # last 10 pages
doc2.save("first-and-last-10.pdf")

قراءة وتصدير بيانات تعريف PDF إلى CSV عبر Python

توفر مكتبة PyMuPDF مفتوحة المصدر وظائف كاملة للوصول إلى البيانات الوصفية لملفات PDF وقراءتها دون أي تبعيات خارجية. وهو يدعم أنواعًا مختلفة من مفاتيح البيانات الوصفية مثل تاريخ الإنشاء والمؤلف والعنوان وتطبيق المنشئ وأي موضوع وطريقة تشفير وتنسيق ملف وما إلى ذلك. من الممكن أيضًا تصدير البيانات الوصفية إلى تنسيق CSV.

 

تصدير بيانات تعريف PDF إلى CSV عبر Python API

import csv
import fitz
import argparse
parser = argparse.ArgumentParser(description="Enter CSV delimiter [;], CSV filename and documment filename")
parser.add_argument('-d', help='CSV delimiter [;]', default = ';')
parser.add_argument('-x', help='delete XML info [n]', default = 'n')
parser.add_argument('-csv', help='CSV filename')
parser.add_argument('-pdf', help='PDF filename')
args = parser.parse_args()
delim = args.d               # requested CSV delimiter character
assert args.csv, "missing CSV filename"
assert args.pdf, "missing PDF filename"
print "delimiter", args.d
print "xml delete", args.x
print "csv file", args.csv
print "pdf file", args.pdf
print "----------------------------------------"
doc = fitz.open(args.pdf)
oldmeta = doc.metadata
print "old metadata:"
for k,v in oldmeta.items():
    print k, ":",v
with open(args.csv) as tocfile:
    tocreader = csv.reader(tocfile, delimiter = delim)
    for row in tocreader:
        assert len(row) == 2, "each row must contain 2 entries"
        oldmeta[row[0]] = row[1]
print "----------------------------------------"
print "\nnew metadata:"
for k,v in oldmeta.items():
    print k, ":",v
doc.set_metadata(oldmeta)
doc.saveIncr()
 عربي