如何实现固定格式PDF表格数据自动提取并批量录入指定Excel表格
固定格式PDF表格批量提取到Excel的落地方案
固定格式线框表格类PDF的批量提取,用针对结构化表格优化的提取工具即可实现全自动化,你之前尝试的通用文本/表单提取工具没有针对表格边界做解析,所以很难匹配到固定单元格的对应关系,以下是可直接落地的实现步骤:
1. 环境准备
仅需安装2个Python依赖库,无需额外付费工具:
- 表格提取工具:
camelot-py[cv],专门针对有线框的规整表格做解析,提取结果直接按单元格结构化输出,不会出现普通文本提取的内容错位问题 - Excel操作工具:
openpyxl,支持精准写入Excel指定单元格,完美适配你固定表头的需求
安装命令直接运行即可:
pip install camelot-py[cv] openpyxl
额外依赖:camelot需要调用ghostscript处理表格线,Windows系统直接搜索ghostscript官方安装包安装后添加到系统环境变量即可,Mac/Linux可直接用包管理器一键安装。
2. 单份PDF提取测试(一次配置永久复用)
先拿1份PDF做测试,确认提取参数,所有同格式PDF都可以复用同一套参数:
import camelot # lattice模式专门适配有线框的表格,pages参数填你要提取的表格所在页码 tables = camelot.read_pdf("测试用纳税申报表.pdf", pages="1", flavor="lattice") # 输出提取到的表格内容,确认每个数值对应的行/列位置和实际PDF一致 print(tables[0].df)
如果出现提取范围不对的问题,可以用Adobe Acrobat打开PDF,用测量工具拿到目标表格的四个角坐标,添加table_areas参数精准框定提取范围,示例:
tables = camelot.read_pdf("测试用纳税申报表.pdf", pages="1", flavor="lattice", table_areas=["120,720,550,220"]) # 括号内四个值对应表格左上角x、左上角y、右下角x、右下角y,按你实际测量值替换即可
3. 批量处理全量PDF写入Excel
提前把你的固定表头Excel存为模板文件,配置好PDF提取字段和Excel单元格的对应关系后,即可一键跑全量数据:
import os from openpyxl import load_workbook # 加载固定表头的Excel模板 wb = load_workbook("纳税数据模板.xlsx") ws = wb.active # 存放所有PDF的文件夹路径 pdf_dir = "月度申报表文件夹路径" # 遍历所有PDF文件 for row_offset, pdf_name in enumerate(os.listdir(pdf_dir)): if not pdf_name.endswith(".pdf"): continue # 提取表格,参数用之前测试好的固定值即可 tables = camelot.read_pdf(os.path.join(pdf_dir, pdf_name), pages="1", flavor="lattice", table_areas=["120,720,550,220"]) table_df = tables[0].df # 按你的需求对应写入指定单元格,示例:提取PDF表格第2行第3列的应纳税额,写入Excel第row_offset+2行第4列 ws.cell(row=row_offset+2, column=4, value=table_df.iloc[1,2]) # 其他需要提取的字段都按上述逻辑配置对应关系即可,一次配置所有PDF通用 # 保存最终结果 wb.save("合并后的全量纳税数据.xlsx")
特殊情况处理
如果你的PDF是扫描件而非可编辑文本版本,只需额外加一步OCR预处理,安装pytesseract和tesseractOCR引擎,先把扫描页转成可识别文本再按上述逻辑提取即可,普通可导出的电子申报表无需此步骤。
内容的提问来源于stack exchange,提问作者War_Pig
相关产品推荐
相关产品推荐

