Как конвертировать PDF в текст на Linux

В отличие от текстового файла, PDF нельзя просто открыть и редактировать как plain‑text. Часто PDF генерируют из текста, но иногда требуется обратная операция — извлечь текст из PDF. На Linux это удобно делать из терминала или графически через приложения.
Ниже — практическое руководство: установка инструментов, базовые и продвинутые опции pdftotext, работа с защищёнными файлами, альтернативы (OCR, LibreOffice, онлайн‑сервисы), проверка качества результата и оперативные сценарии для администраторов и контент‑менеджеров.
Быстрый обзор инструментов
- pdftotext (часть poppler-utils) — надёжный командный инструмент для извлечения текста.
- Calibre — графическая утилита для конвертации электронных книг и документов, подходит для пользователей, предпочитающих GUI.
- Tesseract — OCR‑движок для распознавания текста в сканированных PDF (требует предварительного извлечения изображений или использования pdftoppm).
- LibreOffice — может открывать и конвертировать многие PDF, особенно если требуется редактирование.
Важно: pdftotext извлекает текст из PDF с цифровым слоем. Для отсканированных страниц требуется OCR.
Установка poppler (pdftotext)
Утилита pdftotext входит в пакет poppler-utils или аналогичные пакеты в разных дистрибутивах. Установите её так:
Ubuntu / Debian:
sudo apt update
sudo apt install poppler-utilsArch Linux:
sudo pacman -S popplerRHEL / CentOS / Fedora:
sudo dnf install poppler-utils
# либо
sudo yum install poppler-utilsПосле установки команда pdftotext доступна из любого терминала.
Базовая команда: конвертация целого PDF
Синтаксис:
pdftotext [опции] pdffile textfileПример — конвертировать lorem-ipsum.pdf в text.txt:
pdftotext lorem-ipsum.pdf text.txtЕсли вы не указали выходной файл, pdftotext создаст файл с тем же именем и расширением .txt (lorem-ipsum.txt).
Полезные флаги pdftotext
- -f N — начать с страницы N.
- -l N — закончить на странице N.
- -layout — сохранить базовое расположение текста (столбцы, переносы).
- -raw — попытаться извлечь «сырые» символы без переразметки.
- -nopgbrk — не вставлять разрыв страницы между страницами вывода.
- -enc encoding — задать кодировку выходного файла, часто “UTF-8”.
- -nodiag — игнорировать диагональные штампы/выровнять текст при некоторых типах разметки.
- -opw password / -upw password — пароли владельца/пользователя для защищённых PDF.
Примеры:
Сохранить макет (колонки):
pdftotext -layout lorem-ipsum.pdf output.txtИзвлечь страницы 1–5:
pdftotext -f 1 -l 5 lorem-ipsum.pdf output.txtТолько первая страница:
pdftotext -f 1 -l 1 lorem-ipsum.pdf output.txtИгнорировать диагональные штампы:
pdftotext -nodiag lorem-ipsum.pdf cleaned.txtПоменять кодировку на UTF‑8 (если надо):
pdftotext -enc UTF-8 lorem-ipsum.pdf output.txtПароль‑защищённый PDF (user/owner):
pdftotext -upw password lorem-ipsum.pdf output.txt
pdftotext -opw password lorem-ipsum.pdf output.txtКомбинация флагов (страницы 1–3 + пароль):
pdftotext -f 1 -l 3 -upw password lorem-ipsum.pdf output.txtКогда pdftotext не подходит и что делать
- Если PDF — отсканированные изображения, pdftotext вернёт мало чего полезного. Решение: OCR с Tesseract.
- Если результат содержит «мусор» или неправильную кодировку — попробовать -enc UTF-8 или -raw/-layout.
- Для сложных макетов (таблицы) pdftotext может сломать формат; для таблиц стоит использовать специализированные инструменты (Tabula, Camelot) или экспорт через LibreOffice.
Пример: OCR‑цепочка для сканов (pdf -> изображения -> tesseract):
# извлечь страницы в изображения
pdftoppm scanned.pdf page -png
# распознать каждую страницу в текст
for img in page-*.png; do tesseract "$img" "${img%.*}" -l rus+eng txt; done
# затем объединить файлы .txt в один
cat page-*.txt > scanned.txtГрафический способ — Calibre
Если вы предпочитаете GUI, используйте Calibre. Он поддерживает импорт PDF и экспорт в TXT.
Установка:
Ubuntu / Debian:
sudo apt install calibreArch Linux:
sudo pacman -S calibreRHEL / CentOS / Fedora:
sudo dnf install calibre
# либо
sudo yum install calibreЗапуск:
calibreКак конвертировать в Calibre:
- Нажмите “Add Books” и выберите PDF.
Выделите загруженный файл в центральной панели.
Нажмите “Convert Books”.
- В выпадающем списке “Output format” выберите “TXT”.
- Нажмите “OK” — конвертация начнётся. Статус задач видно внизу‑справа (Jobs).
Calibre удобен для единичных файлов и когда нужен GUI‑контролируемый экспорт. Для пакетной автоматизации предпочтительнее pdftotext.
Пакетная обработка (скрипты)
Быстрая команда для конвертации всех PDF в текущей папке:
for f in *.pdf; do
pdftotext "$f" "${f%.pdf}.txt"
doneЕсли хочется пропускать уже существующие .txt:
for f in *.pdf; do
out="${f%.pdf}.txt"
[ -f "$out" ] && continue
pdftotext "$f" "$out"
doneСценарий для сервера: логировать ошибки и сохранять кодировку UTF‑8.
mkdir -p logs
for f in *.pdf; do
out="/var/converted/${f%.pdf}.txt"
pdftotext -enc UTF-8 "$f" "$out" 2>>logs/convert_errors.log || echo "Ошибка: $f" >> logs/failed.log
doneПроверка качества и критерии приёмки
Критерии приёмки текстового файла после конвертации:
- Текст читаем и не содержит последовательных неправильных символов в >5% строк.
- Заголовки и списки распознаются логически (не все заголовки обязаны сохранить формат, но текст должен быть последовательным).
- Для документов с таблицами — ключевые данные сохраняются в одном или нескольких столбцах, либо есть заметка о необходимости ручной проверки.
- Для сканов — точность OCR удовлетворяет требованиям (обычно >90% по выборочной проверке).
Проверку можно автоматизировать простым скриптом, который считает количество пустых строк, символов замены и длину строк.
Рекомендации по улучшению результата
- Попробуйте -layout, если текст сильно смещается при простой конвертации.
- Для таблиц используйте экспортеры CSV из LibreOffice или специализированные библиотеки (Tabula, Camelot).
- Для многоязычных документов указывайте правильную кодировку и, при OCR, набор языков (tesseract -l rus+eng).
- Если встречается шрифт с нестандартной кодировкой — экспортируйте через LibreOffice, а затем снова сохраните в TXT.
Роли и чек‑листы
Для системного администратора:
- Установить poppler-utils и tesseract (если нужно OCR).
- Настроить каталог для результатов и ротацию логов.
- Настроить cron/сервис для пакетной обработки.
Для контент‑менеджера / автора:
- Проверить финальный .txt на семантические ошибки.
- Если важен формат — экспортировать через LibreOffice и вручную корректировать.
Для разработчика (интеграция в пайплайн):
- Пакетировать команду в контейнер/CI шаг.
- Обрабатывать ошибки и уведомлять через лог/почту.
Альтернативные подходы и когда их выбирать
- LibreOffice: когда нужен ручной контроль и редактирование после открытия PDF.
- OCR (Tesseract): когда PDF — скан или изображение.
- Онлайн‑сервисы: удобно, но не используйте для чувствительных данных.
- Библиотеки для разработчиков (pdfminer.six, PyPDF2): если нужна более тонкая программная обработка и парсинг.
Мини‑методология: быстрый рабочий процесс
- Оценить тип PDF: цифровой слой или скан.
- Если цифровой — использовать pdftotext с -layout и -enc UTF-8. Если скан — OCR.
- Запустить тестовую конвертацию 1–3 страниц и проверить качество.
- Подключить пакетную обработку, добавить логирование и критерии приёмки.
- При необходимости провести пост‑обработку (удаление лишних переносов, нормализация кодировки).
Шпаргалка (cheat sheet)
- Установка: sudo apt install poppler-utils
- Конвертировать все: pdftotext file.pdf
- Страницы: pdftotext -f 1 -l 3 file.pdf out.txt
- Сохранить макет: pdftotext -layout file.pdf out.txt
- Пароль: pdftotext -upw password file.pdf out.txt
- OCR: pdftoppm file.pdf page -png && tesseract page-1.png page-1 -l rus
FAQ
Как извлечь текст из сканированного PDF?
Используйте OCR: сначала преобразуйте страницы в изображения (pdftoppm), затем распознайте их с помощью Tesseract (tesseract image.png output -l rus+eng).
Можно ли автоматически конвертировать тысячи PDF?
Да. Используйте пакетные скрипты и механизмы очередей. Следите за логами и проверяйте выборочные файлы по критериям приёмки.
Безопасно ли использовать онлайн‑сервисы для конвертации?
Не рекомендуется для конфиденциальных документов. Для таких случаев используйте локальные инструменты (pdftotext, tesseract, LibreOffice).
Краткое резюме
pdftotext — основной инструмент для быстрой и надёжной конвертации PDF с цифровым текстовым слоем. Для сканов требуется OCR, а для сложных макетов — специализированные инструменты. Автоматизируйте пакетную обработку скриптами и включайте проверку качества по заранее определённым критериям.
Факт‑бокс:
- pdftotext — часть набора Poppler; подходит для большинства цифровых PDF.
- Calibre удобно использовать при работе через GUI.
- Для сканов — Tesseract + предварительное извлечение изображений.
Глоссарий (1‑строчно):
- OCR — оптическое распознавание текста со сканов и изображений.
Важное: для чувствительных документов избегайте облачных конвертеров и тестируйте автоматическую обработку на контрольных примерах.
Похожие материалы
Как поставить пароль на документ Office и PDF
Ресурсы по интернет‑безопасности для детей
Создать и безопасно использовать RAM-диск в Linux
Как обновлять приложения на Mac — полное руководство
Moment.js в React — форматирование, парсинг и манипуляции