Назад к блогу

Извлечение текста из PDF: OCR vs прямое извлечение

Извлечение текста из PDF: OCR vs прямое извлечение

«Скопировать текст из PDF» — кажущаяся простой задача, которая делится на два совершенно разных мира. Один — мгновенное извлечение из текстового PDF, где буквы лежат как буквы. Другой — распознавание сканированных страниц, где буквы существуют только как пиксели. Разберём, чем эти подходы отличаются, как понять, какой нужен в конкретном случае, и где обычно ломается процесс.

Два мира внутри PDF

Технически PDF — это контейнер для нескольких типов контента. Самые важные:

  • Слой текста — буквы хранятся как символы Unicode (или коды конкретного шрифта). Их можно выделять, копировать, искать.
  • Растровые изображения — пиксели. Если страница пришла со сканера, это просто картинка, и текста как такового внутри нет.

Когда вы открываете PDF и пытаетесь выделить слово:

  • Если выделение «прилипает» к буквам — это текстовый PDF. Подойдёт прямое извлечение.
  • Если вы можете выделить только прямоугольник, охватывающий целые блоки картинки — нужен OCR.

Прямое извлечение текста

При прямом извлечении программа просто читает поток текста, который уже есть в PDF. Это:

  • Мгновенно — даже на сотнях страниц
  • Точно — никаких ошибок распознавания
  • Сохраняет порядок чтения — если документ корректно сделан, текст идёт сверху вниз и слева направо

Используйте PDF в текст — он принимает PDF и возвращает чистый TXT-файл с текстом всех страниц.

Когда прямое извлечение не сработает

  • Сканы или фотографии страниц
  • PDF, созданные с шифрованием текста (редко, но бывает)
  • Документы, в которых вместо шрифта используется «контурный» рендеринг (некоторые дизайнерские PDF)
  • Старые PDF, в которых шрифт встроен без правильной кодировочной таблицы — тогда вместо текста извлекаются «иероглифы»

OCR: оптическое распознавание символов

OCR (Optical Character Recognition) — это распознавание пикселей как символов. Современные движки используют нейросети и распознают тексты на десятках языков, в том числе на русском и казахском.

Процесс:

  1. Изображение страницы разбивается на области (текст, картинка, таблица)
  2. Текстовые области делятся на строки и буквы
  3. Каждая буква сопоставляется с символом Unicode по форме
  4. На выходе — текстовый файл или PDF с невидимым текстовым слоем поверх картинки

Достоинства OCR

  • Работает с любыми сканами и фотографиями
  • Современные движки распознают рукописный текст (с большими оговорками)
  • Можно применить к старым архивам и оцифровать бумажные документы

Недостатки OCR

  • Не 100% точность — даже на качественных сканах в кириллице бывает 1–3% ошибок
  • Чувствительность к качеству — кривые сканы, низкое разрешение, тёмный фон роняют точность
  • Медленнее прямого извлечения — несколько секунд на страницу
  • Хуже работает с таблицами и колонками — структура часто теряется

Подготовка PDF для OCR

Чтобы OCR работал максимально точно:

  • Сканируйте в 300 DPI — это «золотой стандарт». Меньше — теряется точность, больше — никакой выгоды.
  • Используйте режим оттенков серого для текста — цветной добавляет шум, B/W режет полутона.
  • Выравнивайте страницы — если страница криво легла на сканер, OCR будет ошибаться. Используйте Повернуть PDF для базового выравнивания.
  • Чистите фон — если страница пожелтела или испачкана, OCR воспринимает шум как буквы. В продвинутых сканерах есть «фильтр фона».

Особенности для русского и казахского языков

Современные OCR-движки хорошо знают русский. Точность на чистом печатном тексте достигает 99%+. Проблемы возникают:

  • На дореволюционной кириллице (буквы Ѣ, Ѳ, І)
  • На рукописном тексте
  • На печатях с витиеватым шрифтом

С казахским сложнее: качество зависит от движка. Tesseract с языковым пакетом kaz работает приемлемо, но специфические буквы (ә, ғ, қ, ұ, ң, ө, ү, һ, і) иногда путаются с похожими русскими (а, г, к, у, н, о, у). Обязательно вычитывайте результат, особенно в фамилиях и адресах.

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

Что делать после извлечения

Распознанный текст — это сырьё. Что с ним обычно делают:

  • Поиск — индексируют документ в Elasticsearch или встроенным поиском по архиву
  • Перевод — отправляют в DeepL, Google Translate, ChatGPT
  • Преобразование в Word — для дальнейшего редактирования
  • Аналитика — извлекают суммы, даты, ИИН с помощью регулярных выражений или LLM
  • Резюмирование — пропускают через ChatGPT или Claude для краткого описания

Если задача — отредактировать документ как Word, лучше сразу использовать PDF в Word — он не только распознаёт текст, но и сохраняет форматирование.

Гибридные сценарии

Бывают PDF, где часть страниц текстовая, часть — сканированная. Например, договор на 20 страниц с пятью отсканированными приложениями. Прямое извлечение даст текст основной части, но потеряет приложения. Чистый OCR обработает всё, но добавит ошибки в основной части.

Оптимальный путь:

  1. Разделите документ через Разделить PDF
  2. Текстовые страницы — через PDF в текст
  3. Сканированные — через OCR
  4. Объедините результаты

Это занимает больше времени, но даёт лучшую точность.

Частые ошибки

  • Запускать OCR на текстовом PDF. OCR в этом случае не нужен — он только добавит ошибок. Сначала попробуйте прямое извлечение.
  • Игнорировать ориентацию. Если страница повёрнута, OCR может вообще не распознать текст. Сначала выровняйте.
  • Делать OCR на низком разрешении. Сканы в 75 DPI годятся для предпросмотра, но не для распознавания.
  • Не вычитывать результат. Даже 99% точность — это десятки ошибок на длинном документе. Особенно в фамилиях, числах, ИИН.

Часто задаваемые вопросы

Как определить, текстовый у меня PDF или сканированный?

Откройте файл в любом просмотрщике и попробуйте выделить мышью одно слово. Если получается — текстовый. Если выделяется только прямоугольная область — сканированный.

Безопасно ли использовать онлайн-сервис для извлечения текста?

Если документ содержит конфиденциальные данные — выбирайте сервисы, которые работают локально в браузере. PDF в текст не загружает содержимое на сервер.

Можно ли извлечь текст из защищённого PDF?

Сначала снимите защиту через Снять защиту с PDF, если у вас есть пароль.

Какая точность OCR на казахском?

На чистых печатных текстах — 95–98%. На сканах низкого качества — заметно ниже. Всегда проверяйте специфические буквы.

Это бесплатно?

PDF в текст — да, без регистрации и ограничений.

Заключение

Извлечение текста из PDF — это два разных процесса в одной упаковке. Для текстовых документов прямое извлечение быстрее, точнее и бесплатно — попробуйте PDF в текст. Для сканов нужен OCR, и тут начинаются нюансы качества и языковых пакетов. Знание разницы экономит часы возни с «почему текст не копируется».