Ответ 1
это невозможно. PDF - это формат данных для печати. Поэтому структура таблицы теряется. с некоторой удачей вы можете извлечь текст с pypdf и угадать прежние столбцы таблицы.
Возможно ли открыть PDF файлы и прочитать их в pandon pandas или мне нужно использовать буфер обмена pandas для этой функции?
это невозможно. PDF - это формат данных для печати. Поэтому структура таблицы теряется. с некоторой удачей вы можете извлечь текст с pypdf и угадать прежние столбцы таблицы.
Если это одноразовый файл, вы можете скопировать данные из таблицы PDF в текстовый файл, отформатировать их (используя поиск и замену, макросы Notepad++, скрипт), сохранить их как файл CSV и загрузить это в панд.
Если вам нужно сделать это масштабируемым образом, вы можете попробовать этот продукт: http://tabula.technology/. Я еще не использовал его, поэтому я не знаю, насколько хорошо он работает, но вы можете изучить его, если вам это нужно.
вы можете использовать tabula https://blog.chezo.uno/tabula-py-extract-table-from-pdf-into-python-dataframe-6c7acfa5f302
from tabula import read_pdf
df = read_pdf('data.pdf')
Я вижу больше в ссылке!
Скопируйте данные таблицы из PDF и вставьте в файл Excel (который обычно вставляется как одиночный, а не несколько столбцов). Затем используйте FlashFill (доступный в Excel 2016, не уверенный в более ранних версиях Excel), чтобы разделить данные на столбцы, первоначально просмотренные в PDF. Процесс выполняется быстро и легко. Затем используйте Pandas, чтобы пресечь данные Excel.
Я проводил некоторые тесты с Камелотом (https://camelot-py.readthedocs.io/en/master/), и он очень хорошо работает во многих ситуациях. И вы можете попытаться настроить некоторые параметры, если параметры по умолчанию не работают.
Он похож на Tabula, но использует разные алгоритмы (Tabula использует векторные данные в PDF и растровые линии таблицы; Camelot использует Hough Transform), поэтому вы можете попробовать оба варианта, чтобы найти лучший.
У обоих есть веб-версия, поэтому вы можете попробовать на каком-то примере решить, какой из них лучше всего подходит для вашего приложения.
Существует новая версия tabula
под названием tabula-py
pip install tabula-py
метод .read_pdf
работает так же, как и в старой версии, документация здесь: https://pypi.org/project/tabula-py/
Когда я делаю
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), в записной книжке - только форма первой страницы. Почему так?