侧边栏壁纸
博主头像
Tool博主等级

行动起来,活在当下

  • 累计撰写 27 篇文章
  • 累计创建 3 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

源码7.一键提取PDF中的表格到Excel

Jimmie
2024-01-28 / 0 评论 / 0 点赞 / 23 阅读 / 5103 字
温馨提示:
收藏保存网址不迷路:www.jimmie.top,若内容或图片失效,请反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

在日常工作中,我们经常会遇到需要从PDF文档中提取表格数据并保存到Excel文件中的需求。手动提取不仅效率低下,还很容易出错。因此,这篇技术博客将详细讲解如何使用Python脚本自动完成这一任务。让我们开始吧!


🛠️ 准备工作

在编写脚本前,我们需要确保已经安装了处理PDF和Excel文件所需的库。

  • pdfplumber: 用于从PDF文件中提取文本和表格数据。

  • openpyxl: 用于读取和写入Excel文件。

如果尚未安装,可以通过以下命令进行安装:

pip install pdfplumber openpyxl

📄 导入所需的库

import os  # 用于文件和目录操作
import pdfplumber  # 用于从PDF文件中提取数据
from openpyxl import Workbook  # 用于创建和操作Excel文件

这里我们导入了三个库:

  • os:用于处理文件和目录路径。

  • pdfplumber:用于打开PDF文件并提取数据。

  • Workbook:来自openpyxl库,用于创建新的Excel工作簿。


🚀 定义提取函数

def extract_tables_from_pdf(pdf_path, keyword, output_folder):

我们定义了一个函数extract_tables_from_pdf,它接受三个参数:pdf_path PDF文件路径,keyword 搜索的关键字,output_folder 输出Excel文件的文件夹路径。

打开PDF文件

with pdfplumber.open(pdf_path) as pdf:

使用pdfplumber.open函数以上下文管理器的方式打开PDF文件,这样可以确保文件在使用后正确关闭。

搜索关键字

pages_wanted = []
for index, page in enumerate(pdf.pages):
    if keyword in page.extract_text():
        pages_wanted.extend([index, index + 1])
        break

我们遍历PDF的每一页,使用extract_text方法提取文本并检查是否包含关键字。如果找到关键字,则将当前页和下一页的索引保存在pages_wanted列表中,并跳出循环。

创建Excel工作簿

wb = Workbook()
wb.remove(wb.active)

创建一个新的Excel工作簿,并移除默认创建的工作表。

提取表格并保存到Excel

for i in pages_wanted:
    page = pdf.pages[i]
    tables = page.extract_tables()
    for table in tables:
        ws = wb.create_sheet(f"Sheet{i+1}")
        for row in table:
            ws.append(row)

对于每个包含关键字的页面,我们提取其中的表格数据,并为每个表格创建一个新的工作表(Sheet),将表格数据逐行添加到工作表中。

保存Excel文件

filename = os.path.splitext(os.path.basename(pdf_path))[0]
output_path = os.path.join(output_folder, f"{filename}.xlsx")
wb.save(output_path)
print(f"Saved {output_path}")

获取PDF文件的名称(不包括扩展名),构造输出的Excel文件路径,并保存工作簿。最后打印出保存成功的信息。


🎯 主函数

def main():

定义了一个main函数,用于设置文件夹路径、关键字,并遍历文件夹中的PDF文件,对每个文件调用extract_tables_from_pdf函数。

设置路径和关键字

pdf_folder = 'E:\\path_to_pdf_folder'
output_folder = 'E:\\path_to_output_folder'
keyword = "主要会计数据"

这里我们定义了PDF文件所在的文件夹路径、输出文件夹路径和需要搜索的关键字。

遍历并处理PDF文件

if not os.path.exists(output_folder):
    os.makedirs(output_folder)

for file in os.listdir(pdf_folder):
    if file.lower().endswith('.pdf'):
        pdf_path = os.path.join(pdf_folder, file)
        try:
            extract_tables_from_pdf(pdf_path, keyword, output_folder)
        except Exception as e:
            print(f"Error processing {pdf_path}: {e}")

如果输出文件夹不存在,我们创建它。然后遍历PDF文件夹中的所有文件,对每个PDF文件尝试提取表格,如果发生异常,我们打印错误信息。

执行主函数

if __name__ == "__main__":
    main()

如果脚本被直接运行,则执行main函数。


🎉 恭喜你!现在你已经学会了如何使用Python提取PDF中的表格数据并保存到Excel文件中。可以将这个脚本用于自动化你的数据提取任务,节省大量的时间和精力。

以上代码有疑问的可以联系作者一起交流学习

jimmie.webp

  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
  3. QQ打赏

    qrcode qq
博主关闭了所有页面的评论