文章目录
- import fitz # PyMuPDF 的导入名称 # 打开 PDF doc = fitz.open(“document.pdf”) # 提取第一页文本 page = doc.load_page(0) text = page.get_text() print(text) # 按区块提取(保留位置信息) blocks = page.get_text(“blocks”) for block in blocks: print(block[4]) # 文本内容(block格式: (x0, y0, x1, y1, text))
- # 渲染为 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是默认DPI pix = page.get_pixmap(matrix=mat)
- # 添加文本到新页面 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”)
- doc1 = fitz.open(“doc1.pdf”) doc2 = fitz.open(“doc2.pdf”) # 将 doc2 插入到 doc1 末尾 doc1.insert_pdf(doc2) doc1.save(“merged.pdf”)
- 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)
- # 搜索所有 “important” 出现的位置 areas = page.search_for(“important”) for rect in areas: page.add_highlight_annot(rect) # 添加高亮注释
- 速度极快:比 PyPDF2/pdfplumber 快 5-10 倍 内存效率:流式处理大文件(>1GB) 精确布局:保留文本位置、字体、图像坐标
- 批量提取 PDF 文本/图像 自动化生成报告(添加水印/页眉页脚) 构建文档搜索引擎 转换 PDF 为图像/文本文件 处理扫描文档(OCR 前预处理)
- 安装依赖:无需额外依赖(Windows/macOS/Linux 均有预编译包) 加密文档:使用 doc.authenticate(password) 处理密码 坐标系:原点在左上角(与传统 PDF 坐标一致) 商业许可:AGPL 协议(商业应用需购买许可证) 以上就是Python通过PyMuPDF高效处理PDF文档的操作方法的详细内容,更多关于Python PyMuPDF处理PDF文档的资料请关注风君子博客其它相关文章! 您可能感兴趣的文章: Python使用PyMuPDF(fitz)处理PDF文档的操作指南 Python使用PymuPDF处理PDF文件的操作详解 Python利用PyMuPDF实现PDF文件处理
目录
- 一、PyMuPDF 核心功能
- 二、关键代码示例
- 1. 打开文档 & 提取文本
- 2. 渲染页面为图像
- 3. 编辑 PDF
- 4. 合并 PDF
- 5. 提取图像
- 6. 搜索文本
- 三、相关说明
- 1. 性能优势
- 2. 适用场景
- 3. 注意事项
文本提取
- 提取精确文本(保留布局信息)
- 支持按页面、区块、单词或行提取
- 处理加密文档(需提供密码)
文档渲染
- 将页面转为图像(PNG/JPEG)
- 高分辨率输出(支持缩放和旋转)
文档操作
- 合并/拆分 PDF
- 旋转、删除、插入页面
- 添加文本、图像、形状(矩形/圆形等)
高级特性
- 提取元数据、书签、链接、注释
- 搜索文本(支持正则表达式)
- 处理 PDF 表单(读取/填写字段)
- 安装方法
pip install PyMuPDF
import fitz # PyMuPDF 的导入名称
# 打开 PDF
doc = fitz.open("document.pdf")
# 提取第一页文本
page = doc.load_page(0)
text = page.get_text()
print(text)
# 按区块提取(保留位置信息)
blocks = page.get_text("blocks")
for block in blocks:
print(block[4]) # 文本内容(block格式: (x0, y0, x1, y1, text))
# 渲染为 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是默认DPI
pix = page.get_pixmap(matrix=mat)
# 添加文本到新页面
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")
doc1 = fitz.open("doc1.pdf")
doc2 = fitz.open("doc2.pdf")
# 将 doc2 插入到 doc1 末尾
doc1.insert_pdf(doc2)
doc1.save("merged.pdf")
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)
# 搜索所有 "important" 出现的位置
areas = page.search_for("important")
for rect in areas:
page.add_highlight_annot(rect) # 添加高亮注释
- 速度极快:比
PyPDF2/pdfplumber 快 5-10 倍
- 内存效率:流式处理大文件(>1GB)
- 精确布局:保留文本位置、字体、图像坐标
PyPDF2/pdfplumber 快 5-10 倍
- 批量提取 PDF 文本/图像
- 自动化生成报告(添加水印/页眉页脚)
- 构建文档搜索引擎
- 转换 PDF 为图像/文本文件
- 处理扫描文档(OCR 前预处理)
- 安装依赖:无需额外依赖(Windows/macOS/Linux 均有预编译包)
- 加密文档:使用
doc.authenticate(password) 处理密码
- 坐标系:原点在左上角(与传统 PDF 坐标一致)
- 商业许可:AGPL 协议(商业应用需购买许可证)
doc.authenticate(password) 处理密码以上就是Python通过PyMuPDF高效处理PDF文档的操作方法的详细内容,更多关于Python PyMuPDF处理PDF文档的资料请关注风君子博客其它相关文章!
您可能感兴趣的文章:
- Python使用PyMuPDF(fitz)处理PDF文档的操作指南
- Python使用PymuPDF处理PDF文件的操作详解
- Python利用PyMuPDF实现PDF文件处理