`import fitz` 是 PyMuPDF 库的导入语句,`fitz` 是该库的模块别名(源自其底层 C 库的名字)

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" 最适合通用纯文本导出。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bol5261

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值