Распознать текст на изображении
Считайте напечатанный текст с фото, скриншота или скана и скачайте его в .txt — или в JSON с координатами и уверенностью для каждого блока.
Перетащите файлы сюда
.jpg, .jpeg, .png, .webp, .bmp, .gif, .avif · до 100 МБ
Больше настроекМеньше настроек
Как распознать текст
- 1
Добавьте изображение
JPG, PNG, WebP, BMP, GIF или AVIF, до 20 файлов. Формат берется из содержимого файла, поэтому даже с неверным расширением он попадает в правильный декодер.
- 2
Выберите язык текста
Для большинства сканов хватает одного языка. Добавляйте второй или третий, только если на странице они смешаны. Каждый лишний язык стоит одного скачивания и немного точности.
- 3
Нажмите «Распознать текст» и скачайте .txt
Вы получаете распознанный текст, число символов и среднюю уверенность. Переключите вывод в JSON, если нужны еще и координаты.
Что браузерный OCR может прочитать, а что нет
Здесь работает Tesseract, тот же движок, что стоит за большинством open-source OCR. Он скомпилирован в WebAssembly и запускается прямо во вкладке. С печатным текстом он справляется хорошо: книжные страницы, скриншоты, счета, вывески, формы, любой обычный шрифт разумного размера. Плохо он читает рукопись, сильно стилизованные заголовочные шрифты, текст поверх пестрых фотографий и все, что снято под сильным углом. Разрешение важнее размера файла: четкий скриншот шириной 1500 пикселей с абзацем текста читается лучше, чем десятимегапиксельное фото того же абзаца, снятое с другого конца комнаты. Если средняя уверенность падает ниже 30, инструмент сообщает, что ничего читаемого не нашел, а не выдает страницу правдоподобной ерунды.
Переключатель предобработки и когда он помогает
С включенной предобработкой изображение переводится в градации серого, а затем бинаризуется методом Отсу: порог между черным и белым выбирается по гистограмме самого изображения, а не фиксированным числом. Это сильно помогает на сфотографированных страницах с неравномерным освещением, на бледных чеках и серых сканах. Фон, который распознаватель иначе принял бы за текст, убирается. Зато чистому тексту, светлому тексту на темном фоне и цветному тексту на цветном фоне предобработка вредит: жесткий порог может «съесть» буквы. Включайте ее после неудачного обычного прогона, а не заранее.
Обычный текст или текст с координатами
По умолчанию вы получаете обычный .txt с теми же переносами строк, которые увидел движок. Опция JSON вместо этого отдает массив блоков. У каждого блока есть распознанный текст, уверенность и ограничивающий прямоугольник из четырех чисел: x, y, ширина и высота в пикселях того изображения, которое попало в распознавание. Это удобно, когда нужно подсветить результаты поверх оригинала, вытащить одно поле из формы или выяснить, какой участок страницы утянул среднюю уверенность вниз.
Ни изображение, ни текст не загружаются на сервер
Движок распознавания и языковые данные скачиваются один раз и кэшируются браузером. Дальше все работает локально: изображение декодируется во вкладке, там же распознается, там же собирается текстовый файл. Содержимое никуда не отправляется. Это важно, когда вы читаете договор, расчетный листок или документ, удостоверяющий личность.
Частые вопросы
Какие языки поддерживаются?
Английский, русский, немецкий, французский, испанский, китайский (упрощенный), арабский и японский. На смешанных страницах можно комбинировать до трех языков, но один правильно выбранный язык почти всегда точнее, чем два.
Отправляется ли мое изображение на сервер?
Нет. OCR-движок — это WebAssembly, который работает внутри браузера. Единственный сетевой трафик — разовая загрузка движка и выбранных языковых данных. Картинка и распознанный текст остаются на вашем устройстве.
Почему первый запуск такой медленный?
При первом запуске скачивается сам движок, около 3 МБ, плюс данные для выбранного языка, от 0,7 до 3 МБ в зависимости от языка. Браузер кэширует и то и другое, поэтому со второго запуска распознавание начинается сразу.
Читает ли сервис рукописный текст?
Неустойчиво. Модели обучены на печатном шрифте. Рукопись распознается либо неправильно, либо падает ниже порога уверенности. Очень аккуратные печатные заглавные иногда проходят, обычный курсив — нет. Любой результат по рукописи воспринимайте как черновик для проверки, а не готовую расшифровку.
Что делать, если текст не найден?
Сначала включите предобработку и попробуйте еще раз: это решает большинство проблем с неравномерным освещением. Если не помогает, почти всегда виновато разрешение. Пересканируйте или перефотографируйте так, чтобы буквы были хотя бы двадцать пикселей высотой. Еще сильно помогает обрезать изображение до одного текста и выбрать подходящий язык.
Какое разрешение нужно для хорошего результата?
Старайтесь, чтобы высота букв была примерно 20–40 пикселей. Для обычного скана документа это около 300 DPI. Ниже буквы начинают слипаться, и точность резко падает. Выше вы в основном тратите время: от ширины 10000 пикселей картинка читаемее не становится, а все, что больше 12000 пикселей по любой стороне, перед распознаванием уменьшается.
Могу ли я получить положение каждого слова?
Вы получаете положение каждого блока. Блок — та единица, в которой движок выдает результат: текст, уверенность и ограничивающий прямоугольник в пикселях. Выберите вывод JSON вместо обычного текста, и скачается именно этот массив, а не плоский файл.
Будет ли это работать на телефоне?
Да, с двумя оговорками. При первом запуске нужно скачать несколько мегабайт по той сети, которая у вас есть. Распознавание на телефоне занимает примерно в три раза больше времени, чем на ноутбуке: полный скан страницы может обрабатываться до полуминуты. Все при этом по-прежнему выполняется локально.