You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用PyMuPDF提取PDF内容按页码段落写入CSV问题咨询

实现方案

核心逻辑

  • 逐页提取PDF文本,按\n拆分得到段落列表
  • 过滤无效空段落,可选剔除页尾自带的页码
  • 用Python标准库csv写入文件,自动处理特殊字符避免CSV格式错误

完整可运行代码

import fitz
import csv

# 配置路径
pdf_path = '/file/path.pdf'
output_csv = 'pdf_extract_result.csv'
# 表头配置
header = ['page number', 'paragraph']

with open(output_csv, 'w', encoding='utf-8', newline='') as f:
    writer = csv.writer(f)
    # 写入表头
    writer.writerow(header)
    
    doc = fitz.open(pdf_path)
    # 遍历每一页,PyMuPDF的页码从0开始,+1得到实际阅读页码
    for page_idx, page in enumerate(doc):
        actual_page_num = page_idx + 1
        # 提取整页文本,修正原有代码的参数错误
        page_text = page.get_text("text")
        # 按换行符拆分段落,同时过滤空行避免无效内容写入
        paragraphs = [p.strip() for p in page_text.split('\n') if p.strip()]
        # 确认每页最后一段是不需要的页码时,取消下面一行的注释
        # paragraphs.pop()
        
        # 逐行写入CSV
        for para in paragraphs:
            writer.writerow([actual_page_num, para])

注意事项

  • PyMuPDF旧版本也可以用getText("text")写法,注意参数必须是字符串类型的"text"
  • 若用Excel打开输出CSV出现乱码,可将encoding='utf-8'修改为encoding='utf-8-sig'
  • 代码默认去除了段落前后的空白字符,若需要保留原始格式,可删除列表推导式中的.strip()

内容的提问来源于stack exchange,提问作者Readazoid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:45:07