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-файлах, но игнорировать пустые после. Необходимо уметь использовать извлеченные данные упорядоченным образом.
Также открыт для любых других предложений
ТИА
1 ответ
Возможно, вам поможет опция table_regions (введенная в версии 0.7).
https://camelot-py.readthedocs.io/en/master/user/advanced.html
When table_regions is specified, Camelot will only analyze the specified regions to look for tables.
У меня такая же проблема! Это не идеальное решение, но я считаю, что вы можете обойти это, выделив конкретныеtable_area
вызов, который может привести к превращению пустой таблицы в свою pdf_read
вызов. Сделав это, вы можете сделать то, что было предложено выше, и просто окружитьpdf_read
с блоком try_catch. Это придаст вам необходимую надежность.