Открытие pdf и чтение в таблицах с pandon pandas

Возможно ли открыть PDF файлы и прочитать их в pandon pandas или мне нужно использовать буфер обмена pandas для этой функции?

Ответ 1

это невозможно. PDF - это формат данных для печати. Поэтому структура таблицы теряется. с некоторой удачей вы можете извлечь текст с pypdf и угадать прежние столбцы таблицы.

Ответ 2

Если это одноразовый файл, вы можете скопировать данные из таблицы PDF в текстовый файл, отформатировать их (используя поиск и замену, макросы Notepad++, скрипт), сохранить их как файл CSV и загрузить это в панд.

Если вам нужно сделать это масштабируемым образом, вы можете попробовать этот продукт: http://tabula.technology/. Я еще не использовал его, поэтому я не знаю, насколько хорошо он работает, но вы можете изучить его, если вам это нужно.

Ответ 4

Скопируйте данные таблицы из PDF и вставьте в файл Excel (который обычно вставляется как одиночный, а не несколько столбцов). Затем используйте FlashFill (доступный в Excel 2016, не уверенный в более ранних версиях Excel), чтобы разделить данные на столбцы, первоначально просмотренные в PDF. Процесс выполняется быстро и легко. Затем используйте Pandas, чтобы пресечь данные Excel.

Ответ 5

Я проводил некоторые тесты с Камелотом (https://camelot-py.readthedocs.io/en/master/), и он очень хорошо работает во многих ситуациях. И вы можете попытаться настроить некоторые параметры, если параметры по умолчанию не работают.

Он похож на Tabula, но использует разные алгоритмы (Tabula использует векторные данные в PDF и растровые линии таблицы; Camelot использует Hough Transform), поэтому вы можете попробовать оба варианта, чтобы найти лучший.

У обоих есть веб-версия, поэтому вы можете попробовать на каком-то примере решить, какой из них лучше всего подходит для вашего приложения.

Ответ 6

Существует новая версия tabula под названием tabula-py

pip install tabula-py

метод .read_pdf работает так же, как и в старой версии, документация здесь: https://pypi.org/project/tabula-py/

Ответ 7

Когда я делаю

from tabula import read_pdf
import pandas as pd
df = read_pdf('C:\\Users\\sreeraj.va\\Desktop\\kkrvspnj.pdf')
df.shape
>> (68, 10)

Но мой df - это форма (20000,10), в записной книжке - только форма первой страницы. Почему так?