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
相关产品推荐
相关产品推荐

