表格专用抽取工具
这类工具专注 PDF 表格提取:有线框模式先检测线条再切分单元格,适合规整的报表;无线框模式按空白与文本分布推断列位置,适合排版宽松的文档。抽取结果可直接导出成表格文件,适合把成册报表转成结构化数据再入知识库。
基本信息
| 有线框模式 | 先检测线条再切分单元格 |
|---|---|
| 无线框模式 | 按空白与文本分布推断列 |
| 系统依赖 | 需要安装 Ghostscript |
| 输出 | 可直接导出 CSV、Excel 或 JSON |
| 适用 | 报表、财务与统计类 PDF |
提取与导出
提取与导出
import camelot
tables = camelot.read_pdf("report.pdf", pages="1-5", flavor="lattice")
print(len(tables), tables[0].shape)
print(tables[0].df.head())
tables.export("out.csv", f="csv")使用要点
- 先按页抽查两种模式的结果,再决定整册用哪一种
- 记录每页使用的模式,便于异常页复查
- 抽取后核对行列数,缺列通常比缺行更隐蔽
- 跨页表格要按表头对齐后再拼接,否则数据行会错位
- 导出文本时保留表头,入库后检索才能理解每列含义
两种模式对照
| 模式 | 依据 | 典型适用 |
|---|---|---|
| 有线框 | 检测线条与交点 | 带网格线的报表 |
| 无线框 | 空白间隔与文本位置 | 排版宽松、无竖线的表格 |
| 混合文档 | 按页切换模式 | 同一文档里两种表格并存 |
常见问题
- 结果为空:多半是该页没有可检测的线条或文本密度过低
- 列数异常:表头存在合并单元格时列切分容易错位
- 数值错位:数字与单位被分到不同列,需要在后处理里合并
- 跨页断裂:表头只在第一页出现,后续页需要补表头
- 依赖缺失:容器环境未装 Ghostscript 时直接报错
同一文档不同页可能混用有线与无线表格,建议两种模式都跑并对比,按页选择而不是整册一刀切。
结果质量怎么判断
表格抽取的质量不高体现在细节上:列数比预期少一列、数字与单位被拆到相邻列、合并单元格导致的空值、以及跨页后表头缺失。判断方法是抽三到五页人工逐格核对,把错误按类型归类;若错列集中出现在带合并表头的表格上,说明需要针对这类模板单独调参,而不是换工具。
入库前的处理
- 补齐空值并标注推断来源,避免后续统计把空值当零
- 把表头与数据行分开存储,检索时用表头解释每个数值的含义
- 为表格切片生成一句话描述,纯表格文本的语义向量质量通常较差
- 保留原始页码与表格序号,回答引用时能指明是第几张表