Как конвертировать PDF в CSV с помощью tabula-py?
В Python 3 у меня есть файл PDF "Ativos_Fevereiro_2018_servidores_rj.pdf" с 6 041 страницами. Я на машине с Ubuntu
На каждой странице есть текст вверху страницы, две строки. И ниже таблицы, с заголовком и двумя столбцами. Каждая таблица в 36 строках, меньше на последней странице
В конце каждой страницы, после таблиц, есть также строка текста
Я хочу создать CSV из этого PDF, рассматривая только таблицы на страницах. И игнорируя тексты до и после таблиц
Изначально я тестировал tabula-py. Но он генерирует пустой файл:
from tabula import convert_into
convert_into("Ativos_Fevereiro_2018_servidores_rj.pdf", "test_s.csv", output_format="csv")
Пожалуйста, кто-нибудь знает другой способ использовать tabula-py для этого типа спроса?
Или другой способ конвертировать PDF в CSV в этот тип файла?
2 ответа
Хорошо, я нашел проблему: вы должны установить spreadsheet=True
и держите кодировку utf-8:
df = tabula.read_pdf("Ativos_Fevereiro_2018_servidores_rj.pdf", encoding='utf-8', spreadsheet=True, pages='1-6041')
На рисунке ниже я протестировал его только с первой страницы (потому что ваш файл огромен):
Вы можете сохранить DataFrame как csv впоследствии:
df.to_csv('otuput.csv', encoding='utf-8')
Редактировать:
Хорошо, ошибка может быть проблемой с памятью Java. Чтобы сделать это быстрее, я добавил pages
вариант. И там также была проблема кодирования, поэтому encoding='utf-8'
добавлен в экспорт CSV. Если вы продолжаете сталкиваться с java-ошибкой, попробуйте разобрать ее по частям, например pages='1-300'
, Я только что сделал все 6041 (на машине с 64 ГБ ОЗУ), все работало нормально.
Преобразование PDF в CSV с помощью tabula-py
from tabula import convert_into
table_file = r"ActualPathtoPDF"
output_csv = r"DestinationDirectory/file.csv"
df = convert_into(table_file, output_csv, output_format='csv', lattice=True, stream=False, pages="all")