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

Pateikite PDF failus, ištraukite tekstą ir vaizdus naudodami nemokamą Python biblioteką

Nemokama Python API leidžia redaguoti ir pateikti PDF failus; Išskleiskite tekstą ir vaizdus, redaguokite PDF puslapius, lengvai sujunkite / padalinkite ir konvertuokite PDF failus.

PyMuPDF yra lengva atvirojo kodo Python API, kuri prideda Python susiejimą ir abstrakcijas į MuPDF. API yra mažo dydžio, tačiau labai greita ir palaiko daugybę populiarių dokumentų formatų, įskaitant PDF, XPS, OpenXPS, CBZ, EPUB ir FB2 (el. knygų) formatus, taip pat galima atidaryti apie 10 populiarių vaizdo formatų. tvarkomi kaip dokumentai. PyMuPD yra labai patikimas ir žinomas dėl savo geriausių atvaizdavimo galimybių. Kadangi biblioteka yra labai maža, tai puikus pasirinkimas platformoms, kuriose ištekliai paprastai yra riboti, pavyzdžiui, išmaniesiems telefonams.

PyMuPDF API palaiko daug pagrindinių ir išplėstinių funkcijų, skirtų PDF dokumentų atvaizdavimui ir konvertavimui, pvz., PDF konvertavimas į PNG, metaduomenų prieiga ir peržiūra, darbas su kontūrais, puslapio atvaizdavimas rastriniu arba vektoriniu (SVG) vaizdu, PDF tekstu. Pagalbos paieška, teksto ištraukimas iš PDF puslapio, vaizdų ištraukimas iš PDF, vaizdo rodymas GUI, PDF puslapio modifikavimas, naujų PDF puslapių kūrimas, nepageidaujamų PDF puslapių ištrynimas, duomenų įterpimas ir pan. „PyMuPDF“ palaiko daugybę platformų, tokių kaip „Mac“, „Linux“ ir „Windows“.

Previous Next

Darbo su PyMuPDF pradžia

PyMuPDF galima įdiegti naudojant pip, šios komandos bus įdiegtos iš Python rato, jei toks yra jūsų platformoje.

Įdiekite PyMuPDF per pip

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

Klonuokite PyMuPDF per git saugyklą

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

Galima montuoti ir rankiniu būdu; atsisiųskite naujausius leidimo failus tiesiai iš GitHub saugyklos.

Teksto paieška PDF failuose per Python

PDF buvo vienas iš mėgstamiausių failų formatų, skirtų dalytis dokumentais internete, nes jame išsaugomas visas teksto formatavimas ir grafika. Tačiau šiuose failuose nėra lengva ieškoti teksto, palyginti su kitais dokumentais. Nemokama PyMuPDF biblioteka leidžia programinės įrangos kūrėjams įtraukti teksto paieškos galimybes savo Python programose. Tai leidžia ieškoti, kurioje puslapio vietoje yra tam tikra teksto eilutė.

Ieškoti kur PDF puslapyje Teksto eilutė rodoma naudojant Python

areas = page.search_for("mupdf") 

PDF teksto ir vaizdų ištraukimas per Python API

Atvirojo kodo PyMuPDF bibliotekoje yra keletas svarbių funkcijų, skirtų darbui su PDF tekstu ir vaizdais. Bibliotekoje yra įvairių funkcijų, skirtų tekstui ir vaizdams iš PDF dokumentų išgauti. Pagal numatytuosius nustatymus jis leidžia išgauti paprastą tekstą su eilučių pertraukomis. Jokio formatavimo, jokios teksto padėties informacijos, jokių vaizdų. Be to, jis palaiko teksto blokų sąrašo generavimą, žodžių sąrašo generavimą, pilnos vaizdinės puslapio versijos su bet kokiais vaizdais kūrimą ir daug daugiau.

Kaip ištraukti tekstą iš PDF naudojant 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 ) )

Prisijunkite ir padalinkite PDF dokumentus Python APP

Įvairių PDF failų derinimas yra labai naudinga funkcija, suteikianti vartotojams galimybę turėti vieną PDF, o ne keliolika atskirų PDF failų. Nemokama atvirojo kodo kelių platformų PyMuPDF biblioteka suteikia programuotojams galią lengvai sujungti skirtingus failus arba kopijuoti puslapius tarp skirtingų PDF dokumentų. Tai taip pat suteikia vartotojams galimybę padalyti didelius PDF dokumentus į mažesnius failus, naudojant tik kelias Python kodo eilutes. Taip pat galima pasirinkti kai kuriuos konkrečius PDF dokumento puslapius ir iš jo sukurti naują dokumentą.

Sukuria naują dokumentą iš pirmųjų ir paskutinių 10 puslapių

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

Skaitykite ir eksportuokite PDF metaduomenis į CSV naudodami Python

Atvirojo kodo PyMuPDF biblioteka suteikė visas funkcijas, leidžiančias pasiekti ir skaityti PDF failų metaduomenis be jokių išorinių priklausomybių. Jis palaiko įvairių tipų metaduomenų raktus, tokius kaip sukūrimo data, autorius, pavadinimas, kūrėjo programa, bet kokia tema, šifravimo metodas, failo formatas ir pan. Taip pat galima eksportuoti metaduomenis į CSV formatą.

 

Eksportuokite PDF metaduomenis į CSV naudodami 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()
 Lietuvių