Как извлечь текст из изображения с помощью OCR
OCR (оптическое распознавание символов) превращает буквы на фотографии, скриншоте или скане в текст, который можно копировать и редактировать. В этом руководстве объясняется, что влияет на результат и как получить более чистый текст.
Как работает OCR
Сначала движок OCR переводит изображение в чёрно-белое, чтобы буквы выделялись на фоне. Затем он анализирует структуру страницы и находит блоки текста, строки и слова. Наконец, модель распознавания определяет, какие символы изображены в каждом слове.
Инструмент LeedyBox использует Tesseract — движок OCR с открытым исходным кодом — через Tesseract.js. Его модель распознавания — нейронная сеть, обученная на печатном тексте, с отдельными данными для каждого языка. Движок также сообщает значение уверенности распознавания для каждого слова, а инструмент показывает среднее значение для каждого изображения.
Выбор языка
Настройка языка сообщает движку, каких символов и слов ожидать. Если читать корейский, японский или русский текст английской моделью, получится бессмыслица из похожих латинских букв, а для языков с общим алфавитом правильная модель лучше справляется с диакритическими знаками и распространёнными словами.
Если на изображении смешаны два языка, например корейский документ с английскими названиями товаров, выберите оба. Добавляйте второй язык, только если он действительно нужен для текста: каждый дополнительный язык замедляет распознавание и даёт движку больше символов, которые можно перепутать.
| Изображение | Язык | Расположение текста |
|---|---|---|
| Страница документа или статья на одном языке | Этот язык | Автоматически |
| Меню, слайд или этикетка с текстом на местном языке и английскими словами | Местный язык + английский | Автоматически |
| Обрезанный абзац, строки которого выходят в неправильном порядке | Этот язык | Единый блок текста |
| Одна строка, например заголовок, серийный номер или вывеска | Этот язык | Одна строка текста |
Советы по качеству изображения
- Разрешение: мелкий текст на изображении с низким разрешением — самая частая причина ошибок. Увеличение отчасти помогает — поэтому инструмент LeedyBox может повторно прочитать небольшие изображения в двукратном размере, — но не восстанавливает детали, которых в изображении нет. Очень крупные буквы тоже могут распознаваться менее надёжно.
- Контраст: лучше всего работает тёмный текст на однотонном светлом фоне. Бледная печать, серый текст, цветной фон и тени мешают отделять буквы. Параметр перевода в оттенки серого с повышением контраста может помочь с бледным текстом, но сравнивайте результаты: на чистом изображении он может и ухудшить распознавание.
- Ровный текст: наклонённый, изогнутый или искажённый перспективой текст, например книга, сфотографированная под углом, приводит к слиянию строк и неверным символам. Если текст заметно перекошен, поверните изображение или переснимите его.
- Обрезка: обрежьте изображение до нужного текста. Логотипы, фотографии, рамки и соседние колонки могут быть приняты за символы и могут нарушить порядок чтения.
- Сжатие: сильное сжатие JPG размывает буквы и добавляет вокруг них артефакты. По возможности сохраняйте скриншоты в PNG; см. JPG, PNG, WebP и AVIF.
Скриншоты и фотографии
Скриншоты чёткие и ровные, поэтому обычно дают хорошие результаты. Их главная слабость — размер: текст интерфейса часто высотой всего несколько пикселей. Увеличьте масштаб страницы или приложения перед тем, как сделать скриншот, и не уменьшайте скриншот после этого. Скриншот можно вставить прямо в инструмент сочетанием Ctrl+V (⌘+V на Mac).
На фотографиях добавляются неравномерное освещение, блики, размытие, перспектива и изогнутые страницы. Держите камеру параллельно странице, заполните кадр текстом, используйте равномерный свет без бликов от вспышки и коснитесь экрана, чтобы сфокусироваться. Ориентация, записанная камерой, применяется до распознавания, поэтому снимок, сделанный телефоном, повёрнутым набок, распознаётся в правильном положении.
Для файлов PDF используйте инструмент «PDF в текст» вместо того, чтобы конвертировать страницы в изображения: он читает существующий текстовый слой и запускает OCR только для страниц без него. О сканированных PDF рассказывает руководство «Извлечение текста из PDF: текстовый слой и OCR».
Рукописный текст и декоративные шрифты
Используемые здесь модели обучены на печатном тексте, поэтому рукописный текст обычно распознаётся плохо. Больше всего шансов у аккуратных раздельных печатных заглавных букв; слитное письмо и подписи редко дают пригодный результат. Похожие проблемы вызывают декоративные, рукописные или очень узкие шрифты, текст на узорчатом фоне и вертикальный текст.
Проверка и исправление результата
Относитесь к результату OCR как к черновику. Типичные ошибки — путаница 0 и O, 1, l и I или «rn» и «m»; пропущенные или неверные диакритические знаки и знаки препинания; слова, слитые или разорванные в конце строк; перемешанные строки из соседних колонок. Таблицы и многоколоночная вёрстка не сохраняются: результат — обычный текст.
Сравните текст с изображением, уделяя особое внимание числам, именам, датам, суммам и адресам, где важен каждый символ. Высокое значение уверенности не доказывает, что текст верен. Перед копированием или скачиванием текст можно отредактировать прямо в инструменте.
Конфиденциальность: что остаётся на вашем устройстве
Инструмент LeedyBox запускает движок OCR в вашем браузере: изображения читаются на вашем устройстве и не отправляются в LeedyBox. Браузер скачивает библиотеку Tesseract.js, её движок WebAssembly и данные для каждого выбранного языка с самого leedybox.com. Это обычные загрузки файлов, в которые ваши изображения не входят. Tesseract.js сохраняет языковые данные в хранилище браузера (IndexedDB), чтобы не скачивать их повторно; очистка данных сайта в браузере удаляет их.
Часто задаваемые вопросы
Почему первое изображение обрабатывается медленно?
При первом использовании языка скачиваются движок OCR и языковые данные (несколько мегабайт). Следующие изображения используют их повторно, а языковые данные хранятся в хранилище браузера для последующих посещений.
Может ли OCR сохранить вёрстку документа?
Инструмент извлекает обычный текст с переносами строк. Колонки, таблицы, шрифты и форматирование придётся восстановить вручную в редакторе.
Почему инструмент вообще не нашёл текст?
Обычно текст слишком мелкий или бледный либо выбран не тот язык. Обрежьте изображение до текста, проверьте язык или попробуйте другую настройку расположения текста.