首页 > 解决方案 > 在 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 个文件的文件

标签: pythonpython-3.xpandasdataframe

解决方案


推荐阅读