一日一技:从PDF完美提取表格

在之前很长一段时间,从PDF文件中提取表格都是一个老大难的问题。无论你使用的是PyPDF2还是其他什么第三方库,提取出来的表格都会变成纯文本,难以二次利用。

但现在好消息来了,专业处理PDF的第三方库PyMuPDF升级到了1.23.0,已经支持完美提取PDF中的表格了。还可以把表格转换为Pandas的DataFrame供你分析。

PyMuPDF的使用非常简单,首先我们来安装:

1
pip install pymupdf pandas openpyxl

其中安装pandas是为了能让它转成DataFrame,安装openpyxl是为了能把结果导出为Excel。

我们来看一个测试的PDF文件,如下图所示:

其中表格在第5页,那么我们编写如下代码,读取第五页的表格:

1
2
3
4
5
6
7
import fitz

doc = fitz.open('example.pdf')
page = doc[4] # 下标从0开始,第五页对应4
tables = page.find_tables()
df = tables[0].to_pandas()
df.to_excel('table.xlsx', index=False)

读取第5页的表格,把它转换为DataFrame,然后输出为Excel文件。

生成的Excel文件如下图所示,表格中的所有信息都完整读取,连换行符都能正常保留:

当然你也可以不输出成Excel,而是直接在代码里面对DataFrame进行分析。