Таблицы, не обнаруженные с помощью tabula и camelot

0

Вопрос

Я попытался извлечь таблицы из PDF-файлов, которые, как мне кажется, не имеют надлежащего формата. Таблицы в этих PDF-файлах имеют формат таблицы, но не заключены должным образом с правильными границами. enter image description hereЯ прикреплю образец pdf и выходные данные с обеими библиотеками. Когда я попытался использовать tabula для обнаружения таблиц, на всех страницах pdf возвращается пустой кадр данных.

введите 0 для отдельных страниц, 1 для всех, 2 для конкретной страницы: 2 введите номер страницы: 25 таблицы на этой странице не найдены по табулам.

И когда я использую camelot, то же самое происходит без ответа, когда я использую flovor='lattice'

введите 0 для отдельных страниц, 1 для всех страниц, 2 для страниц в таблицах, определяемых таблицей, 3 для конкретных страниц: 3 введите 0 для решетки или 1 для потока: 0 введите номер страницы: 25 на этой странице камелотом не найдено таблиц.

и когда я использую flovor='stream', Я получаю фрейм данных, в котором каждая строка считывается строка за строкой с данными, разделенными вкладками, но в этот фрейм данных также будет включен обычный текст.

введите 0 для отдельных страниц, 1 для всех страниц, 2 для страниц в таблицах, определяемых таблицей, 3 для конкретных страниц: 3 введите 0 для решетки или 1 для потока: 1 введите номер страницы: 25 enter image description here

Мне просто нужен эффективный способ обнаружения таблицы и извлечения тех же данных, если вертикальные заключающие строки таблицы отсутствуют. Библиотеки tabula и camelot работают нормально, если таблица имеет правильный формат, заключенный в вертикальные и горизонтальные линии.

nlp pdf python python-camelot
2021-11-22 15:08:39
2

Лучший ответ

0

Этот метод может помочь вам: https://camelot-py.readthedocs.io/en/master/user/advanced.html#specify-column-separators

Вы можете указать вертикальный разделитель для camelot, передав координаты x, сначала вы должны использовать метод ".plot()" в camelot, чтобы просмотреть таблицу внутри pdf и отметить координаты x, в которых вы хотите, чтобы были вертикальные разделители, а затем передать их, как показано ниже:

# to get the x-coordinates
tables = camelot.read_pdf('your_pdf.pdf')
camelot.plot(tables[0], kind='text').show()

#to pass the x-coordinates
camelot.read_pdf('your_pdf.pdf', flavor='stream', columns=['x1,x2']) 
2021-11-22 15:52:19
-1

Таблицы, не обнаруженные с помощью tabula и camelot

Недавно я работал над извлечением таблицы из PDF.

Табула и камелот тоже не работали на меня, но pdfplumber дал мне требуемый результат.

import pdfplumber
pdf = pdfplumber.open(filepath)
table = pdf.pages[1].extract_table(table_settings=
{"vertical_strategy": "text", "horizontal_strategy": "text"})
df = pd.DataFrame(table, columns=table)
df.to_csv(outfile2, mode='a', index=False)
2021-11-27 11:30:02

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................