当前位置: 首页 > 后端技术 > Python

Python超强PDF表格提取器——Camelot

时间:2023-03-25 23:01:07 Python

如果你有批量提取PDF表格的需求,那么这篇文章就是你的福音。Python第三方模块Camelot可以准确识别PDF中的表格信息,将其提取为pandas数据结构,并导出为多种格式:JSON、Excel、HTML和Sqlite。下面我来介绍一下这个模块的使用方法:1.在开始之前,你需要确保你的电脑上已经成功安装了Python和pip。如果使用Python进行数据分析,可以直接安装Anaconda,Anaconda内置了Python和pip。另外,推荐大家使用VSCode编辑器,它有很多优点。请选择以下任意一种方式输入命令安装依赖:Windows环境打开Cmd(开始-运行-CMD)。MacOS环境打开Terminal(command+空格进入Terminal)。如果你使用的是VSCode编辑器或者Pycharm,可以直接使用界面下方的Terminal.pipinstallcamelot-py[cv]2.最简单的使用方法如下:importcamelot#1.readpdftables=camelot.read_pdf('foo.pdf',flavor='stream')#2.导出pdf中的所有表格都是csv文件tables.export('foo.csv',f='csv')#json,excel,html,sqlite第一行导入camelot模块第二行以流方式读取当前目录下的foo.pdf文件第三行,将所有表格数据导出为foo.csv文件保存在当前文件夹下,很简单,注意read_pdf的flavor参数是可选的,如果你不带这个参数,请注意你需要安装ghostscript驱动,因为它使用ghostscript来使用latticemodeb你默认。3.进阶3.1处理背景线:可以看到背景中隐藏了很多表格线。默认不支持这种表。这时候我们就需要让程序自动识别这样一张表:tables=camelot.read_pdf('background_lines.pdf',process_background=True)添加process_background=True参数即可。3.2指定表格区域在某些情况下,无法正确识别PDF中的表格。这时候手动设置左上角和右下角的边界可能会有效:tables=camelot.read_pdf('table_areas.pdf',flavor='stream',table_areas=['316,499,566,337'])wheretable_areas接受格式为x1,y1,x2,y2的字符串,其中(x1,y1)->左上角,(x2,y2)->右下角。在PDF坐标空间中,以页面左下角为原点,坐标为(0,0)。这是我们文章的结尾。如果喜欢今天的Python实战教程,可以关注公众号Python编程学习圈,了解更多编程技巧!