Конвертация таблиц без границ ячеек из pdf в excel или csv?

Имеется pdf файл с многостраничной таблицей без границ ячеек.

Пример пары рядов:
5a0c6ab5a7a99017030939.pngСкачать pdf файл

Необходимо преобразовать в excel или csv с правильным разделением по ячейкам. Сложность заключается в том, что множество конвертеров, в том числе и встроенный в Adobe Acrobat, PyPDF2 и другие считывают файл неправильно - добавляют лишние строки и ломают разметку. Я приспособился использовать программу PDF2XL, в которой есть ручной режим, позволяющий задать вручную границы для ячеек. Однако, хотелось бы автоматизировать данный процесс с помощью Python или на другом языке.
  • Вопрос задан
  • 1516 просмотров
Решения вопроса 1
Для решения подобной задачи я писал скрипт, который использовал pdfminer.
Основные операции, которые он выполнял:
1. конвертировал pdf в xml. Вот пример результата преобразования.
<textbox id="17" bbox="384.771,365.240,431.953,377.063">
<textline bbox="384.771,365.240,431.953,377.063">
<text font="DJHCLP+TT66ACo00" bbox="384.771,365.240,396.357,377.063" size="11.823">N</text>
<text font="DJHCLP+TT66ACo00" bbox="396.337,365.240,408.821,377.063" size="11.823">G</text>
<text font="DJHCLP+TT66ACo00" bbox="408.800,365.240,419.489,377.063" size="11.823">S</text>
<text font="DJHCLP+TT66ACo00" bbox="419.469,365.240,431.953,377.063" size="11.823">O</text>
</textline>
</textbox>

Значение атрибута bbox это координаты текста X1, Y1, X2, Y2.
2. парсил xml, создавал "текстовые элементы";
3. вычислял среднее значение Y для элементов. Те элементы, у которых средний Y одинаковый, принадлежат одной строке, при условии что они находятся на одной странице;
4. сортировал элементы по номеру страницы и среднему Y;
5. сортировал элементы принадлежащие одной строке по X1;
6. собирал строки в нужном формате из отсортированных элементов.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Увы, формат pdf вообще не знает ничего про таблицы, нет в нем таких структур. А сам pdf был придуман для препринта и несет в себе только текст-графику и инструкции по их позиционированию на странице. Каждая ячейка представляет блок текста и инструкции по позиционированию, всё. Мы в свое время специально извращались, чтобы затруднить копирование, перемешивали блоки в pdf, тогда вообще копипаст представлял из себя чудовищную кашу из обрывков разных абзацев страницы. Так что формально из pdf ничего осмысленно-структурированного вытащить не получится. Если хотите как-то обмениваться таблицами, то для этого есть и xls и csv и xml...
Собственно, в pdf можно что-то положить, а вот обратно - хреново.
Да и как формат он был придуман из обрезков postscript - языка для печати, вот туда-обратно конвертация безупречная :-)
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
pdf в Питоне тяжело

преобразуй в csv, обрабатывай масками, оттуда в ексель
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы