Python从PDF中提取表格数据

文章目录

  • 1、环境说明
  • 2、pdfplumber
  • 优缺点分析
  • 3、camelot
  • 优缺点分析
  • 4、总结

  • 1、环境说明

    操作系统 : Winodws

    语言 : Python 3.8.5

    IDE : PyCharm 2019.3.5 (Professional Edition)

    框架 1 : pdfplumber 0.5.28 官网

    框架 2 : camelot 0.8.2 官网

    说明 : 这两个框架近期还算活跃,很多框架都1年以上没有活跃,就不考虑了。
    PS : PyCharm 在 Windows 操作系统下,使用虚拟环境 安装依赖包,可能会报错,可以尝试 参考,通过安装后缀名为 .whl 的文件,实现离线安装。


    PS : 测试用的 pdf 文档 下载地址

    2、pdfplumber

    代码

    import pandas as pd
    import pdfplumber
    
    pdf = pdfplumber.open("D:\\Cache\\foo.pdf")
    page = pdf.pages[0]
    table = page.extract_table()
    df = pd.DataFrame(table)
    df.to_excel("D:\\Cache\\foo.xlsx", header=False, index=False)
    

    测试结果

    优缺点分析

    优点:
    1、因为这个框架,不是专门设计用来提取 表格数据,所以可以通过 text 对数据进行搜索,根据关键字只提取目标数据;
    2、准确率高;(暂时没发现有数据错误提取的情况)
    缺点:
    1、表格 title 复杂,导致提取结果提取不全;(title 一般没那么重要,大多数情况下可以忍受)
    2、提取数据导出到 Excel 或者 CSV 需要使用 pandas 框架,学习成本更高一点,不过也还可以接受;

    3、camelot

    代码

    import camelot
    
    # read the pdf file
    tables = camelot.read_pdf('D:\\Cache\\foo.pdf', pages='1-end')
    
    # json, excel, html, sqlite
    tables.export('D:\\Cache\\foo.xlsx', f='excel')
    
    

    测试结果

    PS : 测试过程中,发现会出现数据错误提取的情况。因为涉及用户数据,没办法截图提供。

    优缺点分析

    优点:
    1、直接导出到 Excle 或者 CSV 中,无需引入其他框架,编程简单;
    2、导出数据 Excel 排版漂亮,根据页码 + 表格编号创建 sheet;
    缺点:
    1、没办法对数据进行搜索,只能根据页码进行数据提取;
    2、存在错误读取数据的情况;(根据数据提取结果,酌情考虑框架的选择)


    4、总结

    两个框架各有优缺点。
    情况一 : pdf 文档中所有表格全部提取,并且表格比较简单,提取过程中不会出错的情况下, camelot 绝对是最优选。
    情况二 : 只提取固定的表格数据,推荐使用 pdfplumber 。

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python从PDF中提取表格数据

    发表回复