2

我正在使用 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

4

2 回答 2

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.
于 2019-01-08T08:34:26.317 回答
0

我有同样的问题!这不是一个完美的解决方案,但我相信您可以通过将table_area可能导致空表的特定调用分离到它自己的pdf_read调用中来解决这个问题。这样做,您可以按照上面的建议进行操作,只需pdf_read将 try_catch 块包围起来。这将为您提供所需的稳健性。

于 2020-04-16T00:01:31.443 回答