Одна и та же таблица извлекается дважды из pdf от Camelot-py - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь извлечь таблицы из многостраничного файла PDF, используя camelot-py v0.7.3.

До сих пор это был лучший инструмент для чтения PDF для меня. Мне просто нужно было построчно читать pdf и вручную определять таблицу. Я пробовал много других инструментов, таких как tabula, PyPDF2 / 4, pdfminer, et c. Некоторые из них не могли правильно определить сам текст, а некоторые нарушали последовательность слов или расстояние между столбцами.

Но camelot-py дал мне данные в формате, который лучше всего подходит для моего приложения.

В процессе извлечения данных из pdf с использованием camelot-py он обнаруживает все таблицы ' данные почти очень хороши, за исключением нескольких ошибок:

  1. Объединяет несколько таблиц в один элемент TableList. Но я могу разделить эти сгруппированные таблицы. Так что здесь не нужно беспокоиться.

  2. Последняя таблица из этих сгруппированных таблиц повторяется в отдельном элементе TableList. Это повторение вызывает у меня наибольшую озабоченность.

Код, используемый для вышеуказанного процесса, выглядит следующим образом:

tables = camelot.read_pdf('test.pdf', pages='1-end', flavor='stream')
tables.export('foo.csv', f='csv', compress=False)

for table in tables:
    table_df = table.df
    # Code to parse data from tables in each element converted into datafram

Почему camelot-py повторяет некоторые таблицы? Есть ли способ обработать это повторение?

Дополнительная информация:

Входной файл PDF: Я не могу поделиться файлами PDF из-за конфиденциальных данных. Но вот некоторые детали, которые дадут вам хорошее представление о его структуре: все страницы содержат только таблицы. Страница 1: содержит таблицу 1, в которой содержится информация о клиенте. Таблицы 2–4 с такой же структурой

Страница 2: Содержит несколько строк из Таблицы 4 и Таблицы 5–7 с такой же структурой, что и Таблица 2

Страница 3: Таблица 8–10 с той же структурой, что и Таблица 2

Вывод файлов CSV:

foo-page-1-table-1: содержит таблицу 1

foo-page-1-table-2: содержит последнюю строку ( повторяется) из Таблицы 1 и Таблицы 2 в 4

foo-page-2-table-1: Содержит Таблицу 7 (повторяется с отсутствующей первой строкой)

foo-page-2-table- 2: Содержать некоторые конечные строки из Таблицы 4 и Таблицы 5 в 7

foo-page-3-table-1: Содержать Таблицу 10 (повторяется полностью)

foo-page-3-table -2: содержит таблицу 8 до 10

...