1. Produkti
  2.   PDF
  3.   Python
  4.   PyMuPDF
 
  

Renderējiet PDF failus, izņemiet tekstu un attēlus, izmantojot bezmaksas Python bibliotēku

Bezmaksas Python API ļauj rediģēt un renderēt PDF failus; izņemiet tekstu un attēlus, rediģējiet PDF lapas, viegli apvienojiet/sadaliet un konvertējiet PDF failus.

PyMuPDF ir viegls atvērtā pirmkoda Python API, kas MuPDF pievieno Python saistījumus un abstrakcijas. API ir maza izmēra, taču tā ir ļoti ātra, un ar nosacījumu, ka tā atbalsta vairākus populārus dokumentu formātus, tostarp PDF, XPS, OpenXPS, CBZ, EPUB un FB2 (e-grāmatas) formātus, kā arī var atvērt aptuveni 10 populārus attēlu formātus. apstrādāti kā dokumenti. PyMuPD ir ļoti uzticams un ir pazīstams ar savām izcilākajām renderēšanas iespējām. Tā kā bibliotēkai ir ļoti mazs svars, tā ir lieliska izvēle platformām, kur resursi parasti ir ierobežoti, piemēram, viedtālruņiem.

PyMuPDF API atbalsta daudzas pamata un uzlabotas funkcijas PDF dokumentu renderēšanai un konvertēšanai, piemēram, PDF konvertēšanai uz PNG, piekļuvei metadatiem un to skatīšanai, darbam ar kontūrām, lapas renderēšanai rastra vai vektora (SVG) attēlā, PDF tekstā. Atbalsta meklēšana, teksta izvilkšana no PDF lapas, attēlu izvilkšana no PDF, attēla parādīšana GUI, PDF lapas modificēšana, jaunu PDF lapu izveide, nevēlamu PDF lapu dzēšana, datu iegulšana un tā tālāk. PyMuPDF ir iekļāvis atbalstu daudzām platformām, piemēram, Mac, Linux un Windows.

Previous Next

Darba sākšana ar PyMuPDF

PyMuPDF var instalēt, izmantojot pip, tālāk norādītās komandas tiks instalētas no Python riteņa, ja tāda ir pieejama jūsu platformai.

Instalējiet PyMuPDF, izmantojot pip

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

Klonējiet PyMuPDF, izmantojot git repozitoriju

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

Ir iespējams to uzstādīt arī manuāli; lejupielādējiet jaunākos laidiena failus tieši no GitHub krātuves.

Teksta meklēšana PDF failos, izmantojot Python

PDF ir bijis viens no pasaulē iecienītākajiem failu formātiem dokumentu koplietošanai internetā, jo tajā ir saglabāts viss teksta formatējums un grafika. Taču, salīdzinot ar citiem dokumentiem, šajos failos nav viegli meklēt tekstu. Bezmaksas PyMuPDF bibliotēka ļauj programmatūras izstrādātājiem pievienot teksta meklēšanas iespējas savās Python lietojumprogrammās. Tas ļauj meklēt, kur lapā atrodas noteikta teksta virkne.

Meklēt, kur PDF lappusē Teksta virkne parādās, izmantojot Python

areas = page.search_for("mupdf") 

PDF teksta un attēlu izvilkšana, izmantojot Python API

Atvērtā pirmkoda PyMuPDF bibliotēkā ir iekļautas vairākas svarīgas funkcijas darbam ar PDF tekstu un attēliem. Bibliotēka ir nodrošinājusi dažādas funkcijas teksta, kā arī attēlu izvilkšanai no PDF dokumentiem. Pēc noklusējuma tas ļauj iegūt vienkāršu tekstu ar rindiņu pārtraukumiem. Bez formatējuma, bez teksta pozīcijas informācijas, bez attēliem. Turklāt tas atbalsta teksta bloku saraksta ģenerēšanu, vārdu saraksta ģenerēšanu, lapas pilnas vizuālās versijas izveidi, ieskaitot visus attēlus, un daudz ko citu.

Kā izvilkt tekstu no PDF, izmantojot 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 ) )

Pievienojieties un sadaliet PDF dokumentus Python APPs

Dažādu PDF failu apvienošana ir ļoti noderīga funkcija, kas lietotājiem sniedz iespēju izveidot vienu PDF, nevis duci atsevišķu PDF failu. Bezmaksas un atvērtā koda starpplatformu PyMuPDF bibliotēka sniedz programmatūras programmētājiem iespēju viegli sapludināt dažādus failus vai kopēt lapas starp dažādiem PDF dokumentiem. Tas arī sniedz lietotājiem iespēju sadalīt lielus PDF dokumentus mazākos failos, izmantojot tikai dažas Python koda rindas. Ir iespējams arī atlasīt dažas konkrētas PDF dokumenta lapas un izveidot no tā jaunu dokumentu.

Izveido jaunu dokumentu no pirmajām un pēdējām 10 lapām

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")

Lasiet un eksportējiet PDF metadatus CSV formātā, izmantojot Python

Atvērtā pirmkoda PyMuPDF bibliotēka ir nodrošinājusi pilnīgu funkcionalitāti, lai piekļūtu PDF failu metadatiem un tos lasītu bez jebkādām ārējām atkarībām. Tā atbalsta dažāda veida metadatu atslēgas, piemēram, izveides datumu, autoru, nosaukumu, veidotāja lietojumprogrammu, jebkuru tēmu, šifrēšanas metodi, faila formātu un tā tālāk. Ir iespējams arī eksportēt metadatus CSV formātā.

 

Eksportējiet PDF metadatus uz CSV, izmantojot 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()
 Latviski