python - 在 Camelot 中加入由分页符分隔的表
问题描述
如何连接跨 2 页的表?我有一个包含多个表格和跨页面的月度发票 pdf,我想自动提取 pdf 数据以转储到 CSV。我一直在寻找一种方法,我可以手动加入表格但是有没有办法做到这一点?我不能分享原始 PDF,因为是敏感信息,但我的表格有一个独特的第一行和最后一行
我认为应该有一种方法可以遍历所有表。寻找开始行和结束行。如果一个表没有结束行并且下一个表没有开始行来合并这些表,但我还不能将它放入代码中!这是我第一次使用数据框,出于某种原因,我似乎无法理解它们是如何工作的。
pdfdata = camelot.read_pdf('sample.pdf', flavor='lattice', pages='all', encoding='latin-1',flag_size=True )
j2j1=pdfdata[2].df
j2j2=pdfdata[3].df
frames =[j2j1,j2j2]
df_keys = pd.concat(frames, keys=['x','y'])
print(df_keys)
这是每个表格在 PDF 上的外观,它在解析每个表格的报告时 100% 准确,{'accuracy': 100.0, 'whitespace': 3.33, 'order': 1, 'page': 13}
正如我提到的,每个表格都以标题开头并以 siteCode开头的行结束 这在每个表格上都是唯一的,它由 4 位数字组成或 4 位数字和一个数字,即 USCA 或 USCA1。
Item | description | price | units | total |
1234 | gen. description | 11.00 | 5 | 55.00 |
2345 | gen. description | 9.00 | 4 | 36.00 |
-
-
-
6789 | gen. description | 15.00 | 10 | 150.00 |
siteCode | | | | 241.00 |
函数也是一个次要问题.export()
,无论如何让它只生成一个 csv 吗?它为每个表生成一个超过 70 个文件的文件
解决方案
推荐阅读
- php - 在 Shopware 5 中停用某些邮件的发送
- c++ - 为什么 Xcode 找不到标准库?
- java - 使用 throws 关键字并在 main 中处理它,而不是在它发生的方法中处理它
- laravel - 具有多个参数的 Laravel 路由 - 如何获得正确的数据库结果
- typescript - 通用排序功能
- android - 如何解决错误:无法解决:com.google.firebase:firebase-measurement-connector:11.6.0 在 Android 项目中?
- nestjs - npm run start:dev cannot find module
- javascript - Jasmine 试图读取不存在的属性
- c# - ASP.NET (C#) 如何设置/更新动态/运行时生成的输入的输入值?
- python - /quiz/api/quiz/ 列“owner_id”中的空值的 IntegrityError 违反非空约束详细信息