Как распознать текст в PDF
Распознавание не превращает скан в редактируемый документ — оно подкладывает под картинку страницы невидимый текстовый слой. Внешне файл остаётся прежним, до последнего пикселя, но текст в нём теперь выделяется мышью, копируется и находится поиском. На нашем сервере эту работу делает ocrmypdf 13.4 поверх tesseract 4.1.1 с языками rus, kaz и eng. Пределы названы заранее: не больше 20 страниц и 30 МБ на файл, примерно 2–5 секунды на страницу.
Коротко о цифрах
- Что добавляется в файл
- невидимый текстовый слой под изображением страницы
- Движок
- ocrmypdf 13.4.0 поверх tesseract 4.1.1
- Языки
- rus, kaz, eng — по отдельности или вместе
- Пределы одного файла
- 20 страниц и 30 МБ
- Скорость
- примерно 2–5 секунды на страницу
Что именно происходит с файлом
Страница скана — это одна большая картинка. Символов в ней нет: поиск ищет коды букв, а в изображении лежат пиксели, и искать в них нечего. Распознавание смотрит на картинку, находит формы букв и записывает найденное как обычный текст с координатами — ровно там, где буква стоит на изображении. Слой делается прозрачным и уходит под картинку, поэтому визуально не меняется ничего.
Отсюда следствие, которое стоит принять сразу: редактировать документ после распознавания вы по-прежнему не сможете. Видимое на экране — это фотография бумаги, а не текст. Изменится другое: заработает Ctrl+F, абзац начнёт выделяться мышью, и извлечение текста перестанет отдавать пустой файл. Для подшивки договоров или отсканированного учебника это как раз то, чего от файла и хотят.
Порядок работы
- Убедитесь, что перед вами действительно скан: попробуйте выделить абзац мышью. Выделяется — распознавать нечего, текст уже есть.
- Проверьте объём: файл до 30 МБ и не длиннее 20 страниц. Документ подлиннее сначала разделите на части.
- Загрузите PDF и выберите языки, которые есть на страницах. Лишние лучше не включать — они добавляют работы на каждой странице.
- Запустите распознавание и дождитесь окончания: считайте по 2–5 секунды на страницу.
- Скачайте результат и проверьте его поиском — найдите слово, которое точно есть на первой странице.
- Если ничего не нашлось, смотрите разбор случая, когда распознавание вернуло пустой слой.
Пределы, о которых лучше знать заранее
- Файл уходит на сервер: распознавание нельзя посчитать в браузере, в отличие от девятнадцати наших клиентских инструментов.
- Зашифрованный документ отклоняется до начала работы — сначала снимите пароль, потом распознавайте.
- Страницы, где текст уже есть, пропускаются нетронутыми: смешанный документ из скана и печати обрабатывается целиком, а не падает на первой же текстовой странице.
- Изображение страницы не пережимается: вывод идёт обычным PDF, без превращения в PDF/A, и оптимизация применяется только без потерь.
- Рукописный текст не распознаётся практически никак — это ограничение самого движка, а не настроек.
Частые вопросы
Смогу ли я редактировать текст после распознавания?
Нет. Видимая часть страницы остаётся изображением, а распознанный текст лежит под ним невидимым слоем. Меняется поиск, выделение и копирование, но не сама картинка, которую вы видите на экране.
Почему файл нужно отправлять на сервер, если остальные инструменты работают в браузере?
Распознавание требует движка tesseract и растеризатора, которых в браузере нет. Мы не прячем этот факт: страница инструмента помечена как серверная, и файл действительно уходит на нашу машину, обрабатывается и удаляется.
Что будет с документом, где часть страниц уже с текстом?
Такие страницы пропускаются без изменений, а распознавание применяется только к оставшимся. Смешанные подшивки — обычное дело, и один текстовый лист посреди скана не должен ронять обработку всего файла.
Насколько вырастет размер файла?
Незначительно. Текстовый слой — это символы и координаты, они весят считаные килобайты на страницу, а изображения при выводе не переcжимаются, потому что оптимизация применяется только без потерь.