【问题标题】:Python-Camelot extracting empty tablesPython-Camelot 提取空表
【发布时间】:2019-05-28 23:25:04
【问题描述】:

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

【问题讨论】:

  • 你能把上面的代码加到try块exception,我不知道camelot。
  • Try 块仍会尝试运行该命令,并且会在一个或多个表中遇到错误并完全放弃该命令。我需要能够提取任何可用的数据,而不会出现空表出错。

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


【解决方案1】:

也许选项 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.

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-04-12
      • 2021-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-01
      相关资源
      最近更新 更多