固定格式变页数PDF提取应付赠款机构信息遇阻求解决方案
可行提取方案建议
1. 精准定位PDF结构区域
既然PDF格式固定,先通过PyMuPDF解析页面的文本块坐标:
- 使用
doc.get_page_text("blocks")获取每一页的文本块及对应坐标信息,分析机构详情所在的固定矩形区域(比如每一页的特定y轴范围) - 遍历页面时直接过滤出该区域内的文本块,避免全局文本干扰,再做初步清洗
2. 基于关键词的规则匹配
结合你的触发关键词列表,编写针对性正则规则:
- 若详情是“关键词+内容”的格式(如“机构名称:XX基金会”),用正则
r'机构名称:(.*?)\n'提取对应内容 - 若为表格形式,给Tabula添加
lattice=True参数强制按表格解析,同时手动指定目标列的位置(可先用Tabula GUI工具确认表格坐标)
3. 自定义实体识别优化
如果用SpaCy/NLTK效果不佳,训练专属实体模型:
- 标注一批你的PDF中的机构名称、赠款金额等实体样本
- 用SpaCy的
spacy train命令训练自定义NER模型,适配你的PDF文本格式,提升识别准确率
4. 工具组合与多页处理
- 扫描版PDF先通过
pytesseract做OCR识别,再用上述方法提取文本 - 编写循环逻辑,对每一页重复执行相同的提取规则,最后将结果合并为JSON/CSV等结构化格式
测试代码调整示例
针对PyMuPDF的区域提取优化代码:
import fitz doc = fitz.open("target.pdf") # 替换为实际目标区域的坐标范围 target_y_start = 150 target_y_end = 600 for page in doc: blocks = page.get_text("blocks") for block in blocks: x0, y0, x1, y1, text, _, _ = block if target_y_start <= y0 <= target_y_end: print(text.strip())
内容的提问来源于stack exchange,提问作者Umesh Kumar
相关产品推荐
相关产品推荐

