Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 13, 2018 10:07:59

justice
Зарегистрирован: 2018-09-13
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

[Найдена альтернатива] Экспорт таблицы из pdf с сохранением форматирования

Здравствуйте.
Озадачился выуживанием из 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 файла прикреплен.

Отредактировано justice (Сен. 14, 2018 09:03:42)

Прикреплённый файлы:
attachment 1155958008865_996518477539169.pdf (98,4 KБ)

Офлайн

#2 Сен. 13, 2018 21:46:25

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

[Найдена альтернатива] Экспорт таблицы из pdf с сохранением форматирования

pdftotext -layout, pdftotext -bbox из Xpdf
для вашего примера получилось так

Прикреплённый файлы:
attachment 1.txt (27,0 KБ)

Офлайн

#3 Сен. 14, 2018 07:37:36

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

[Найдена альтернатива] Экспорт таблицы из pdf с сохранением форматирования

но имхо вы пытаетесь фарш перекрутить на мясо. такие данные надо искать в 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 парсится легко - стандартная таблица

Офлайн

#4 Сен. 14, 2018 09:02:15

justice
Зарегистрирован: 2018-09-13
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

[Найдена альтернатива] Экспорт таблицы из pdf с сохранением форматирования

vic57, спасибо Вам большое за ответ. Жаль, что через pdftotext не получиться вытащить полноценную таблицу, но с результатом тоже можно работать, благо номера строк остаются и как-то накостылить выдергивание информацию между предыдущим и следующим номером я сумею.
Касательно реквеста информации с rusprofile, я с таким способом знаком, но применять его рискованно. Хоть там и написано, что база обновляется ежедневно, но никто в конечном итоге не отвечает за достоверность и свежесть информации. Надежнее и спокойнее вытаскивать информацию с pdf'ов ФНС.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version