Tabula-py无法正确分离列。

5
我刚刚发现了tabula-py(当然还有tabula-java),可以从pdf中提取表格。我正在编写一个脚本,从pdf表格中读取一些数据,对其进行简单的清理,然后将其导出到excel中。我使用的pdf每天都有相同的格式,并且表格总是在特定区域。为了检测该区域,我使用tabula.exe:我选择表格,可视化预览(看起来很好),然后导出脚本,以查看tabula.exe使用的-a参数。然后在Python命令中使用它,如下所示:
df = tabula.read_pdf(os.fsdecode(directory)+filename, encoding = 'ISO-8859-1',
stream=True, area = "81.106,302.475,384.697,552.491", pages = 2, pandas_options={'header':None})

我使用了编码参数,因为标准的utf-8会返回错误,并且使用流方法,因为它是在tabula.exe中显示漂亮提取表格的方法。然而,数据框存在一个问题,因为前两列(在tabula.exe预览中正确显示为2个不同的列)实际上是一列,导致名称和值混合在一起。
您知道为什么相同的区域在tabula-py和tabula.exe中产生了两个不同的结果吗?非常感谢!
2个回答

4

在GitHub上找到了解决方法:tabula-py默认设置为“guess”选项为True。因此,要纠正差异,只需添加guess=False,输出将相同!

    df = tabula.read_pdf(os.fsdecode(directory)+filename, encoding = 'ISO-8859-1', 
         stream=True, area = "81.106,302.475,384.697,552.491", pages = 2, guess = False,  pandas_options={'header':None})

1

如果有人对于如何划分表格和列感到困惑,可以使用Adobe Acrobat轻松找到精确的尺寸。在Adobe Acrobat中打开pdf文件,打开标尺,并将其设置为点。放大视图,您可以看到精确的点测量值,以便划分区域/表格。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接