使用pdfminer从PDF中提取表格数据的工具
项目描述
有没有一些表格数据被锁在PDF格式中?比如我在尊敬的当前工作地点的财务信息,看起来大致如下
Tabula 对于您需要提取的信息量来说不太可行?(我的情况是数千页。)这个包可能就是您所需要的。我应该注意的是,这是一个针对非常结构化数据的简单工具。Tabula可以处理比这个包更混乱的情况。单元格高度不对齐?文本换行?跨行单元格?您最好使用Tabula。计算机生成的报告PDF,迫切希望进入SQLite数据库?您来对地方了。
阅读UIUC财务报表
如果您来到这里是为了阅读UIUC的财务报表,有一个专门为您准备的页面在此。
包概述
此包基于pdfminer,使其能够轻松地吸收PDF形式的计算机生成的表格数据,并生成类似JSON的行字典列表。基本工作流程如下
# identify top of table
top_y0 = find_attr_group_matching(
["Last Name", "First Name"], "y0", page_it.lines)
# extract text snippets making up table body
table_lines = [l for l in page_it.lines if l.y0 < top_y0]
# extract header text snippets
headers = [l for l in page_it.lines if abs(l.y0 - top_y0) < 5]
# extract table
rows = find_row_table(headers, table_lines)
rows = merge_overlapping_rows(rows, "y0", "y1")
这将使rows成为一个类似于以下的数据结构
{'Amount ': TL(' 60.00 '), 'Last Name': TL('Lidstad'), 'Address': TL('62\xa0Mississippi\xa0River\xa0Blvd\xa0N'), 'First Name': TL('Dick\xa0&\xa0Peg'), 'City': TL('Saint\xa0Paul'), 'State': TL('MN'), 'Zip': TL('55104'), 'Occupation': TL('retired'), 'Date': TL('10/12/2012')}
{'Amount ': TL(' 60.00 '), 'Last Name': TL('Strom'), 'Address': TL('1229\xa0Hague\xa0Ave'), 'First Name': TL('Pam'), 'City': TL('St.\xa0Paul'), 'State': TL('MN'), 'Zip': TL('55104'), 'Date': TL('9/12/2012')}
{'Amount ': TL(' 60.00 '), 'Last Name': TL('Seeba'), 'Address': TL('1399\xa0Sheldon\xa0St'), 'First Name': TL('Louise\xa0&\xa0Paul'), 'City': TL('Saint\xa0Paul'), 'State': TL('MN'), 'Zip': TL('55108'), 'Occupation': TL('BOE'), 'Employer': TL('City\xa0of\xa0Saint\xa0Paul'), 'Date': TL('10/12/2012')}
{'Amount ': TL(' 60.00 '), 'Last Name': TL('Schumacher\xa0/\xa0Bales'), 'First Name': TL('Douglas\xa0L.\xa0/\xa0Patricia\xa0948\xa0County\xa0Rd.\xa0D\xa0W'), 'City': TL('Saint\xa0Paul'), 'State': TL('MN'), 'Zip': TL('55126'), 'Date': TL('10/13/2012')}
{'Amount ': TL(' 75.00 '), 'Last Name': TL('Abrams'), 'Address': TL('238\xa08th\xa0St\xa0east'), 'First Name': TL('Marjorie'), 'City': TL('St\xa0Paul'), 'State': TL('MN'), 'Zip': TL('55101'), 'Occupation': TL('Retired'), 'Employer': TL('Retired'), 'Date': TL('8/8/2012')}
请参阅此演示,它是一个最小且完全功能性的示例。在源代码中有一些文档。此外,还有一些(文档较少)用于将获取的数据插入SQLite3数据库和用于使我财务信息可消化的完整脚本的工具。
该包仅适用于Python 3。使用以下命令安装
pip install pdf2data
https://github.com/inducer/pdf2data
版权所有 2019 Andreas Kloeckner
在MIT许可证下发布
关于支持,如果这个功能不能满足您的需求,您可能需要自己解决。我很乐意接受补丁,但很可能没有时间来解决您的具体用例。
项目详情
关闭
pdf2data-2019.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c3933138bd67b3791571ea781cbc34ccbc457eead3de9bb4d8f51ec3aa01f726 |
|
MD5 | a055e751be03629724f5f7456a71987c |
|
BLAKE2b-256 | b8724421e84576046b53e0c024b3538b456e7bc675e8a8829d02ff5f31665135 |