关于Python使用Camelot库优化提取PDF三线表的技巧,解决识别的表字段名错位,过多的空白单元的问题

关于Python使用Camelot库优化提取PDF三线表的技巧:解决识别的表字段名错位,过多的空白单元的问题

参考文章:camelot官方文档

依赖库

camelot

问题描述

测试文件

自行准备的含有三线表的PDF文件

原始代码
tables = camelot.read_pdf(path, pages=str(pageID), flavor="stream", table_areas=[area])
原始提取效果

1: 内存中提取时出现的字段错位

在这里插入图片描述

2: 输出文件中出现的过多空白单元

在这里插入图片描述

原因分析

针对表字段错位:

可能是由于Camelot库在进行扫描过程中,对 单行高度的检测阈值 设置过低。查阅源码后其阈值默认为2,可以进行修改为10。

针对空白单元:

可能是由于Camelot库在扫描的过程中, 对 单行高度的检测阈值 设置过高,导致获得了多余的 \n 换行符,使得换行符之后的文本内容没有写入输出文件。

内存中由于单行高度的检测阈值设置过高,所出现的情况:

在这里插入图片描述

解决方案

针对表字段错位

单行高度的检测阈值 设置 合适的值,官方推荐为 10 ,(默认为2),当阈值设置超过10后,会导致多行并为一行的情况发生。
即,设置 row_tol属性, 例:row_tol=10

针对空白单元

对提取出的文本信息,将其中的“\n”字符过滤掉。
即,设置strip_text属性, 例: strip_text="\n"

最终实现代码
tables = camelot.read_pdf(path, pages=str(pageID), flavor="stream", table_areas=[area], row_tol=10,
                                  strip_text="\n")
最终效果

优化后识别的Table1 (内存中表示)

在这里插入图片描述

优化后识别的Table1 (输出文件中表示)

在这里插入图片描述

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值