LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

python自动化系列:自动提取PDF表格数据并保存为Excel文件

admin
2025年8月28日 1:49 本文热度 109

作品介绍


作品名称:自动提取PDF表格数据并保存为Excel文件
开发环境:PyCharm 2023.3.4 + python3.7
用到的库:pdfplumber、pandas、logging(用于日志记录的一个强大工具)
作品简介:该实例使用pdfplumber库来提取PDF文件中的表格数据,并使用pandas库将这些数据保存为Excel文件。此外,代码还使用了logging库来记录操作过程中的信息和错误。


实现过程

一、代码设计

以下是代码的详细说明:

  1. 导入库:

    • import pdfplumber: 导入pdfplumber库,用于提取PDF中的表格数据。

    • import pandas as pd: 导入pandas库,并简称为pd,用于数据处理和保存为Excel文件。

    • import logging: 导入logging库,用于记录日志信息。

  2. 设置日志记录级别:

    • logging.basicConfig(level=logging.INFO): 设置日志记录的级别为INFO,这意味着INFO级别及以上的日志信息将会被记录。

  3. 定义PDF文件路径:

    • pdf_path = 'leisure.pdf': 定义一个变量pdf_path,存储PDF文件的路径。

  4. 打开和处理PDF文件:

    • 使用try块来尝试执行接下来的代码,并捕获可能发生的任何异常。

  5. 使用pdfplumber打开PDF文件:

    • with pdfplumber.open(pdf_path) as pdf:: 使用with语句打开PDF文件,确保文件最后会被正确关闭。

  6. 初始化DataFrame列表:

    • all_dfs = []: 创建一个空列表all_dfs,用于存储从PDF中提取的每个表格的DataFrame。

  7. 遍历PDF的每一页:

    • for page in pdf.pages:: 遍历PDF文件中的每一页。

  8. 提取页面中的所有表格:

    • tables = page.extract_tables(): 调用extract_tables方法提取当前页面中的所有表格数据。

  9. 处理每个表格:

    • for table in tables:: 遍历当前页面中的每个表格。

    • df = pd.DataFrame(table[1:], columns=table[0]): 将表格数据转换为DataFrame,其中第一行用作列标题,其余行作为数据。

  10. 将DataFrame添加到列表:

    • all_dfs.append(df): 将每个DataFrame添加到all_dfs列表中。

  11. 合并所有表格的DataFrame:

    • combined_df = pd.concat(all_dfs, ignore_index=True): 使用pd.concat合并所有表格的DataFrame,ignore_index=True重新索引。

  12. 保存为Excel文件:

    • excel_path = "table_from_page.xlsx": 定义Excel文件的保存路径。

    • combined_df.to_excel(excel_path, index=False): 将合并后的DataFrame保存为Excel文件,index=False表示不保存行索引。

  13. 记录成功信息:

    • logging.info(...): 记录一条INFO级别的日志信息,表明表格数据已成功保存为Excel文件。

  14. 异常处理:

    • except Exception as e:: 捕获代码执行过程中的任何异常。

    • logging.error(...): 如果发生异常,记录一条ERROR级别的日志信息,记录异常信息。

"""提取pdf的表格数据保存为Excel文件"""import pdfplumberimport pandas as pdimport logging
logging.basicConfig(level=logging.INFO)
# PDF文件路径pdf_path = 'leisure.pdf'
# 使用pdfplumber打开PDF文件try:    with pdfplumber.open(pdf_path) as pdf:        all_dfs = []  # 用于保存所有表格数据的DataFrame列表
       # 遍历PDF中的每一页        for page in pdf.pages:            # 提取当前页的所有表格数据            tables = page.extract_tables()
           for table in tables:                # 将表格数据转换为Pandas DataFrame                # 将表格的第一行用作列标题,其余行作为数据                df = pd.DataFrame(table[1:], columns=table[0])                all_dfs.append(df)
       # 合并所有表格数据到一个DataFrame        combined_df = pd.concat(all_dfs, ignore_index=True)
       # 保存为Excel文件        excel_path = "table_from_page.xlsx"        combined_df.to_excel(excel_path, index=False)
       logging.info(f"表格数据已保存为Excel文件:{excel_path}")
except Exception as e:    logging.error(f"处理PDF或保存Excel时发生错误:{str(e)}")


阅读原文:原文链接


该文章在 2025/8/28 15:45:50 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved