使用pdfminer从pdf中提取表格数据的工具

pdf2data的Python项目详细描述


一些表格数据是否以pdf格式锁定?就像我的财务信息 目前的工作地点,大致如下:

example/ui-financials.png

Tabula对于 你需要提取的信息?(在我的案例中有几千页)这个 你可能在找包裹。我应该注意这是 一个针对非常结构化数据的简单工具。tabla可以处理farmesssier 情况比这个包。细胞高度失调?单词包装的单元格? 跨越细胞?你最好用表格。计算机生成的报告 迫切想加入sqlite数据库的pdf?你走到右边了 地点。

阅读uiuc财务信息

如果你来这里是为了阅读uiuc的财务报表,这里有一页 just for you

软件包概述

这个包是在pdfminer的基础上构建的 易于以pdf格式吸收计算机生成的表格数据,并生成类似json的列表 行字典。基本工作流程如下:

# identify top of tabletop_y0=find_attr_group_matching(["Last Name","First Name"],"y0",page_it.lines)# extract text snippets making up table bodytable_lines=[lforlinpage_it.linesifl.y0<top_y0]# extract header text snippetsheaders=[lforlinpage_it.linesifabs(l.y0-top_y0)<5]# extract tablerows=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')}

请参阅this demo以获取一个最小的、全功能的示例。 在source code中有一些文档。在 此外,还有一些(很少记录的)工具用于插入 在sqlite3数据库中获取数据,并使用完整的脚本 财务信息可消化。

该包仅限python 3。安装时使用:

pip install pdf2data

https://github.com/inducer/pdf2data

版权所有2019 Andreas Kloeckner

根据麻省理工学院许可证发布

在支持方面,如果这不能满足你的需要,你很可能 你自己的。我很乐意打补丁,但我不太可能有时间去修 你的用例。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java WebClient请求级别超时抛出名为default onErrorDropped的运算符   java JAXB外部绑定文件错误   Freemarker中的java转义宏参数值   java正在同步来自不同对象{已编辑}的线程   java如何在另一个类上更新活动中的元素   java Hibernate连接查询   java可以使用Apache Crunch创建类似于图形的数据结构吗?   java在JLabel的开头加上3个点   java 安卓应用程序显示线程错误   java@RequestBody在Spring中总是空的   java Android异步任务永远不会结束   具有多个属性的java Jaxws枚举   java中的安卓 Stripe InvalidRequestException   多线程java。util。非多线程程序中的ConcurrentModificationException   Minecraft Java插件如何删除HashMap中存储的所有块   空Java字符串的大小   从AJP连接器请求检索Shibboleth属性的java   oracle11g将Java类文件加载到Oracle数据库