tabula-py:从 PDF 提取表格的 Python 工具

处理 PDF 里的表格一直是件头疼的事。复制粘贴格式全乱,手动整理又太费时间。tabula-py 就是专门解决这个问题的,它是一个 Python 库,能把 PDF 中的表格直接提取成 pandas DataFrame,也能导出为 CSV、TSV 或 JSON。

这个项目在 GitHub 上获得了 2,314 个 Star,作者是 chezou。它本质上是对 tabula-java 的 Python 封装,把 Java 的 PDF 解析能力用 Python 接口暴露出来,让 Python 开发者不需要关心底层实现。

正文顶部截图

核心功能:读 PDF,出表格

tabula-py 的 API 设计很简洁。最基础的用法是 read_pdf():

import tabula
dfs = tabula.read_pdf("test.pdf", pages='all')

返回的是一个 DataFrame 列表,每页表格对应一个 DataFrame。pages 参数可以控制提取范围,‘all’ 表示全部页面,也可以传具体页码。

它也支持直接读取远程 PDF:

dfs = tabula.read_pdf("https://example.com/file.pdf")

除了把表格读进内存,tabula-py 还支持直接写入文件:

tabula.convert_into("test.pdf", "output.csv", output_format="csv", pages='all')

输出格式支持 CSV、TSV、JSON。对于批量处理场景,可以用 convert_into_by_batch() 一次性处理整个目录的 PDF。

README区域截图

安装和环境要求

使用 tabula-py 需要满足两个前提条件:Java 8 以上的运行环境,以及 Python 3.9+。Java 的 PATH 需要配置正确,否则调用时会报错。

安装命令很简单:

pip install tabula-py

如果想获得更快的执行速度,可以安装带 jpype 依赖的版本:

pip install tabula-py[jpype]

官方确认支持 macOS 和 Ubuntu,也有用户反馈能在 Windows 10 上运行。详细的 Windows 安装指南可以在官方文档里找到。

适用场景和局限性

tabula-py 最适合处理结构清晰的 PDF 表格,比如财务报表、数据手册、学术论文里的统计表格。这类文档的表格边界清晰,提取成功率比较高。

但它不是万能工具。扫描版 PDF、多栏混排的复杂文档,提取效果会明显下降。这类文件通常需要先经过 OCR 处理,再用其他方式解析。另外,如果 PDF 里的表格嵌套在复杂版式中,也可能需要手动调整参数。

文档和社区

项目的文档维护得比较完整,除了 API 说明,还有一个专门的 FAQ 页面,常见安装和运行问题都能在里面找到答案。官方提供了一个 Google Colab 示例笔记本,可以直接在线运行,不需要本地配置环境。

对于经常要从 PDF 里提取数据的分析师、研究人员或者数据工程师来说,tabula-py 是个实用的选择。它把底层的 Java 解析能力包装成 Python 开发者熟悉的接口,几行代码就能完成原本繁琐的表格提取工作。

这个项目已经持续维护了一段时间,社区里也有不少贡献者参与。如果你工作中经常和 PDF 表格打交道,可以考虑把它加入工具箱。

这个项目已经持续维护了一段时间,社区里也有不少贡献者参与。如果你工作中经常和 PDF 表格打交道,可以考虑把它加入工具箱。

更多推荐