Pulsuz Python Kitabxanası vasitəsilə PDF fayllarını göstərin, mətn və şəkilləri çıxarın
Pulsuz Python API PDF fayllarını redaktə etməyə və göstərməyə imkan verir; mətn və şəkilləri çıxarın, PDF səhifələrini redaktə edin, PDF-ləri asanlıqla birləşdirin/parlayın və çevirin.
PyMuPDF, MuPDF-ə Python bağlamalarını və abstraksiyalarını əlavə edən yüngül açıq mənbəli Python API-dir. API kiçik ölçülüdür, lakin çox sürətlidir və təqdim edilən PDF, XPS, OpenXPS, CBZ, EPUB və FB2 (e-kitablar) formatları daxil olmaqla bir sıra məşhur sənəd formatlarını dəstəkləyir, həmçinin 10-a yaxın məşhur şəkil formatı da açıla bilər və sənədlər kimi işlənir. PyMuPD çox etibarlıdır və ən yaxşı göstərmə qabiliyyəti ilə tanınır. Kitabxana çox yüngül olduğu üçün onu resursların adətən məhdud olduğu platformalar üçün əla seçim edir, məsələn, smartfonlar.
PDF sənədinin göstərilməsi və çevrilməsi üçün PyMuPDF API tərəfindən dəstəklənən çoxsaylı əsas və təkmil funksiyalar mövcuddur, məsələn, PDF-i PNG-yə çevirmək, metadataya daxil olmaq və onlara baxmaq, konturlarla işləmək, səhifəni rastr və ya vektor (SVG) şəklinə, PDF mətninə çevirmək Axtarış dəstəyi, PDF səhifəsindən mətn çıxarmaq, PDF-dən şəkillər çıxarmaq, Şəkili GUI-lərdə göstərmək, PDF səhifəsini dəyişdirmək, yeni PDF səhifələri yaratmaq, arzuolunmaz PDF səhifələrini silmək, Məlumatların daxil edilməsi və s. PyMuPDF-ə Mac, Linux və Windows kimi çoxsaylı platformalar üçün dəstək daxildir.
PyMuPDF ilə işə başlamaq
PyMuPDF pip istifadə edərək quraşdırıla bilər, platformanız üçün mövcud olduqda aşağıdakı əmrlər Python çarxından quraşdırılacaq.
Pip vasitəsilə PyMuPDF quraşdırın
python -m pip install --upgrade pip
python -m pip install --upgrade pymupdf
Git Repository vasitəsilə PyMuPDF-ni klonlayın
git clone https://github.com/pymupdf/PyMuPDF.git
Onu əl ilə quraşdırmaq da mümkündür; ən son buraxılış fayllarını birbaşa GitHub deposundan endirin.
Python vasitəsilə PDF fayllarında mətn axtarılır
PDF sənədləri internetdə paylaşmaq üçün dünyanın ən sevimli fayl formatlarından biri olmuşdur, çünki bütün mətn formatlarını və qrafikləri özündə saxlayır. Lakin digər sənədlərlə müqayisədə bu faylların içərisində mətn axtarmaq asan deyil. Pulsuz PyMuPDF kitabxanası proqram tərtibatçılarına öz Python proqramlarına mətn axtarışı imkanları əlavə etməyə imkan verir. Bu, səhifədə müəyyən mətn sətirinin harada olduğunu axtarmağa imkan verir.
Python vasitəsilə PDF Səhifəsində Mətn Sətirinin Göründüyü yerdə axtarın
areas = page.search_for("mupdf")
Python API vasitəsilə PDF Mətn və Şəkillərin çıxarılması
Açıq mənbəli PyMuPDF kitabxanası PDF mətnləri və şəkilləri ilə işləmək üçün bir sıra vacib funksiyaları özündə birləşdirir. Kitabxana PDF sənədlərindən mətn və şəkillər çıxarmaq üçün müxtəlif funksiyalar təmin etmişdir. Varsayılan olaraq, sətir fasilələri ilə düz mətni çıxarmağa imkan verir. Formatlama yoxdur, mətn mövqeyi təfərrüatları yoxdur, şəkillər yoxdur. Bundan əlavə, o, mətn bloklarının siyahısının yaradılmasını, sözlərin siyahısının yaradılmasını, istənilən şəkillər daxil olmaqla səhifənin tam vizual versiyasını yaratmağı və daha çoxunu dəstəkləyir.
Python API vasitəsilə PDF-dən mətni necə çıxarmaq olar
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 ) )
Python tətbiqlərində PDF sənədlərinə qoşulun və bölün
Müxtəlif PDF fayllarını birləşdirmək, istifadəçilərə onlarla ayrı PDF-ə malik olmaqdansa, bir PDF-ə sahib olmaq imkanı verən çox faydalı xüsusiyyətdir. Pulsuz və açıq mənbəli cross-platform PyMuPDF kitabxanası proqram proqramçılarına müxtəlif faylları birləşdirmək və ya müxtəlif PDF sənədləri arasında səhifələri asanlıqla köçürmək imkanı verir. O, həmçinin istifadəçilərə bir neçə sətir Python kodu ilə böyük PDF sənədlərini daha kiçik fayllara bölmək imkanı verir. PDF sənədinin bəzi xüsusi səhifələrini seçmək və ondan yeni sənəd yaratmaq da mümkündür.
İlk və Son 10 Səhifədən Yeni Sənəd yaradır
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")
Python vasitəsilə PDF metadatasını CSV-yə oxuyun və ixrac edin
Açıq mənbəli PyMuPDF kitabxanası heç bir xarici asılılıq olmadan PDF fayllarının metadatasına daxil olmaq və oxumaq üçün tam funksionallıq təmin etmişdir. Yaradılma tarixi, müəllif, başlıq, yaradıcı tətbiq, istənilən mövzu, şifrələmə üsulu, fayl formatı və s. kimi müxtəlif növ metadata açarlarını dəstəkləyir. Metaməlumatları CSV formatına ixrac etmək də mümkündür.
Python API vasitəsilə PDF metadatasını CSV-yə ixrac edin
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()