import fitz 是 PyMuPDF 库的导入语句,fitz 是该库的模块别名(源自其底层 C 库的名字)。PyMuPDF 是一个功能强大的 PDF 处理库,支持 PDF 的读取、编辑、渲染、文本提取、图像提取、页面操作(如旋转、分割、合并)、添加注释/水印、甚至生成 PDF 等。
✅ 常见用途示例:
- 提取 PDF 文本:
page.get_text() - 渲染页面为图像(如 PNG):
page.get_pixmap(dpi=150) - 获取页面信息:
doc[0]获取第一页,page.rect获取页面尺寸 - 插入/删除/复制页面:
doc.insert_pdf()、doc.delete_page() - 搜索文本:
page.search_for("关键词")
⚠️ 注意:
- 需先安装:
pip install PyMuPDF fitz不是官方标准库,也不是matplotlib.pyplot的别名(常有初学者混淆);- 在某些旧版本中可能需
import fitz as fitz,但通常直接import fitz即可。
import fitz # PyMuPDF
# 示例:打开 PDF 并打印页数
doc = fitz.open("example.pdf")
print(f"文档共 {doc.page_count} 页")
doc.close()
使用 fitz(PyMuPDF)提取 PDF 中所有页面的文本并保存为纯文本文件,核心步骤是:打开文档 → 遍历每页 → 调用 page.get_text("text") 提取干净文本 → 累加后写入 .txt 文件。
✅ 推荐做法(兼顾健壮性与可读性):
- 使用
"text"模式(默认)获得换行和段落结构较合理的纯文本; - 添加异常处理防止某页损坏导致中断;
- 可选:在页间插入分隔符(如
"\n{'='*50}\n第{i+1}页\n{'='*50}\n")便于调试; - 注意编码:保存为 UTF-8,确保中文等 Unicode 字符正常显示。
import fitz
def pdf_to_text(pdf_path, txt_path):
try:
doc = fitz.open(pdf_path)
full_text = ""
for i, page in enumerate(doc):
# 提取本页纯文本(自动处理换行、空格、方向)
text = page.get_text("text").strip()
if text:
full_text += f"--- 第{i+1}页 ---\n{text}\n\n"
else:
full_text += f"--- 第{i+1}页 ---\n[该页无文本或为扫描图像]\n\n"
# 写入 UTF-8 文本文件
with open(txt_path, "w", encoding="utf-8") as f:
f.write(full_text)
print(f"✅ 已成功提取 {doc.page_count} 页文本,保存至:{txt_path}")
doc.close()
except Exception as e:
print(f"❌ 提取失败:{e}")
# 使用示例
pdf_to_text("sample.pdf", "output.txt")
⚠️ 重要说明:
- 若 PDF 是扫描版(图像型 PDF),
page.get_text()将返回空字符串 —— 此时需先用 OCR(如pytesseract+fitz截图)处理,fitz本身不带 OCR 功能。 - 如需保留标题/列表/表格逻辑结构,可尝试
"blocks"或"dict"模式后自行解析,但"text"最适合通用纯文本导出。


260

被折叠的 条评论
为什么被折叠?



