1. Məhsullar
  2.   PDF
  3.   Python
  4.   PyMuPDF
 
  

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.

Previous Next

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()
 Azəri