Camelot:pdf抽取表格数据的Python库

PDF诞生自Camelot项目。目的是创建一个通用的文档交流格式,以支持多种机器平台,操作系统和通信网络。其目标是使文档能够在任何显示器上可视,在任何现代打印机上可打印。
PDF基于PostScript(一种页面描述语言)。该语言解决了在任意地方显示和打印的问题。PDF包含了文档“在任意地方可视和打印”所需的组件。比如,字符、字体、图表、图片等。

一个PDF文档包含许多放置文字(或其他组件)的指令。这些指令使用以页面左下角为原点的x、y坐标放置页面元素。一个单词通过将几个字符紧凑的放置在一起来模拟。
同样的,空白通过使字符间隔更大来模拟。那怎样模拟一个表格呢?你猜对了-- 通过把字符摆放得跟一个电子表格一样来模拟。

PDF中没有一个内部的表示方式来表示一个表格。这使得表格数据很难被抽取出来做分析。不幸的是很多开放的数据是存储在pdf格式的文件中的。
但是PDF格式在设计上并没有很好的支持表格数据。

Camelot: 一个友好的PDF表格数据抽取工具

安装 Camelot

$ pip install camelot-py

使用Camelot

import camelot

tables = camelot.read_pdf("source/names.pdf")
tables.export("source/names.csv")

为什么使用Camelot

  • Camelot允许你通过调整设置项来精确控制数据的提取过程
  • 可以根据空白和精度指标来判断坏的表格,并丢弃,而不必手动检查
  • 每一个表格数据是一个panda的dataframe,从而可以很方便的集成到ETL和数据分析工作流中
  • 可以把数据导出为各种不同的格式比如 CSV、JSON、EXCEL、HTML
    为什么不是其他的PDF表格数提取库?

Camelot为数据抽取过程提供全部的控制权

许多人使用开源的库或者商业库来做数据提取工作。但是这些库要么很完美的提取出数据,要么完全失败。而不是介于这两者之间。
但是现实世界并不总是这么界限分明,包括PDF提取数据。而这导致了我们需要为每一个PDF定制专门的脚本。
我们创建了Camelot库对提取数据的过程提供了完全的控制权。假如你用默认方式无法获取数据,你可以通过调整参数来适配。

posted @ 2021-01-22 12:47  叨叨勋  阅读(370)  评论(0编辑  收藏  举报