我正在使用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
答案 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
括起来。这将为您提供所需的鲁棒性。