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

Renderöi PDF-tiedostoja, pura tekstiä ja kuvia ilmaisen Python-kirjaston kautta

Ilmainen Python API mahdollistaa PDF-tiedostojen muokkaamisen ja renderöinnin; poimi tekstiä ja kuvia, muokkaa PDF-sivuja, yhdistä/jaa ja muunna PDF-tiedostoja helposti.

PyMuPDF on kevyt avoimen lähdekoodin Python API, joka lisää Python-sidoksia ja abstraktioita MuPDF:ään. Sovellusliittymä on kooltaan pieni, mutta silti erittäin nopea, ja se tukee useita suosittuja asiakirjamuotoja, mukaan lukien PDF-, XPS-, OpenXPS-, CBZ-, EPUB- ja FB2 (eBooks) -muodot, sekä noin 10 suosittua kuvamuotoa voidaan myös avata. käsitellä asiakirjoja. PyMuPD on erittäin luotettava ja tunnetaan parhaista renderöintiominaisuuksistaan. Koska kirjasto on erittäin kevyt, se on loistava valinta alustoille, joissa resurssit ovat yleensä rajalliset, kuten älypuhelimille.

PyMuPDF API tukee lukuisia perus- ja lisäominaisuuksia PDF-dokumenttien hahmontamiseen ja muuntamiseen, kuten PDF-tiedostojen muuntamiseen PNG-muotoon, metatietojen käyttämiseen ja katseluun, ääriviivojen käsittelyyn, sivun hahmontamiseen rasteri- tai vektorikuvaksi (SVG) tai PDF-tekstiksi. Hakutuki, tekstin poimiminen PDF-sivulta, kuvien poimiminen PDF-tiedostosta, kuvan näyttäminen graafisissa käyttöliittymissä, PDF-sivun muokkaaminen, uusien PDF-sivujen luominen, ei-toivottujen PDF-sivujen poistaminen, tietojen upottaminen ja niin edelleen. PyMuPDF on sisältänyt tuen useille alustoille, kuten Macille, Linuxille ja Windowsille.

Previous Next

PyMuPDF:n käytön aloittaminen

PyMuPDF voidaan asentaa pip:llä, seuraavat komennot asennetaan Python-pyörästä, jos sellainen on saatavilla alustallesi.

Asenna PyMuPDF pipin kautta

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

Kloonaa PyMuPDF git-varaston kautta

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

Se on myös mahdollista asentaa manuaalisesti; lataa uusimmat julkaisutiedostot suoraan GitHub-arkistosta.

Tekstin etsiminen PDF-tiedostoista Pythonin kautta

PDF on ollut yksi maailman suosituimmista tiedostomuodoista asiakirjojen jakamiseen Internetissä, koska se säilyttää kaiken tekstin muotoilun ja grafiikan sisällään. Mutta näiden tiedostojen sisältä ei ole helppoa etsiä tekstiä muihin asiakirjoihin verrattuna. Ilmaisen PyMuPDF-kirjaston avulla ohjelmistokehittäjät voivat lisätä tekstihakuominaisuuksia Python-sovelluksiinsa. Sen avulla voidaan etsiä, missä sivulla tietty tekstimerkkijono on.

Hae missä PDF-sivulla Tekstimerkkijono näkyy Pythonin kautta

areas = page.search_for("mupdf") 

PDF-tekstin ja kuvien purkaminen Python API:n kautta

Avoimen lähdekoodin PyMuPDF-kirjastossa on useita tärkeitä ominaisuuksia PDF-tekstin ja -kuvien käsittelyyn. Kirjastossa on erilaisia toimintoja tekstin ja kuvien poimimiseen PDF-dokumenteista. Oletusarvoisesti se sallii pelkän tekstin poimimisen rivinvaihdoilla. Ei muotoilua, ei tekstin sijaintitietoja, ei kuvia. Lisäksi se tukee tekstilohkoluettelon luomista, sanaluettelon luomista, sivun täyden visuaalisen version luomista sisältäen kaikki kuvat ja monia muita.

Tekstin purkaminen PDF-tiedostosta Python API:n kautta

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

Liitä ja jaa PDF-asiakirjoja Python-sovelluksissa

Eri PDF-tiedostojen yhdistäminen on erittäin hyödyllinen ominaisuus, joka antaa käyttäjille mahdollisuuden saada yksi PDF tusinan erillisen PDF-tiedoston sijaan. Ilmainen ja avoimen lähdekoodin monikäyttöinen PyMuPDF-kirjasto antaa ohjelmoijille mahdollisuuden yhdistää erilaisia tiedostoja tai kopioida sivuja eri PDF-dokumenttien välillä helposti. Se antaa käyttäjille myös mahdollisuuden jakaa suuria PDF-dokumentteja pienemmiksi tiedostoiksi vain muutamalla Python-koodirivillä. On myös mahdollista valita tiettyjä PDF-dokumentin sivuja ja luoda siitä uusi dokumentti.

Luo uuden asiakirjan ensimmäiseltä ja viimeiseltä 10 sivulta

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

Lue ja vie PDF-metatiedot CSV-muotoon Pythonin kautta

Avoimen lähdekoodin PyMuPDF-kirjasto on tarjonnut täydelliset toiminnot PDF-tiedostojen metatietojen käyttämiseen ja lukemiseen ilman ulkoisia riippuvuuksia. Se tukee erityyppisiä metatietoavaimia, kuten luontipäivämäärä, tekijä, otsikko, luojasovellus, mikä tahansa aihe, salausmenetelmä, tiedostomuoto ja niin edelleen. On myös mahdollista viedä metatietoja CSV-muotoon.

 

Vie PDF-metatiedot CSV-muotoon Python API:n kautta

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()
 Suomen