0

UserWarning: No tables found on page-1当我尝试从附加的 PDF 中提取表格时,我得到了一个。但是,当我查看提取的数据时,一些列文本被合并到一个列中。”</p>

在此处输入图像描述

我正在使用Camelot解析这些 PDF

重现步骤: camelot --output m27.csv --format csv stream m27.pdf

这是我试图解析的 PDF 链接:https ://github.com/tabulapdf/tabula-java/blob/master/src/test/resources/technology/tabula/m27.pdf

4

1 回答 1

3

PDF 仅包含将字符放置在二维平面上的 x,y 坐标处的指令,不保留单词、句子或表格的知识。

Camelot 在后台使用PDFMiner将字符分组为单词,将单词分组为句子。有时当字符太接近时,PDFMiner 可以将属于不同单词的字符组合成一个。

由于 PDF 表中的字符非常接近,它们被合并为一个单词,因此 Camelot 无法正确检测列。在这种情况下,您可以指定列分隔符来获取表格。要获取列分隔符的 x 坐标,您可以查看可视化调试指南。此外,您可以指定split_text=True沿您指定的列分隔符剪切单词。这是代码(我通过使用创建 PDF 中文本的 matplotlib 图来获得 x 坐标$ camelot stream -plot text m27.pdf):

使用命令行:

$ camelot --output m27.csv --format csv -split stream -C 72,95,209,327,442,529,566,606,683 m27.pdf

使用 API:

>>> import camelot
>>> tables = camelot.read_pdf('m27.pdf', flavor='stream', columns=['72,95,209,327,442,529,566,606,683'], split_text=True)
于 2018-11-09T19:14:03.823 回答