Python如何从PDF中提取表格?本文带你学习如何使用 Camelot 和 tabula 库在 Python 中从 PDF 文件中提取表格,并将它们导出为多种格式,如 CSV、excel、Pandas 数据框和 HTML,并且包含一些Python从PDF中提取表格示例。你想使用 Python 编程语言从 PDF 文件中导出表格吗?你来对地方了。如何从PDF中提取表格?Camelot 是一个 Python 库和一个命令行工具,它使任何人都可以轻松提取PDF文件中的数据表,查看他们的官方文档和Github 存储库。而Tabula-py是 tabula-java 的简单 Python 包装器,它可以读取 PDF 中的表格。它使你能够将 PDF 文件转换为 CSV、TSV、JSON 甚至 Pandas DataFrame。在本教程中,你将学习如何 使用 Python 中的Camelot 和tabula-py库提取PDF 中的表格 。相关教程:如何在 Python 中从 PDF 中提取图像。首先,你需要安装Camelot 库所需的依赖项才能正常工作,然后你可以使用命令行安装这些库:
pip3 install camelot-py[
cv] tabula-py
请注意,你需要确保在你的计算机中正确安装了Tkinter和ghostscript(这是camelot 所需的依赖项)。使用 Camelot 提取 PDF 表格Python如何从PDF中提取表格?现在你已经安装了本教程的所有要求,打开一个新的 Python 文件并按照以下步骤操作:
import camelot# PDF file to extract tables from
file = "foo.pdf"
我在当前目录中有一个名为“foo.pdf”的PDF文件(在此处获取),它是一个普通的 PDF 页面,其中包含一个如下图所示的表格:
文章图片
Python从PDF中提取表格示例如下,只是一个随机表,让我们用Python提取它:
# extract all the tables in the PDF file
tables = camelot.read_pdf(file)
read_pdf()函数提取PDF文件中的所有表格,让我们打印提取的表格数量:
# number of tables extracted
print("Total tables extracted:", tables.n)
这输出:
Total tables extracted: 1
果然,它只包含一张表,将这张表打印为Pandas DataFrame:
# print the first table as Pandas DataFrame
print(tables[
0].df)
输出:
0123456
0Cycle \nNameKI \n(1/km)Distance \n(mi)Percent Fuel Savings
1Improved \nSpeedDecreased \nAccelEliminate \nStopsDecreased \nIdle
22012_23.301.35.9%9.5%29.2%17.4%
32145_10.6811.22.4%0.1%9.5%2.7%
44234_10.5958.78.5%1.3%8.5%3.3%
52032_20.1757.821.7%0.3%2.7%1.2%
64171_10.07173.958.1%1.6%2.1%0.5%
准确地说,让我们将表导出到CSV文件:
# export individually as CSV
tables[
0].to_csv("foo.csv")
如何从PDF中提取表格?CSV是不是唯一的选择,你也可以使用
to_excel()
,to_html()
,to_json()
和to_sqlite()
方法,这里有一个例子导出到Excel电子表格:# export individually as Excel (.xlsx extension)
tables[
0].to_excel("foo.xlsx")
或者,如果你想一次性导出所有表:
# or export all in a zip
tables.export("foo.csv", f="csv", compress=True)
f参数表示文件格式,在本例中为"csv"。通过将compress参数设置为True,这将创建一个ZIP文件,其中包含CSV格式的所有表。你还可以将表格导出为HTML格式:
# export to HTML
tables.export("foo.html", f="html")
或者你可以导出为其他格式,如JSON和Excel中 太。值得注意的是,Camelot 仅适用于基于文本的PDF,而不适用于扫描文档。如果你可以在PDF查看器中单击并拖动以选择表格中的文本,那么它就是基于文本的PDF,因此这将适用于论文、书籍、文档等等!使用 Tabula-py 提取 PDF 表格Python如何从PDF中提取表格?打开一个新的 Python 文件并导入tabula:
import tabula
import os
我们只是使用
read_pdf()
方法来提取 PDF 文件中的表格(同样,在此处获取示例 PDF
):# read PDF file
tables = tabula.read_pdf("1710.05006.pdf", pages="all")
我们设置
pages
为"all"
提取所有 PDF 页面中的表格,tabula.read_pdf(
) 方法返回一个 pandas 列表DataFrame
,每个列表DataFrame
对应一个表格。你还可以将 URL 传递给此方法,它会在提取表格之前自动下载 PDF。如何从PDF中提取表格?下面的代码是迭代所有提取的表格并将它们保存为 Excel 电子表格的示例:# save them in a folder
folder_name = "tables"
if not os.path.isdir(folder_name):
os.mkdir(folder_name)
# iterate over extracted tables and export as excel individually
for i, table in enumerate(tables, start=1):
table.to_excel(os.path.join(folder_name, f"table_{i}.xlsx"), index=False)
这将创建
tables
文件夹并将所有检测到的 Excel 格式的表格放入该文件夹中,尝试一下。现在,如果你想从 PDF 文件中提取所有表格并将它们转储到单个CSV文件中怎么办?下面的代码正是这样做的:# convert all tables of a PDF file into a single CSV file
# supported output_formats are "csv", "json" or "tsv"
tabula.convert_into("1710.05006.pdf", "output.csv", output_format="csv", pages="all")
Python从PDF中提取表格示例:如果你有多个 PDF 文件,并且想对所有这些文件运行上述内容,则可以使用
convert_into_by_batch()
方法:# convert all PDFs in a folder into CSV format
# `pdfs` folder should exist in the current directory
tabula.convert_into_by_batch("pdfs", output_format="csv", pages="all")
这将查看
pdfs
文件夹并为该文件夹中的每个 PDF 文件输出一个 CSV 文件。结论Python如何从PDF中提取表格?对于大文件,camelot库的性能往往优于tabula-py。但是,有时你会遇到NotImplementedError
使用camelot库的某些 PDF 文件,你可以使用tabula-py作为替代。请注意,这不会将图像字符转换为数字文本,如果你愿意,可以使用 OCR 技术将图像光学字符转换为可以在 Python 中操作的实际文本,以下教程可以为你提供很大帮助:- Python 中的光学字符识别 (OCR)
- 如何使用 Python 从 PDF 文件中的图像中提取文本
- 如何使用 Python 突出显示和编辑 PDF 文件中的文本
- 如何在 Python 中从 PDF 中提取图像
- 如何在 Python 中将 PDF 转换为图像
推荐阅读
- 如何在Python中反转视频(详细实现示例教程)
- 如何在Python中为PDF文件加水印(实现代码示例)
- 如何使用Python突出显示和编辑PDF文件中的文本()
- 如何使用Python从PDF文件中的图像中提取文本()
- win7系统硬盘安装器安装图文详细教程
- 系统之家win8家庭版下载推荐
- 安装系统 昂达主板重装系统怎样最方便
- win732位装机版安装图文详细教程
- 一键重装32位win7系统图文详细教程