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


person A.A. F    schedule 02.01.2019    source източник
comment
Можете ли да добавите горния код в пробния блок exception, не знам за camelot.   -  person Mohamed Thasin ah    schedule 02.01.2019
comment
Try block все пак ще се опита да изпълни командата и ще се сблъска с грешки в една или повече от таблиците и ще изостави командата напълно. Трябва да мога да извличам всички налични данни, без празните таблици да дават грешки.   -  person A.A. F    schedule 02.01.2019


Отговори (2)


Може би опцията 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.
person Stefano Fiorucci - anakin87    schedule 08.01.2019

Имам точно същия проблем! Това не е идеалното решение, но вярвам, че можете да го заобиколите, като отделите конкретното table_area извикване, което може да доведе до празна таблица, в собствено pdf_read извикване. Правейки това, можете да направите предложеното по-горе и просто да оградите pdf_read с блок try_catch. Това ще ви осигури здравината, която търсите.

person Ryan Arifin    schedule 16.04.2020