Python-Camelot提取空表

时间:2019-01-02 09:52:05

标签: python pandas dataframe pdf-extraction python-camelot

我正在使用Camelot通过以下命令提取PDF的多个部分。

cgl_section = camelot.read_pdf(filename, flavor='stream', 
              table_areas=['35,490,155,483', '53,480,110,470', '117,480,155,470', 
                           '38,469,106,456', '39,454,105,445', '38,430,155,420', 
                           '38,418,77, 410'])

当PDF实际上包含这些区域中的数据时,此方法运行良好。但是我不希望解析的每个PDF中都有数据,有些返回为空。 当返回的数据不是表并且只有一列时,出现以下错误。

UserWarning: No tables found in table area 1

ValueError: min() arg is an empty sequence

我需要一种方法来提取所有PDF中的这些特定区域,但之后忽略空白区域。需要能够有序地使用提取的数据。

也接受其他建议

TIA

2 个答案:

答案 0 :(得分:0)

也许table_regions选项(在0.7中引入)可以为您提供帮助。

https://camelot-py.readthedocs.io/en/master/user/advanced.html#specify-table-regions

When table_regions is specified, Camelot will only analyze the specified regions to look for tables.

答案 1 :(得分:0)

我遇到同样的问题!这不是一个完美的解决方案,但是我相信您可以通过将特定的table_area调用分离出来来解决此问题,该调用可能导致一个空表进入其自己的pdf_read调用。这样做,您可以执行上面建议的操作,并用try_catch块将pdf_read括起来。这将为您提供所需的鲁棒性。