使用 Camelot 从此 PDF 中提取数据时未找到表格并合并列文本

No tables found and merged column text when extracting data from this PDF using Camelot

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

我正在使用 Camelot 解析这些 PDF

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

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

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

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

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

使用 CLI:

$ 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)