Извлечение таблицы PDF

У меня есть (такие же) данные, сохраненные как файл изображения GIF, и как файл PDF, и я хочу проанализировать его на HTML или XML. Данные на самом деле являются меню моего университетского кафетерия. Это означает, что есть новая версия файла, которая должна анализироваться каждую неделю! В общем случае файлы содержат текст заголовка и нижнего колонтитула, а также таблицу, заполненную другими данными. Я прочитал несколько сообщений о stackoverflow, и я также начал попытки проанализировать данные таблицы как HTML/XML:

PDF

  • PDFBox || iText (Java)
  • Импорт документов Google
  • PDF2HTML || PDF2Table

GIF

  • Тессеракт-OCR

У меня есть лучший результат от разбора PDF файла с помощью PDFBox, но все же (поскольку меню меняется еженедельно), он недостаточно надежный. HTML, который я получаю, включает в себя иногда больше, иногда меньше "абзацев" (<p>), так что я не могу правильно анализировать данные.

Вот почему я хотел бы знать, есть ли другой способ сделать это?

Ответ 1

Tabula - довольно хороший старт на веб-интерфейсе JRuby для извлечения таблиц CSV/TSV из произвольных PDF файлов.

Ответ 2

Я выполнил свой собственный алгоритм (его имя traprange) для анализа табличных данных в pdf файлах.

Ниже приведены некоторые примеры файлов PDF и результатов:

Посетите мою страницу проекта на traprange

или моя статья на traprange

Ответ 3

Если вы хотите извлекать данные из таблиц один раз в неделю, а вы находитесь в Windows, пожалуйста, проверьте эту бесплатную утилиту pdf, которая включает автоматическое обнаружение таблиц и таблицу в CSV, преобразование XML: Утилита PDF Viewer.

Утилита бесплатна как для некоммерческого, так и для некоммерческого использования для не-разработчиков (и для разработчиков, которые хотят автоматизировать через API, есть отдельная версия).

Отказ от ответственности: я работаю для ByteScout

Ответ 4

Я пробовал много программного обеспечения OCR и текстового конвертера, и, хотя я считаю, что однажды должен написать программу, конвертирующую PDF в текст, так как изображение лучше понимается лицом, выполняющим задачу.

Я также пытался использовать Google и многие другие интернет-сайты (около 900 сайтов) и автономные (около 1000 программ) продукты разных компаний. Если вы хотите извлечь текст из любого метода, такого как OCR или Text из PDF, то самая точная программа, которую я нашел, PDFTOHTML. Степень точности PDFTOHTML составляет около 98%, а Google Online - около 94%. Это очень хорошее программное обеспечение, которое также предоставляет вам правильный формат текста, т.е. Полужирный, курсив и т.д. Текста.

Ответ 5

Являются ли таблицы в одном и том же месте каждый раз? Если вы можете найти размеры каждого окна, вы можете использовать инструмент для разделения PDF-документа на несколько документов, каждый из которых содержит один ящик, после чего вы можете использовать любой инструмент, который вы хотите преобразовать каждый меньший PDF в HTML (например, инструменты, упомянутые в других ответах). Случайные поисковые запросы Google вытащили PyPdf, который выглядел так, будто у него могут быть некоторые полезные функции.

Если вы не можете жестко закодировать размер окна (или хотите применить проблему к нескольким меню в разных форматах), очевидный метод для меня (я сказал, очевидно, нелегко) - это обнаружение края найдите, где будет граница таблицы, а затем примените расщепление, о котором я говорил раньше.

Ответ 6

Недавно я столкнулся с подобной проблемой.

Альтернативное решение, которое я нашел, заключалось в том, чтобы открыть PDF-документ в Adobe и экспортировать его в xml. По крайней мере, с моим PDF файлом он сохранил информацию о таблице, а затем я смог программно работать с XML для создания табличных файлов, таких как excel и т.д.

Другая проблема, с которой я столкнулся, заключалась в том, что Adobe позволяет экспортировать только один файл за раз, и у меня было много файлов. К счастью, Adobe также имеет функцию слияния. Я закончил слияние всех файлов вместе, а затем экспортировал их как один большой XML файл и работал с этим файлом, чтобы создать то, что мне нужно.

Ответ 7

Вы можете использовать Camelot для извлечения таблиц из вашего PDF и экспорта в файл HTML. CSV, Excel и JSON также поддерживаются. Вы можете ознакомиться с документацией по адресу: http://camelot-py.readthedocs.io. Это дает более точные результаты по сравнению с другими инструментами и библиотеками для извлечения таблиц с открытым исходным кодом. Здесь сравнение.

Вы можете использовать следующий фрагмент кода для продолжения своей задачи:

>>> import camelot
>>> tables = camelot.read_pdf('file.pdf')
>>> type(tables[0].df)
<class 'pandas.core.frame.DataFrame'>
>>> tables[0].to_html('file.html')

Отказ от ответственности: я автор библиотеки.

Ответ 8

для основных шаблонов Tabula - лучший вариант с открытым исходным кодом, а Abbyy PDF editor - отличное решение для извлечения и модификации pdf-данных на уровне предприятия. Эбби работает на OCR.

У Tabula есть две опции для автоматического определения таблицы, а другая - вручную, предоставляя координаты.