python camelot pdf表格提取

摘要

camelot 是一个通过图像分割提取表格的函数库,有强大的pdf表格提取功能,擅长于提取不规则表格,非结构性表格(例如通过颜色进行表格分割)有着显著的效果

正文

解决安装问题

安装camelot 后,camelot.read_pdf(path)提示没有创建read_pdf

  • 原因是你错误的安装camelot方式
# 首先你需要卸载你的camelot pip uninstall camelot  或者 pip uninstall camelot.py
# 第二步你需要拉下来github包
git clone https://www.github.com/camelot-dev/camelot
# 进入到文件夹
cd camelot
# 安装模块
pip install ".[cv]" 
# 可以加上镜像会快一些  -i https://pypi.tuna.tsinghua.edu.cn/simple 
  • 安装后发现read_pdf没有报错,但是提示 Ghostscript 没有被安装 , 这是因为连带安装中缺少这个
# 到这个网站下载,正常安装即可
https://www.ghostscript.com/download/gsdnld.html

关于camelot 的用法问题

# 这是官方的API文档介绍, 写的很详细可以仔细看看
https://camelot-py.readthedocs.io/en/master/

选择指定页码进行表格提取

# 注意此处的页码必须是字符串格式
# 返回的结果是一个列表,每一个索引位置代表了提取到的一个表格
table_list = camelot.read_pdf(path, pages=str('页码'))
df = table_list[0].df  
# 将对应索引的表格输出Dataframe格式
# 这也是camelot 最好用的地方可以和pandas 无缝衔接

调参

如果发现表格如下

在这里插入图片描述

# 普通的代码
tables_list = camelot.read_pdf(r'path',pages=str(page_num))
df1 = tables_list[0].df
# 并不能展示这一个行,因为行尺寸太小了
# 我们进行如下修改
tables_list = camelot.read_pdf(r'path',line_scale=40, pages=str(page_num))
# 添加了line_scale之后我们修改了最小行的指定 这样可以读取到这个了

camlot 有着灵活的参数设定

如果你发现你的表格是这样的


通过使用普通的read_pdf 是不可以的,提取出来表格格式是错误的
在这里插入图片描述
可以看出来,每一行的提取都是错误的,表结构都被打乱了,于是我们尝试第一次调参

tables_list = camelot.read_pdf(path, flavor='stream', pages=str(table_page))

在这里插入图片描述

# 如果你发现表格的过于长,但是camelot提取没有到表格的最下面 添加edge_tol=500
tables_list = camelot.read_pdf(path, flavor='stream', edge_tol=500,pages=str(table_page))

# 如果你发现表格行与行之间分割不明显,或者发生重叠的问题  添加row_tol=10
tables_list = camelot.read_pdf(path, flavor='stream', edge_tol=500, row_tol=10, pages=str(table_page))

提示报错某一个文件夹下目录不是空,这是因为在你调用read_pdf 中的参数 flavor='stream’后递归打开多个文件夹,当你打开一个pdf后它会创建一个临时的文件夹,然后结束后删除这个文件夹,因为调用了,shutil.rmtree 函数,这个函数就是会报错

  • 解决方法
  • 打开你报错的代码处,在shutil.rmtree(self.name) 后面加上ignore_errors=True
    在这里插入图片描述
  • 然后你手动打开报错的目录表, 删除对应报错的文件夹,再次运行就行了
  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值