Python通過PyMuPDF高效處理PDF文檔的操作方法
更新時間:2025年11月18日 09:57:39 作者:Asia-Lee
PyMuPDF(又稱 fitz)是一個功能強(qiáng)大的Python庫,用于處理PDF、XPS、EPUB、MOBI等文檔格式,它基于MuPDF(輕量級 PDF 渲染引擎),提供高效的文本提取、渲染、編輯和文檔分析功能,所以本文給大家介紹了Python通過PyMuPDF高效處理PDF文檔的操作方法
一、PyMuPDF 核心功能
文本提取
- 提取精確文本(保留布局信息)
- 支持按頁面、區(qū)塊、單詞或行提取
- 處理加密文檔(需提供密碼)
文檔渲染
- 將頁面轉(zhuǎn)為圖像(PNG/JPEG)
- 高分辨率輸出(支持縮放和旋轉(zhuǎn))
文檔操作
- 合并/拆分 PDF
- 旋轉(zhuǎn)、刪除、插入頁面
- 添加文本、圖像、形狀(矩形/圓形等)
高級特性
- 提取元數(shù)據(jù)、書簽、鏈接、注釋
- 搜索文本(支持正則表達(dá)式)
- 處理 PDF 表單(讀取/填寫字段)
- 安裝方法
pip install PyMuPDF
二、關(guān)鍵代碼示例
1. 打開文檔 & 提取文本
import fitz # PyMuPDF 的導(dǎo)入名稱
# 打開 PDF
doc = fitz.open("document.pdf")
# 提取第一頁文本
page = doc.load_page(0)
text = page.get_text()
print(text)
# 按區(qū)塊提?。ūA粑恢眯畔ⅲ?
blocks = page.get_text("blocks")
for block in blocks:
print(block[4]) # 文本內(nèi)容(block格式: (x0, y0, x1, y1, text))
2. 渲染頁面為圖像
# 渲染為 PNG
pix = page.get_pixmap(matrix=fitz.Matrix(2, 2)) # 縮放2倍
pix.save("page0.png")
# 指定 DPI (300 dpi)
dpi = 300
mat = fitz.Matrix(dpi / 72, dpi / 72) # 72是默認(rèn)DPI
pix = page.get_pixmap(matrix=mat)
3. 編輯 PDF
# 添加文本到新頁面
new_page = doc.new_page(width=400, height=200)
new_page.insert_text((100, 50), "Hello PyMuPDF!", fontsize=24)
# 繪制紅色矩形
rect = fitz.Rect(50, 70, 150, 120)
new_page.draw_rect(rect, color=(1, 0, 0), width=2)
# 保存修改
doc.save("modified.pdf")
4. 合并 PDF
doc1 = fitz.open("doc1.pdf")
doc2 = fitz.open("doc2.pdf")
# 將 doc2 插入到 doc1 末尾
doc1.insert_pdf(doc2)
doc1.save("merged.pdf")
5. 提取圖像
for img_index, img in enumerate(page.get_images(full=True)):
xref = img[0] # 圖像引用 ID
base_image = doc.extract_image(xref)
image_bytes = base_image["image"]
with open(f"image_{img_index}.png", "wb") as f:
f.write(image_bytes)
6. 搜索文本
# 搜索所有 "important" 出現(xiàn)的位置
areas = page.search_for("important")
for rect in areas:
page.add_highlight_annot(rect) # 添加高亮注釋
三、相關(guān)說明
1. 性能優(yōu)勢
- 速度極快:比
PyPDF2/pdfplumber快 5-10 倍 - 內(nèi)存效率:流式處理大文件(>1GB)
- 精確布局:保留文本位置、字體、圖像坐標(biāo)
2. 適用場景
- 批量提取 PDF 文本/圖像
- 自動化生成報告(添加水印/頁眉頁腳)
- 構(gòu)建文檔搜索引擎
- 轉(zhuǎn)換 PDF 為圖像/文本文件
- 處理掃描文檔(OCR 前預(yù)處理)
3. 注意事項
- 安裝依賴:無需額外依賴(Windows/macOS/Linux 均有預(yù)編譯包)
- 加密文檔:使用
doc.authenticate(password)處理密碼 - 坐標(biāo)系:原點(diǎn)在左上角(與傳統(tǒng) PDF 坐標(biāo)一致)
- 商業(yè)許可:AGPL 協(xié)議(商業(yè)應(yīng)用需購買許可證)
以上就是Python通過PyMuPDF高效處理PDF文檔的操作方法的詳細(xì)內(nèi)容,更多關(guān)于Python PyMuPDF處理PDF文檔的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解python中的三種命令行模塊(sys.argv,argparse,click)
這篇文章主要介紹了python中的三種命令行模塊(sys.argv,argparse,click)的相關(guān)資料,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-12-12
Python使用python-docx實現(xiàn)自動化處理Word文檔
這篇文章主要為大家展示了Python如何通過代碼實現(xiàn)段落樣式復(fù)制,HTML表格轉(zhuǎn)Word表格以及動態(tài)生成可定制化模板的功能,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-05-05
Python 使用 consul 做服務(wù)發(fā)現(xiàn)示例詳解
這篇文章主要介紹了Python 使用 consul 做服務(wù)發(fā)現(xiàn)示例詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03
淺談django url請求與數(shù)據(jù)庫連接池的共享問題
今天小編就為大家分享一篇淺談django url請求與數(shù)據(jù)庫連接池的共享問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
Python3爬蟲里關(guān)于代理的設(shè)置總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于Python3爬蟲里關(guān)于代理的設(shè)置總結(jié),需要的朋友們可以參考下。2020-07-07

