返回

从 PDF 中批量提取表格数据并导出到 Excel

见解分享

用 Python 批量从 PDF 中提取表格数据

摘要

PDF(便携式文档格式)是一种广泛使用的文件格式,但从中提取数据可能是一项繁琐的任务。本博客将介绍如何使用 Python 语言批量提取 PDF 表格数据,并将其保存到 Excel 文件中。

准备工作

在开始之前,你需要安装以下软件:

  • Python 3.6 或更高版本
  • Tabula-Py 库
  • Pandas 库

可以通过以下命令安装这些库:

pip install tabula-py
pip install pandas

代码实现

导入库

import tabula
import pandas as pd

遍历 PDF 文件

使用 os.listdir() 函数获取当前目录中的所有 PDF 文件:

import os

pdf_files = os.listdir('.')

for pdf_file in pdf_files:
    if pdf_file.endswith('.pdf'):
        # 提取数据
        data = tabula.read_pdf(pdf_file, pages='all')

        # 创建 DataFrame
        df = pd.DataFrame()
        for page in data:
            df = pd.concat([df, page], ignore_index=True)

保存到 Excel 文件

使用 Pandas 的 to_excel() 方法将 DataFrame 导出到 Excel 文件:

df.to_excel('extracted_data.xlsx', index=False)

完整代码

将以上代码片段组合成一个完整的 Python 脚本:

import os
import tabula
import pandas as pd

pdf_files = os.listdir('.')

for pdf_file in pdf_files:
    if pdf_file.endswith('.pdf'):
        data = tabula.read_pdf(pdf_file, pages='all')

        df = pd.DataFrame()
        for page in data:
            df = pd.concat([df, page], ignore_index=True)

        df.to_excel('extracted_data.xlsx', index=False)

用法

将此脚本保存在一个名为 extract_pdf_tables.py 的文件中,并在命令提示符下运行以下命令:

python extract_pdf_tables.py

脚本将遍历当前目录中的所有 PDF 文件,提取表格数据并将其保存到名为 extracted_data.xlsx 的 Excel 文件中。

常见问题解答

Q1:我可以在没有 Tabula-Py 库的情况下使用其他库来提取表格数据吗?

A1: 是的,你可以使用其他库,例如 camelotpdfplumber

Q2:我如何处理具有多个页面的 PDF 文件?

A2: 你可以使用 pages='all' 参数来提取所有页面的数据。

Q3:如何处理嵌套表格?

A3: Tabula-Py 库目前不支持嵌套表格的提取。

Q4:提取的数据在 Excel 文件中的格式如何?

A4: 数据将以表格形式保存,其中每行代表 PDF 表格中的一行,每列代表一列。

Q5:我可以使用此方法提取非结构化表格数据吗?

A5: 不,此方法仅适用于结构化表格数据。