Python通過(guò)PyMuPDF高效處理PDF文檔的操作方法
一、PyMuPDF 核心功能
文本提取
- 提取精確文本(保留布局信息)
- 支持按頁(yè)面、區(qū)塊、單詞或行提取
- 處理加密文檔(需提供密碼)
文檔渲染
- 將頁(yè)面轉(zhuǎn)為圖像(PNG/JPEG)
- 高分辨率輸出(支持縮放和旋轉(zhuǎn))
文檔操作
- 合并/拆分 PDF
- 旋轉(zhuǎn)、刪除、插入頁(yè)面
- 添加文本、圖像、形狀(矩形/圓形等)
高級(jí)特性
- 提取元數(shù)據(jù)、書(shū)簽、鏈接、注釋
- 搜索文本(支持正則表達(dá)式)
- 處理 PDF 表單(讀取/填寫(xiě)字段)
- 安裝方法
pip install PyMuPDF
二、關(guān)鍵代碼示例
1. 打開(kāi)文檔 & 提取文本
import fitz # PyMuPDF 的導(dǎo)入名稱(chēng)
# 打開(kāi) PDF
doc = fitz.open("document.pdf")
# 提取第一頁(yè)文本
page = doc.load_page(0)
text = page.get_text()
print(text)
# 按區(qū)塊提取(保留位置信息)
blocks = page.get_text("blocks")
for block in blocks:
print(block[4]) # 文本內(nèi)容(block格式: (x0, y0, x1, y1, text))
2. 渲染頁(yè)面為圖像
# 渲染為 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
# 添加文本到新頁(yè)面
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)說(shuō)明
1. 性能優(yōu)勢(shì)
- 速度極快:比
PyPDF2/pdfplumber快 5-10 倍 - 內(nèi)存效率:流式處理大文件(>1GB)
- 精確布局:保留文本位置、字體、圖像坐標(biāo)
2. 適用場(chǎng)景
- 批量提取 PDF 文本/圖像
- 自動(dòng)化生成報(bào)告(添加水印/頁(yè)眉頁(yè)腳)
- 構(gòu)建文檔搜索引擎
- 轉(zhuǎn)換 PDF 為圖像/文本文件
- 處理掃描文檔(OCR 前預(yù)處理)
3. 注意事項(xiàng)
- 安裝依賴(lài):無(wú)需額外依賴(lài)(Windows/macOS/Linux 均有預(yù)編譯包)
- 加密文檔:使用
doc.authenticate(password)處理密碼 - 坐標(biāo)系:原點(diǎn)在左上角(與傳統(tǒng) PDF 坐標(biāo)一致)
- 商業(yè)許可:AGPL 協(xié)議(商業(yè)應(yīng)用需購(gòu)買(mǎi)許可證)
以上就是Python通過(guò)PyMuPDF高效處理PDF文檔的操作方法的詳細(xì)內(nèi)容,更多關(guān)于Python PyMuPDF處理PDF文檔的資料請(qǐng)關(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實(shí)現(xiàn)自動(dòng)化處理Word文檔
這篇文章主要為大家展示了Python如何通過(guò)代碼實(shí)現(xiàn)段落樣式復(fù)制,HTML表格轉(zhuǎn)Word表格以及動(dòng)態(tài)生成可定制化模板的功能,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-05-05
Python 使用 consul 做服務(wù)發(fā)現(xiàn)示例詳解
這篇文章主要介紹了Python 使用 consul 做服務(wù)發(fā)現(xiàn)示例詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
Python提取英文字符串首字母的多種實(shí)現(xiàn)方法
在Python中提取英文字符串的首字母是一個(gè)常見(jiàn)的需求,可以用于生成縮寫(xiě)、用戶(hù)初始化、排序等多種場(chǎng)景,本文將介紹多種實(shí)現(xiàn)方法,從簡(jiǎn)單到復(fù)雜,并附上完整案例,需要的朋友可以參考下2025-09-09
淺談django url請(qǐng)求與數(shù)據(jù)庫(kù)連接池的共享問(wèn)題
今天小編就為大家分享一篇淺談django url請(qǐng)求與數(shù)據(jù)庫(kù)連接池的共享問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
解決每次打開(kāi)pycharm直接進(jìn)入項(xiàng)目的問(wèn)題
今天小編就為大家分享一篇解決每次打開(kāi)pycharm直接進(jìn)入項(xiàng)目的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
Python3爬蟲(chóng)里關(guān)于代理的設(shè)置總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于Python3爬蟲(chóng)里關(guān)于代理的設(shè)置總結(jié),需要的朋友們可以參考下。2020-07-07
Python實(shí)現(xiàn)的從右到左字符串替換方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)的從右到左字符串替換方法,涉及Python字符串遍歷、運(yùn)算、判斷、替換等相關(guān)操作技巧,需要的朋友可以參考下2018-07-07
Python包管理利器之pip命令的安裝與使用入門(mén)指南
pip是Python的包管理工具,全稱(chēng)為"Pip?Installs?Packages",是Python生態(tài)系統(tǒng)中最重要的工具之一,下面就跟隨小編一起深入了解下pip命令的安裝與使用吧2025-04-04

