【Camelot】| 从 PDF 中抽取表格
官方文档:https://camelot-py.readthedocs.io/en/master/
系统:Windows10
环境:
Python 3.8.7
PyCharm 2020.3
安装
安装依赖
Ghostscript
选择相应的系统和版本进行下载与安装
Tkinter
Python 3.2 版本之后自动安装 Tkinter。因此安装了相应的 Python 版本则无需安装 Tkinter
可以通过以下代码验证
安装Camelot
在虚拟环境中使用 pip 进行安装
[cv] 不要省略
检查是否安装成功
除了使用 pip 的方式,还可以通过 conda 和 `源码` 进行安装
conda安装
源码安装
克隆 Github 仓库
使用 pip 进行安装
Quickstart
读取 PDF
1.检测表格
打开 PyCharm,新建一个项目,输入以下代码
导入 camelot 包
读取 D 盘下的 foo.pdf 文件,返回 TableList,它是 Table 对象的列表(List)
输出结果:<TableList n=1> 表明 TableList 中只有一个 Table 对象,即表明在这个 PDF 文件中检测出了一个表格
2.访问 Table 对象
通过下标,我们可以访问 TableList 中的 Table 对象。
输出结果:<Table shape=(13, 8)> 表明第一个 Table 对象是一个 13行 × 8列 的表格
3.解析报告
通过 parsing_report()
方法,打印出解析报告
输出结果:
{
‘accuracy’: 99.02,
‘whitespace’: 12.24,
‘order’: 1,
‘page’: 1
}
当 accuracy
值越大, whitespace
值越小时,表明正确抽出表格的成功率越高
4.DataFram 格式
通过 df()
方法,将 Table 对象转换为 DataFrame 后,我们就可以通过 Pandas 来处理表格。
5.导出表格
1. 单表格导出
通过以下方法,可以将表格导出为对应的形式:
- to_csv()
- to_json()
- to_execl()
- to_html()
- to_sqlite()
执行上面这行程序,表格会以 csv
类型 存储在 项目根路径 下
2. 多表格导出
通过 export()
方法,进行多表格导出
文件类型参数可以设置为:f='json'
, f='execl'
, f='html'
, f='sqlite'
。
当有非常多的表格需要导出时,可以加上
compress=True
参数,表格将会被打包成压缩文件导出。
指定页码
默认情况下,Cmaelot 只会抽取 PDF 第一页的表格,指定页码需要使用 pages
参数
pages
参数也可以设置为一个 页码范围
读取加密 PDF
使用 password
参数来读取加密 PDF
高级使用
识别调试
调试的 plot()
方法依赖于 matplotlib ,我们需要安装依赖