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

Render Fail PDF, Ekstrak Teks & Imej melalui Perpustakaan Python Percuma

API Python Percuma membenarkan untuk mengedit dan membuat Fail PDF; ekstrak teks & imej, edit halaman PDF, cantum/pisah & tukar PDF dengan mudah.

PyMuPDF ialah API Python sumber terbuka ringan yang menambahkan pengikatan dan abstraksi Python pada MuPDF. API bersaiz kecil tetapi sangat pantas dan disediakan menyokong beberapa format dokumen popular termasuk format PDF, XPS, OpenXPS, CBZ, EPUB dan FB2 (eBuku) serta kira-kira 10 format imej popular juga boleh dibuka, dan dikendalikan seperti dokumen. PyMuPD sangat dipercayai dan terkenal dengan keupayaan pemaparan terbaiknya. Memandangkan perpustakaan ini sangat ringan menjadikannya pilihan yang bagus untuk platform di mana sumber biasanya terhad, seperti telefon pintar.

Terdapat banyak ciri asas dan lanjutan yang disokong oleh API PyMuPDF untuk pemaparan dan penukaran dokumen PDF, seperti menukar PDF kepada PNG, mengakses dan melihat metadata, bekerja dengan garis besar, menjadikan halaman menjadi imej raster atau vektor (SVG), teks PDF Mencari sokongan, mengekstrak teks daripada halaman PDF, mengekstrak imej daripada PDF, memaparkan Imej dalam GUI, mengubah suai halaman PDF, mencipta halaman PDF baharu, memadam halaman PDF yang tidak diingini, Membenamkan Data dan sebagainya. PyMuPDF telah menyertakan sokongan untuk pelbagai platform, seperti Mac, Linux dan Windows.

Previous Next

Bermula dengan PyMuPDF

PyMuPDF boleh dipasang menggunakan pip, arahan berikut akan dipasang dari roda Python jika satu tersedia untuk platform anda.

Pasang PyMuPDF  melalui pip

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

Klon PyMuPDF melalui Repositori git

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

Ia juga mungkin untuk memasangnya secara manual; muat turun fail keluaran terkini terus daripada repositori GitHub.

Mencari Teks dalam Fail PDF melalui Python

PDF telah menjadi salah satu format fail kegemaran Dunia untuk berkongsi dokumen di seluruh internet kerana ia mengekalkan semua pemformatan teks dan grafik di dalamnya. Tetapi bukan mudah untuk mencari teks di dalam fail ini berbanding dengan dokumen lain. Pustaka PyMuPDF percuma membolehkan pembangun perisian menambah keupayaan mencari teks dalam aplikasi Python mereka. Ia membolehkan mencari di mana pada halaman terdapat rentetan teks tertentu.

Cari Di Mana pada Rentetan Teks Halaman PDF Muncul melalui Python

areas = page.search_for("mupdf") 

Mengekstrak Teks dan Imej PDF melalui API Python

Pustaka PyMuPDF sumber terbuka telah menyertakan beberapa ciri penting untuk bekerja dengan teks dan imej PDF. Perpustakaan telah menyediakan pelbagai fungsi untuk mengekstrak teks dan juga imej daripada dokumen PDF. Secara lalai, ia membenarkan pengekstrakan teks biasa dengan pemisah baris. Tiada pemformatan, tiada butiran kedudukan teks, tiada imej. Selain itu, ia menyokong penjanaan senarai blok teks, menjana senarai perkataan, mencipta versi visual penuh halaman termasuk sebarang imej, dan banyak lagi.

Cara Mengekstrak Teks daripada PDF melalui 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 ) )

Sertai dan Pisahkan Dokumen PDF dalam APP Python

Menggabungkan fail PDF yang berbeza ialah ciri yang sangat berguna yang memberikan pengguna keupayaan untuk memiliki satu PDF daripada mempunyai sedozen PDF berasingan. Pustaka PyMuPDF merentas platform percuma dan sumber terbuka memberi pengaturcara perisian kuasa untuk menggabungkan fail yang berbeza atau menyalin halaman antara dokumen PDF yang berbeza dengan mudah. Ia juga memberi pengguna kuasa untuk memisahkan dokumen PDF yang besar kepada fail yang lebih kecil dengan hanya beberapa baris kod Python. Anda juga boleh memilih beberapa halaman tertentu bagi dokumen PDF dan mencipta dokumen baharu daripadanya.

Mencipta Dokumen Baharu Dari 10 Halaman Pertama & Terakhir

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

Baca & Eksport Metadata PDF ke CSV melalui Python

Pustaka PyMuPDF sumber terbuka telah menyediakan fungsi lengkap untuk mengakses dan membaca metadata fail PDF tanpa sebarang kebergantungan luaran. Ia menyokong pelbagai jenis kunci metadata seperti tarikh untuk penciptaan, pengarang, tajuk, aplikasi pencipta, sebarang subjek, kaedah penyulitan, format fail dan sebagainya. Anda juga boleh mengeksport metadata ke format CSV.

 

Eksport Metadata PDF ke CSV melalui API Python

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