Найти - Пользователи
Полная версия: [Найдена альтернатива] Экспорт таблицы из pdf с сохранением форматирования
Начало » Python для новичков » [Найдена альтернатива] Экспорт таблицы из pdf с сохранением форматирования
1
justice
Здравствуйте.
Озадачился выуживанием из pdf файлов больших таблиц. Попробовал использовать PyPDF2, pdfminer, tesseract (из textract) и tabula. Только табула позволяет выдернуть таблицу из pdf файла, но есть одна проблема - dataframe создается не правильно. Сливаются 2 и 3 колонки таблицы (их всего 3). Разделить их вручную через split не получится, потому что обе колонки могут содержат слова, разделенные пробелом. Для меня как раз эти колонки и имеют значение, а так как я работаю с большим количеством pdf файлов (тысячи) и большими таблицами (от ~300 до десятков тысяч ячеек) мне крайне необходимо процесс автоматизировать, чтобы иметь возможность выдергивать нужные ячейки из разных строк. Я насколько смог проанализировал список атрибутов датафрейма отсюда https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html
Попробовал экспортировать в json, csv, excel, html. Экспорт в эти форматы сохраняет слияние 2 и 3 колонки. Может кто-нибудь подсказать способ экспорта таблицы с сохранением форматирования?
Использую python 3.7 и последние версии указанных модулей. Если это имеет значение, судя по информации о pdf файлах, они созданы с помощью itext (java).
Вариант изучить java, чтобы работать с этими файлами, буду рассматривать только в крайнем случае… Хотелось все таки на уже знакомом и родном питоне решить задачу.
Пример pdf файла прикреплен.
vic57
pdftotext -layout, pdftotext -bbox из Xpdf
для вашего примера получилось так
vic57
но имхо вы пытаетесь фарш перекрутить на мясо. такие данные надо искать в html/json/xml форматах искать
для вашего примера - первая ссылка в яндекс
 #!/usr/bin/env python3
import requests
    
if __name__=="__main__":
    ogrn="1155958008865"
    url= "https://www.rusprofile.ru/egrul?ogrn=" + ogrn
    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
    r = requests.get(url,headers=headers)
    fname = ogrn +'.html'
    f = open(fname,'w')
    print (r.text,file = f)
    f.close()
html парсится легко - стандартная таблица
justice
vic57, спасибо Вам большое за ответ. Жаль, что через pdftotext не получиться вытащить полноценную таблицу, но с результатом тоже можно работать, благо номера строк остаются и как-то накостылить выдергивание информацию между предыдущим и следующим номером я сумею.
Касательно реквеста информации с rusprofile, я с таким способом знаком, но применять его рискованно. Хоть там и написано, что база обновляется ежедневно, но никто в конечном итоге не отвечает за достоверность и свежесть информации. Надежнее и спокойнее вытаскивать информацию с pdf'ов ФНС.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB