• Выбор ОС для сервера Debian 9 или Ubuntu 17.10?

    @nikweter
    Системный администратор
    17.10 для сервера? И чем люди думают, когда нестабильные релизы в продакшн тянут..
    Ответ написан
    9 комментариев
  • Конвертация таблиц без границ ячеек из pdf в excel или csv?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Увы, формат pdf вообще не знает ничего про таблицы, нет в нем таких структур. А сам pdf был придуман для препринта и несет в себе только текст-графику и инструкции по их позиционированию на странице. Каждая ячейка представляет блок текста и инструкции по позиционированию, всё. Мы в свое время специально извращались, чтобы затруднить копирование, перемешивали блоки в pdf, тогда вообще копипаст представлял из себя чудовищную кашу из обрывков разных абзацев страницы. Так что формально из pdf ничего осмысленно-структурированного вытащить не получится. Если хотите как-то обмениваться таблицами, то для этого есть и xls и csv и xml...
    Собственно, в pdf можно что-то положить, а вот обратно - хреново.
    Да и как формат он был придуман из обрезков postscript - языка для печати, вот туда-обратно конвертация безупречная :-)
    Ответ написан
    Комментировать
  • Конвертация таблиц без границ ячеек из pdf в excel или csv?

    Для решения подобной задачи я писал скрипт, который использовал 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 комментария