Как извлечь текст из PDF
Извлечение читает то, что в документе уже записано буквами: команды показать такой-то символ таким-то шрифтом. Такой текст достаётся мгновенно и точно — это не угадывание, а чтение. Но если страница представляет собой картинку, извлекать нечего: у скана нет текстового слоя, и никакая кнопка его не создаст. Всё считается в браузере, документ на сервер не отправляется.
Коротко о цифрах
- Где обрабатывается
- в браузере, файл не уходит на сервер
- Что читается
- существующий текстовый слой, изображения не распознаются
- Переносы строк
- берутся из признака конца строки движка PDF
- Нормализация
- лигатуры раскладываются, составные буквы склеиваются
- Нечитаемая страница
- пропускается, её номер выводится списком
Извлечение и распознавание — разные операции
Извлечение — это чтение уже существующих данных. В PDF, сделанном из Word или выгруженном из учётной системы, каждая надпись хранится как последовательность кодов символов со ссылкой на шрифт. Инструмент проходит по странице, собирает эти коды и склеивает в текст. Ошибиться здесь почти невозможно: буквы не угадываются, а берутся готовыми.
Распознавание — это построение текста по изображению. Программа смотрит на пиксели, находит контуры, похожие на буквы, и предполагает, какие именно это символы. Отсюда классические ошибки: «О» вместо нуля, «ll» вместо «п», склеенные слова. Это отдельная технология, она требует модели языка и всегда даёт процент ошибок. У нас её нет, и мы не выдаём одно за другое.
Практический вывод простой: если в просмотрщике текст выделяется мышью, извлечение сработает. Если выделение обводит всю страницу одним прямоугольником — перед вами картинка.
Что делает инструмент с найденным текстом
- Переносы строк берутся из признака конца строки, который отдаёт сам движок PDF: страница не схлопывается в одну длинную строку.
- Страницы разделяются пустой строкой, поэтому границы листов видно и после сохранения.
- Текст нормализуется: типографские лигатуры вроде «fi» раскладываются в обычные буквы, а казахские ә, ө, ұ, если генератор записал их буквой плюс отдельным знаком, склеиваются в один символ — иначе поиск по слову не находил бы его.
- Страница, которую движок не смог прочитать, не отменяет остальные: её номер показывается отдельно, а текст остальных страниц вы получаете полностью.
- Если текста не нашлось нигде, вы увидите прямое сообщение об отсутствующем текстовом слое, а не пустое окно без объяснений.
Почему извлечённый текст иногда выходит мусором
Внутри PDF символ хранится не буквой, а номером глифа в шрифте. Чтобы номер можно было превратить обратно в букву, в файл кладётся таблица соответствия. Некоторые генераторы её не кладут — особенно при внедрении части шрифта, — и тогда страница отлично выглядит, но копируется абракадаброй: коды есть, а расшифровки к ним нет.
Проверить это можно за секунду: откройте PDF в любом просмотрщике, выделите абзац, скопируйте и вставьте в текстовое поле. Что вставилось, то и извлечётся — ни один инструмент не восстановит соответствие, которого нет в файле. Выход один: попросить исходный документ или распознать страницу как изображение.
Порядок работы
- Проверьте в просмотрщике, выделяется ли текст мышью.
- Откройте инструмент извлечения текста и загрузите PDF — обработка пойдёт во вкладке.
- Дождитесь прохода по страницам: прогресс считается постранично.
- Просмотрите результат в окне и обратите внимание на список пропущенных страниц, если он появился.
- Скачайте .txt или скопируйте нужный фрагмент прямо из окна.
Частые вопросы
Чем извлечение отличается от распознавания?
Извлечение читает коды символов, уже записанные в файле, и потому не ошибается. Распознавание строит текст по картинке и всегда даёт процент ошибок. У нас первое; для скана нужно второе, и мы честно об этом сообщаем.
Почему в списке оказалась пропущена одна страница?
На ней движок не смог прочитать содержимое: сломан поток данных или не подгрузилась таблица шрифта. Раньше такая страница обрывала всю работу, теперь остальные страницы извлекаются полностью, а номер проблемной показывается отдельно.
Почему казахские буквы иногда ломают поиск по тексту?
Некоторые генераторы записывают ә или ө как обычную букву плюс отдельный диакритический знак. Визуально это та же буква, но кодов два, и поиск по слову её не находит. Мы приводим такие пары к единому символу при извлечении.
Сохранится ли структура: таблицы, колонки, заголовки?
Нет, на выходе плоский текст. Колонки и ячейки в PDF существуют только как координаты, поэтому в текстовом файле они превращаются в обычные строки. Для сохранения структуры нужен другой формат вывода.