Извлечение чистого текста из PDF в формат TXT

Иван Корнев·27.05.2026·5 мин

Чтобы конвертировать PDF в TXT и получить чистый текст без лишнего оформления, используйте утилиту pdftotext (для цифровых документов) или движок OCR, такой как Tesseract (для сканов). Ключевой этап — постобработка: удаление лишних переносов строк, двойных пробелов и артефактов верстки с помощью регулярных выражений. Выбор метода зависит от того, можно ли выделить текст в исходном файле курсором мыши.

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

Оглавление

Как определить тип PDF-файла

Прежде чем выбирать инструмент, проверьте природу документа:

  1. Откройте файл в любом просмотрщике.
  2. Попробуйте выделить фрагмент текста мышью.
    • Выделяется: Это текстовый (цифровой) PDF. Текст уже распознан, нужно лишь извлечь его и убрать форматирование.
    • Не выделяется (или выделяется как картинка): Это сканированный PDF. Требуется оптическое распознавание символов (OCR).

Метод 1: Цифровые PDF (pdftotext)

Для файлов с встроенным текстовым слоем лучшим решением является использование консольной утилиты pdftotext (входит в пакет poppler-utils). Она игнорирует шрифты, цвета и позиции, выдавая поток символов.

Установка

  • Linux: sudo apt-get install poppler-utils
  • macOS: brew install poppler
  • Windows: Скачайте бинарные файлы Poppler и добавьте путь к bin в переменные среды.

Команда конвертации

Базовый синтаксис:

pdftotext input.pdf output.txt

Ключи для чистого результата

Чтобы минимизировать проблемы с версткой, используйте дополнительные параметры:

ПараметрОписание
-layoutСохраняет приблизительное физическое расположение текста (полезно для таблиц, но может добавить лишние пробелы).
-rawИгнорирует порядок чтения колонок, выдает текст в порядке хранения в файле (часто дает более «сырой», но предсказуемый результат для последующей очистки).
-enc UTF-8Явно задает кодировку вывода (рекомендуется для кириллицы).

Рекомендация: Для максимального «очищения» от верстки лучше использовать режим без -layout, а затем править абзацы скриптом.

Метод 2: Сканированные документы (OCR)

Если текст не выделяется, его нужно распознать. Стандарт индустрии среди бесплатных решений — Tesseract OCR.

Подготовка изображений

Качество OCR напрямую зависит от качества входных данных.

  1. Конвертируйте PDF в изображения (PNG/JPG/TIFF) с разрешением 300 DPI.
  2. Убедитесь, что текст контрастный, а фон белый.

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

Пример команды для русского языка:

tesseract input_page.png output_text -l rus+eng

Где -l rus+eng указывает на наличие русского и английского текста.

Для многостраничных PDF удобно использовать обертки вроде pdf2image (Python) или онлайн-конвертеры PDF в JPG, а затем применять Tesseract пакетно.

Очистка текста: удаление мусора

Даже лучшие конвертеры оставляют артефакты: разрывы строк внутри предложений, лишние пробелы, знаки дефисации. Автоматизируйте очистку.

Основные проблемы и решения (Regex)

  1. Лишние переносы строк (разрывы внутри абзацев) Часто текст выглядит так:

    Это пример разорванного предложения.

    Решение: Заменить одиночный перенос строки на пробел, а двойной (конец абзаца) оставить. Логика: Найти \n, перед которым нет пустой строки, и заменить на пробел.

  2. Двойные и тройные пробелы Решение: Заменить все последовательности из 2+ пробелов на один пробел. Regex: \s{2,}

  3. Неразрывные пробелы и спецсимволы В PDF часто встречаются символы   или юникод-пробелы. Решение: Привести все виды пробельных символов к обычному ASCII пробелу (код 32).

  4. Дефисы переноса Слова вида инфор- мация. Решение: Удалить дефис и пробел/перенос после него, если они находятся внутри слова.

Пример простой обработки на Python

Если вы работаете с большими объемами, простой скрипт на Python сэкономит часы ручной правки:

import re

def clean_text(text):
    # Замена различных видов пробелов на обычный
    text = re.sub(r'[\xa0\u2000-\u200b\u202f\u205f\u3000]', ' ', text)
    
    # Удаление переносов слов (дефис + пробел/перенос)
    text = re.sub(r'(\w)-\s+(\w)', r'\1\2', text)
    
    # Объединение разорванных строк (упрощенно)
    # Заменяем одиночный перенос строки на пробел
    text = re.sub(r'(?<!\n)\n(?!\n)', ' ', text)
    
    # Удаление множественных пробелов
    text = re.sub(r' {2,}', ' ', text)
    
    # Удаление пустых строк в начале и конце
    return text.strip()

Онлайн-сервисы vs Локальное ПО

КритерийЛокальное ПО (pdftotext, Tesseract)Онлайн-конвертеры
КонфиденциальностьВысокая (данные не покидают ПК)Низкая (риск утечки персональных данных)
СкоростьЗависит от мощности ПК, быстро для пакетных задачЗависит от интернета и очереди на сервере
Качество очисткиТребует настройки постобработкиЧасто выдают «грязный» текст с сохранением верстки
СложностьТребует навыков командной строкиПросто: загрузил → скачал

Никогда не загружайте в онлайн-конвертеры документы с персональными данными, паспортными сведениями, финансовой отчетностью или коммерческой тайной. Используйте только локальные инструменты.

Частые ошибки при конвертации

  1. Игнорирование кодировки Результат содержит «кракозябры» вместо кириллицы. Решение: Всегда явно указывайте кодировку UTF-8 при экспорте (-enc UTF-8 в pdftotext).

  2. Попытка распознать скан как текст Использование pdftotext на сканированном документе выдаст пустой файл или набор случайных символов. Решение: Всегда проверяйте тип файла перед выбором инструмента.

  3. Сохранение табличной структуры в TXT TXT не поддерживает ячейки. Таблицы превращаются в нечитаемую кашу. Решение: Если таблицы критичны, конвертируйте PDF в CSV или Excel, а не в TXT. Для TXT лучше вручную или скриптом заменять разделители столбцов на табуляцию или тире.

  4. Отсутствие проверки результата Автоматические методы не идеальны. Решение: Всегда выборочно сверяйте первые, последние и средние страницы полученного TXT с оригиналом.

FAQ

Можно ли конвертировать PDF в TXT через Microsoft Word? Да. Откройте PDF в Word (Файл → Открыть). Word выполнит конвертацию. Затем скопируйте текст и вставьте в Блокнот. Минус: Word часто искажает сложную верстку и добавляет много лишних разрывов страниц.

Почему в TXT файле много пустых строк? Это артефакты верстки PDF (межстрочные интервалы, отступы). Используйте поиск и замену: найдите два символа новой строки подряд и замените на один, повторяя процедуру до исчезновения пустот.

Какой инструмент лучше для книг? Для книг с простым потоком текста лучше всего подходит pdftotext с последующей очисткой regex-ами. Для сложных журналов с колонками лучше использовать специализированные программы типа Adobe Acrobat Pro (экспорт в Rich Text Format с последующим сохранением в TXT), так как они лучше понимают порядок чтения колонок.

Безопасно ли использовать бесплатные онлайн-конвертеры? Только для публичных, неконфиденциальных данных. Файлы часто хранятся на серверах компании от нескольких часов до неопределенного срока. Для приватных документов используйте только оффлайн-софт.