使用PyMuPDF读取PDF文件时如何忽略页眉页脚内容
PyMuPDF 忽略页眉页脚提取文本解决方案
完全可以在PyMuPDF读取过程中直接实现该需求,无需转换为docx格式,能完全避免格式重排错乱的问题。核心逻辑是利用PyMuPDF的区域文本提取能力,裁剪掉页面上下固定高度的页眉页脚区域,仅提取中间正文部分的内容。
实现代码
import fitz # PyMuPDF # 自定义上下边距裁剪比例,可根据你的PDF实际页眉页脚高度调整 # 示例数值代表裁掉顶部10%、底部10%的边缘区域 TOP_MARGIN_RATIO = 0.1 BOTTOM_MARGIN_RATIO = 0.1 with fitz.open('file.pdf') as doc: text = "" for page in doc: # 获取当前页面的完整尺寸坐标,格式为(左上角x, 左上角y, 右下角x, 右下角y) page_rect = page.rect # 计算正文有效区域的坐标范围 clip_rect = fitz.Rect( page_rect.x0, page_rect.y0 + page_rect.height * TOP_MARGIN_RATIO, page_rect.x1, page_rect.y1 - page_rect.height * BOTTOM_MARGIN_RATIO ) # 仅提取裁剪区域内的文本,旧版本PyMuPDF可替换为getText(clip=clip_rect) text += page.get_text(clip=clip_rect)
参数调整说明
- 先抽取3-5页测试提取效果,根据实际页眉页脚的高度微调两个边距比例的数值即可,比如页眉高度更大就把
TOP_MARGIN_RATIO调到0.12,没有页脚可以直接把BOTTOM_MARGIN_RATIO设为0 - 如果不同页面的页眉页脚位置存在差异,可以单独对指定页码设置专属的裁剪参数,不需要全局使用统一比例
- 该裁剪逻辑同样适用于提取指定区域内的图片、表格等非文本内容
内容的提问来源于stack exchange,提问作者Jayashree Sridhar
相关产品推荐
相关产品推荐

