Конвертировать PDF файлы в вики?

Вопрос или проблема

Я ищу способ конвертировать очень неаккуратный набор PDF-ссылок в wikitext. В идеале, я хотел бы сделать этот процесс простым приложением, которое можно запустить один раз, но понимаю, что такого инструмента может не быть. Использование ряда промежуточных инструментов возможно.

Предпочтительно, чтобы промежуточные инструменты соответствовали следующим требованиям (первые два – это всего лишь предпочтения и могут быть проигнорированы в пользу функциональности):

  • Конвертировать в HTML, а не в Word
  • Иметь графический интерфейс, а не командную строку.
  • Могут обрабатывать несколько сотен страниц PDF.
  • Являются открытым исходным кодом (хотя допустима “бесплатная пробная версия”).
  • MediaWiki является предпочтительным форматом вывода, но другие форматы будут приемлемы при условии, что:
    • он может быть размещен на LAMP-стеке или является бесплатной SaaS-вики
    • многопользовательский доступ
    • возможность сделать вики приватной

*Оспариваемые PDF-документы трудны в использовании, так как они часто ссылаются на страницы внутри себя и друг на друга без внутренней ссылочной структуры. Они также используют форматирование в два столбца, что большинство инструментов для конвертации в HTML/текст, которые я пробовал до сих пор (Calibre/FoxItPDF), не могут обработать – они либо экспортируют текст в одну строку, либо создают элементы параграфов, которые чередуются между двумя столбцами – возможно, можно преобразовать эти выходные файлы с помощью jQuery, но это много работы за небольшую выгоду.

Windows 10 или Linux (Ubuntu) будут рассмотрены как доступные платформы. Веб-приложения или Google Drive также возможны.

Я предлагаю вам выполнить следующие шаги:

PDF → Word → HTML → MediaWiki

PDF в Word

Существует несколько бесплатных онлайн-инструментов, которые выполняют конвертацию с очень хорошим качеством. Мне больше всего нравится SmallPDF. Я думаю, что этот подход лучше, чем pdftotext, потому что он имеет хорошие эвристики для определения заголовков и сохранения важного форматирования (жирный, курсив).

Word в HTML

Вы можете использовать Pandoc для выполнения конвертации из DOCX в HTML:

pandoc -i file.docx -s -o file.html

Ключ -s (standalone) важен, потому что он сохранит информацию о кодировке в HTML-файле. Если вы откроете файл в веб-браузере, вы захотите увидеть его корректно.

Одно из замечаний, которое я заметил во время тестирования, заключается в том, что слегкаIndented параграфы могут быть расценены Pandoc как <blockquote>. Учитывайте это при выполнении ваших конвертаций. Вам также может потребоваться проверить HTML-файл перед выполнением последнего шага. Формулы, вероятно, будут сломаны.

HTML в MediaWiki

Вы также можете выполнить этот шаг с помощью Pandoc. Теоретически, шаг HTML может быть не нужен, однако, на мой взгляд, полезно проверить, что все в порядке с помощью браузера для быстрого предварительного просмотра.

pandoc -i file.html -t mediawiki -o file.wiki.txt

Пример

Я протестировал этот метод с документом Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice. Исходный PDF выглядит так:

оригинальный PDF

HTML-файл (после первых двух шагов) довольно хорош:

html-выход

Отступы происходят из параграфов, которые расценивались как цитаты. Я считаю, что это можно исправить, подкорректировав DOCX файл в случае необходимости.

Наконец, вот пример кода MediaWiki:

<blockquote>'''Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice'''

David Adrian''¶'' Karthikeyan Bhargavan''∗'' Zakir Durumeric''¶'' Pierrick Gaudry''†'' Matthew Green''§''

J. Alex Halderman''¶'' Nadia Heninger''‡'' Drew Springall''¶'' Emmanuel Thomé''†'' Luke Valenta''‡'' Benjamin VanderSloot''¶'' Eric Wustrow''¶'' Santiago Zanella-Béguelin''&quot;'' Paul Zimmermann''†''
</blockquote>
== ''∗'' INRIA Paris-Rocquencourt ''†'' INRIA Nancy-Grand Est, CNRS, and Université de Lorraine ==

<blockquote>''&quot;'' Microsoft Research ''‡'' University of Pennsylvania ''§'' Johns Hopkins ''¶'' University of Michigan

Для дополнительных материалов и контактной информации, посетите [https://weakdh.org/ WeakDH.org.]

'''АННОТАЦИЯ'''

Мы исследуем безопасность обмена ключами Диффи-Хеллмана, используемого в популярных Интернет-протоколах, и находим, что он менее безопасен, чем широко считается. Сначала мы представляем Logjam, новую уязвимость в TLS, которая позволяет атакующему встать между двумя сторонами и понизить уровень соединений до "экспортного" Диффи-Хеллмана. Для выполнения этой атаки мы реализуем метод дискретного логарифма через решето числовых полей. После недельной предкомпьютера для заданной 512-битной группы, мы можем вычислять произвольные дискретные логарифмы в этой группе примерно за минуту. Мы обнаружили, что 82% уязвимых серверов используют одну 512-битную группу, что позволяет нам скомпрометировать соединения с 7% сайтов HTTPS из списка Alexa Top Million. В ответ на это, в крупных браузерах происходят изменения, чтобы отклонить короткие группы.

Мы продолжаем рассматривать Диффи-Хеллмана с 768-битными и 1024-битными группами. Мы оцениваем, что даже в случае 1024-битов, вычисления выглядят правдоподобными с учетом ресурсов государств. Небольшое количество фиксированных или стандартизированных групп используется миллионами серверов; выполнение предвычислений для одной 1024-битной группы позволит осуществить пассивное прослушивание 18% популярных сайтов HTTPS, а вторая группа позволит расшифровать трафик 66% VPN на базе IPsec и 26% SSH серверов. Тщательное изучение опубликованных утечек из NSA показывает, что атаки агентства на VPN согласуются с тем, что удалось достичь такого прорыва. Мы заключаем, что переход на более надежные методы обмена ключами должен быть приоритетом для интернет-сообщества.
</blockquote>
= ВВЕДЕНИЕ =

<blockquote>Обмен ключами Диффи-Хеллмана широко используется для установления сеансовых ключей в интернет-протоколах. Это основной механизм обмена ключами в SSH и IPsec и популярный вариант в TLS. Мы рассматриваем, как Диффи-Хеллман обычно реализуется и применяется с этими протоколами, и находим, что на практике он зачастую предлагает меньшую безопасность, чем широко считается.

После некоторых экспериментов я разработал мульти-программное решение в командной строке Linux. Оно очень хорошо сохранило форматирование в моих попытках, так что я могу сказать, что доволен результатами конвертации в HTML. Выходные данные MediaWiki все еще могут время от времени нуждаться в некоторой доработке, но в целом мы получили очень хороший результат.

Установка инструментов

Мы будем использовать следующие командные инструменты:

Их можно установить с помощью следующих команд (предполагается, что используется Ubuntu Linux 14.04. Настройте инструкции для вашей версии Linux. Некоторые из этих инструментов также могут работать на Windows, но я не предоставляю инструкции по установке или использованию для них.)

Для Poppler:

sudo apt-get install poppler-utils

Для Pandoc: Руководство по установке

Pandoc конкретно рекомендует загрузить .deb и установить из него – однако, если вас не смущает старая версия и вы готовы рискнуть любыми проблемами, связанными с ней, то sudo apt-get install pandoc может сработать вполне хорошо.

Использование Poppler для извлечения текста из PDF в HTML

Poppler включает несколько инструментов командной строки для извлечения таких вещей, как изображения из PDF, и они более подробно описаны здесь.

Шаги:

  1. Перейдите в каталог, содержащий ваши PDF для конвертации.

  2. Создайте подпапку для выходных файлов: sudo mkdir dirname.

  3. Выполните следующую команду:

    pdftohtml -s -p -fmt png -nodrm "file.pdf" "file/file.html"
    

Эта команда создаст множество файлов, и именно поэтому мы помещаем результаты в собственный каталог. Она извлечет все изображения из файла, так что все они будут сохранены там. Она также создаст два HTML-файла, один из которых будет содержать план, а другой будет содержать весь текст в формате, очень близком к оригиналу.

Вы можете ввести pdftohtml -h, чтобы лучше понять доступные параметры.

Я объяснил параметры, используемые здесь, для понимания команды:

  • -s содержит весь вывод в одном HTML-документе (исключая план).
  • -p пытается заменить внутренние ссылки PDF на HTML-ссылки.
  • -fmt контролирует формат вывода изображений, при этом png и jpg являются допустимыми вариантами.
  • -nodrm игнорирует ограничения управления правами на загрузку для PDF.
  • -i игнорирует изображения. Я этого не использовал, но было бы разумно упомянуть, так как в некоторых случаях это может существенно ускорить ваш формат вывода.

Альтернативный метод: Poppler pdftotext

Poppler также имеет команду pdftotext. Это единственный инструмент, который я нашел до сих пор, который хорошо обрабатывает извлечение PDF в случае наличия двух колонок текста. В то время как другие инструменты печатали текст прямо слева направо или чередовали строки текста из двух колонок, Poppler правильно собрал текст в правильном порядке.

Выполните следующую команду:

pdftotext -htmlmeta "file.pdf" "file.html"

Замените “file” на имя файла, который вы хотите разобрать, и на имя HTML-файла, в который вы хотите записать ваш текстовый вывод.

Опция -htmlmeta создает HTML-версию текста в вашем PDF. (Это гораздо менее эффектно, чем предыдущая команда, и просто помещает текст в pre теги). Вы должны увидеть HTML-файл в вашем каталоге, который вы можете открыть, чтобы проверить результаты. В зависимости от форматирования вашего исходного PDF-файла, вы можете обнаружить, что эффективность Poppler изменяется. Вы можете попробовать запустить pdftotext -h для получения информации о других командных параметрах, которые могут улучшить или ухудшить ваши результаты.

Использование Pandoc для преобразования HTML в MediaWiki

(или почти любой другой формат!)

Pandoc – это очень полезная программа командной строки, которая конвертирует входной файл практически в любой формат в совершенно другой выходной формат. Оставаясь в том же каталоге, просто выполните следующую команду:

 pandoc file.html -f html -t mediawiki -s -o file.txt

Эта команда просто берет HTML-файл и записывает его в эквивалентном формате MediaWiki в текстовый файл. Я предоставил некоторые разъяснения параметров для базового использования на случай, если вам нужно преобразовать в другой формат.

  • -f Формат входного файла.
  • -t Формат выходного файла.
  • -s Standalone добавляет заголовок и нижний колонтитул к документу, а не производит фрагмент документа.
  • -o Имя выходного файла.

Для получения дополнительной информации о Pandoc, прочитайте руководство пользователя.

Возможно, вы столкнетесь с ошибкой с Pandoc, предположительно, вызванной тем, что ваш файл слишком большой. Я столкнулся с этой ошибкой, и некоторые решения можно найти здесь.

Необязательно: очистка плохой кодировки

В зависимости от кодировки вашего PDF вы можете обнаружить странные символы Unicode в вашем HTML-выходе. Этот шаг предназначен для очистки этого вывода до возможной степени точности. ftfy, означает исправляет текст для вас, и это библиотека Python с интерфейсом командной строки. Мы будем использовать командную строку для очистки наших файлов. Этот шаг выполняется перед использованием Pandoc.

Чтобы установить ftfy:

pip install --user ftfy

# или
git clone https://github.com/rspeer/python-ftfy.git
cd python-ftfy
pip install --user -e .

Хотя по умолчанию это обычно и, возможно, вам потребуется получить дополнительные рекомендации, чтобы убедиться, что каталог, в который pip install --user устанавливает исполняемые файлы находится в вашем поисковом пути. Недавние версии требуют Python 3; я использовал Python 2.x с ftfy 4.1.1 для этого ответа.

Используя тот же каталог, введите следующую команду:

 ftfy -o file_clean.html --preserve-entities file.html

Опционально, вы можете включить опцию --guess, чтобы дать ftfy угадать вашу кодировку, или --encoding, если вы знаете вашу кодировку. Это может дать лучшие результаты.

Ответ или решение

Конвертация PDF-файлов в вики-формат: подробное руководство

Конвертация PDF-документов в формат MediaWiki может быть сложной задачей, особенно если исходные документы содержат много колонн, сложное форматирование и внутренние ссылки. В данном руководстве мы предложим подробное пошаговое решение, которое поможет вам эффективно выполнить эту задачу с использованием различных инструментов.

Шаг 1: Конвертация PDF в HTML

Первым шагом необходимо преобразовать PDF-документ в HTML. Это можно сделать с помощью инструментов, доступных для Windows или Linux.

Использование Poppler

Poppler — это набор утилит для работы с PDF, которые обеспечивают высокое качество конвертации. Один из наиболее полезных инструментов среди них — pdftohtml.

  1. Убедитесь, что Poppler установлен:

    sudo apt-get install poppler-utils
  2. Выполните команду для конвертации PDF в HTML:

    pdftohtml -s -p -fmt png -nodrm "ваш_файл.pdf" "ваш_файл.html"

    Здесь параметры выполняют следующие функции:

    • -s комбинирует все выводимые данные в один HTML документ.
    • -p пытается сохранить внутренние ссылки PDF в виде HTML-ссылок.
    • -fmt указывает формат изображений, например, png.
    • -nodrm игнорирует ограничения управления правами на документы.

Помимо pdftohtml, вы также можете воспользоваться pdftotext для извлечения текста, особенно если PDF содержит колоночное форматирование. Это можно сделать следующим образом:

pdftotext -htmlmeta "ваш_файл.pdf" "ваш_файл.html"

Шаг 2: Конвертация HTML в MediaWiki

После того как вы получите файл HTML, следующим шагом будет конвертация этого HTML в формат MediaWiki. Наиболее удобным способом для этого является использование Pandoc.

  1. Установите Pandoc:

    sudo apt-get install pandoc
  2. Затем выполните следующую команду:

    pandoc ваш_файл.html -f html -t mediawiki -s -o ваш_файл.wiki.txt

Эта команда конвертирует HTML в формат MediaWiki, сохраняя при этом основное форматирование.

Шаг 3: Очистка и исправление кодировки

Часто в процессе конвертации могут появляться странные символы и неправильная кодировка. Для исправления этого можно использовать утилиту ftfy (fixes text for you).

  1. Установите ftfy:

    pip install --user ftfy
  2. Используйте команду для очистки файла:

    ftfy -o ваш_файл_clean.html --preserve-entities ваш_файл.html

Итоговый результат

После выполнения всех шагов вы должны получить файл в формате MediaWiki, который можно будет использовать в вашей вики-платформе. Такой подход не только упрощает процесс обработки больших объемов PDF-документов, но и минимизирует ручную работу, сохранив значительное количество первоначального форматирования.

Рекомендации по использованию

  1. Проверка результата: После конвертации обязательно проверьте получившийся файл на наличие ошибок и некорректных переходов. Это можно сделать, используя текстовый редактор или платформу для управления вики.

  2. Оптимизация рабочего процесса: Если вам нужно будет часто выполнять подобные конвертации, подумайте о создании сценариев, которые автоматизируют этот процесс, особенно если вы работаете с большим количеством файлов.

Следуя данному руководству, вы сможете эффективно конвертировать PDF-файлы в формат MediaWiki, минимизировав потенциальные проблемы, связанные с форматированием и кодировкой.

Оцените материал
Добавить комментарий

Капча загружается...