Перейти к содержимому

OCR, который не хранит ваше изображение

Шесть инструментов, которые считывают с изображений текст, QR-коды и штрихкоды. Языковые пакеты загружаются с этого сайта, а ваше изображение никогда не сохраняется.

6 инструментов, без регистрации и водяных знаков

Большинство из них делают что-то одно с одним изображением. Чтобы скопировать слова с фотографии, начните с «Распознать текст с картинки»; чтобы получить текст, который на экране не выделяется, — «Текст со скриншота»; чтобы сделать скан доступным для поиска, не меняя его вида, — «Распознать текст в PDF». В заметках под списком — о том, что удивляет людей: почему разрешение важнее размера файла и где браузер — неподходящий инструмент.

QR-коды и штрихкоды

2 инструмента

Узнайте, что в QR-коде, прежде чем переходить по нему, и получите номер со штрихкода с проверкой контрольной цифры.

Что на самом деле делает OCR и чего не может

OCR распознаёт формы и возвращает символы. Он не читает. За этим нет понимания слов, поэтому «1», принятая за «l», выглядит в результате ровно так же уверенно, как каждый правильный символ вокруг. Поэтому эти страницы показывают рядом с текстом уверенность распознавателя, а не выдают чистый на вид результат, оставляя ошибки на ваше усмотрение. На чётком печатном тексте, сфотографированном прямо и в фокусе, ошибок — несколько символов на тысячу. При бликах, тени или необычном шрифте может быть гораздо хуже, и по результату этого никак не будет видно.

За этими страницами стоят два распознавателя. Первый находит текст в любом месте страницы, не зная, какой это алфавит, и читает около пятидесяти языков по одному словарю. Второй, обученный отдельно для каждого языка, стоит за ним и охватывает более 120. Если оставить выбор языка автоматическим, сначала попробует первый — и это важно, потому что неверно указанный язык — классический способ не получить ничего: польское меню, принятое за кириллицу и прочитанное как русское, уверенно возвращает пустую страницу. Если указать язык самому, задача закрепляется за распознавателем этого языка — это то, что нужно, когда вы точно знаете, что у вас.

Важно разрешение, а не размер файла. Распознавателю нужна определённая высота букв, и всё масштабируется так, чтобы её получить: страницы сканированного PDF для чтения отрисовываются с разрешением 300 DPI, а изображение измеряется по самим буквам, а не по размерам, и затем увеличивается или уменьшается как нужно. С текстом на экране чаще всего и ошибаются: в обычном масштабе буква около десяти пикселей в высоту — примерно треть того, что нужно распознавателю, поэтому скриншот перед чтением увеличивается. Если буква меньше примерно восьми пикселей, увеличивать уже нечего, и никакая обработка деталей не выдумает. В обратную сторону: 48-мегапиксельная фотография меню ничуть не точнее резкой маленькой; после определённого предела лишние пиксели стоят времени и ничего не дают.

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

Таблицы и многоколоночная вёрстка — по-настоящему трудный случай, и цифры тут полезно знать. Когда разлинованную форму читали как сплошной текст страницы, текст ячеек сливался со следующим столбцом, а треть подписей терялась — неверными были пятнадцать–двадцать процентов символов. Когда сначала находили линии сетки и читали каждую ячейку отдельно, получалось около пяти процентов. Поэтому таблица с видимыми линиями распознаётся как сетка и возвращается строками с табуляцией, которые вставляются прямо в таблицу, а колонки текста читаются в порядке чтения, а не поперёк страницы. У таблицы, выровненной одними пробелами, линий нет, и при вставке она сохраняется по везению, а не по замыслу.

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

Когда браузер действительно не подходит

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

Слитный рукописный текст не распознаётся — ни здесь, ни в любом универсальном OCR. Это распознаватели печатного текста: они узнают формы букв, а в прописи отдельных форм букв нет. Печатные буквы, написанные от руки, часто распознаются достаточно хорошо, чтобы их исправить, а не перепечатывать, — заглавные буквы, заполненная от руки форма, аккуратно написанная записка, — поэтому и существует «Распознать рукописный текст», и поэтому он показывает уверенность рядом с текстом. Чтобы как следует читать пропись, нужен распознаватель, обученный именно на рукописном тексте, а хорошие такие работают на сервере, а не во вкладке.

Облачный OCR справится с трудными документами лучше. Google, Amazon и Microsoft используют распознаватели, обученные на гораздо большем объёме данных, чем помещается во вкладку браузера, и на плохой фотографии, плотной многоколоночной странице, необычном шрифте или заполненной форме они будут заметно точнее. Как и платная программа для компьютера вроде ABBYY FineReader. Если точность на трудном документе важнее, чем то, что он остаётся на вашем компьютере, воспользуйтесь одним из них — это честное сравнение, и выбор стоит делать именно по нему.

Пакетной работе место в командной строке. Эти инструменты читают один документ, когда человек нажимает кнопку. Две тысячи сканов по расписанию — задача для OCR-программы на компьютере вроде OCRmyPDF, которая добавляет текстовый слой ко всей папке PDF одной командой, — бесплатно, с тем же распознаванием и без всяких кликов.

Кое-что просто не делается. Перспектива не исправляется: страница, сфотографированная сбоку, остаётся трапецией, исправляется только поворот, поэтому снимать строго сверху стоит лишней секунды. Сильный сгиб или изгиб у корешка книги так и остаются изогнутыми. И камеры здесь нет — распознаватели кодов декодируют уже имеющееся изображение, а не живой видеопоток.

Одна практическая плата за локальную работу: распознаватель и языковой пакет загружаются с этого сайта при первом использовании языка — это несколько мегабайт, и первый запуск поэтому медленнее последующих. Ничего не загружается с чужих CDN, и ничего не уходит обратно.

Как выбрать между похожими инструментами

Распознать текст с картинки или Текст со скриншота. Один и тот же распознаватель с разной подготовкой изображения, и разница не косметическая. Фотографию выпрямляют и выравнивают освещение; скриншот увеличивают и больше не трогают, потому что у него нет ни перекоса, ни неравномерного освещения, а обработка, будто они есть, делает только хуже. «Текст со скриншота» принимает и вставку — Ctrl+V или Cmd+V на Mac, прямо из буфера обмена, без предварительного сохранения на диск.

Распознать текст с картинки или Сканировать документ. «Распознать текст с картинки» даёт слова и выбрасывает изображение. «Сканировать документ» сохраняет изображение, выпрямляет его, отбеливает бумагу за буквами и выдаёт PDF, похожий на скан, — по желанию с невидимым слоем текста позади. Если нужно куда-то вставить текст — первый. Если нужно кому-то отправить документ — второй.

Сканировать документ или Распознать текст в PDF. «Сканировать документ» начинает с фотографий и создаёт PDF. «Распознать текст в PDF» начинает с уже существующего PDF и добавляет к нему текстовый слой. Ни один не меняет вид страниц. Сфотографировали договор — вам нужен первый; получили скан по почте — второй.

Распознать рукописный текст или Распознать текст с картинки. Тот же распознаватель, но с отключённым поиском таблиц и с показателем уверенности на видном месте, которого он заслуживает, потому что с рукописным текстом это число — самая полезная часть результата. Если текст написан слитно, его не прочитает ни одна из страниц, и страница для рукописного текста прямо об этом скажет, а не вернёт правдоподобную бессмыслицу.

Распознать QR-код или Распознать штрихкод. Квадратные коды против полосатых, и стоит понимать, что у вас в руках. Страница QR читает QR, Micro QR, Data Matrix, Aztec и PDF417 — а это посадочные талоны и водительские удостоверения, чьи коды относятся к квадратным форматам, даже когда выглядят как размазанные точки. Страница штрихкодов читает полосатые форматы розницы и логистики — EAN, UPC, Code 128, Code 39, ITF — и проверяет контрольную цифру, последнюю цифру, вычисленную из остальных: именно она отличает номер, которому можно доверять, от номера, который лишь выглядит правильным. Ни то ни другое не OCR: код — это символ с известной геометрией, поэтому его декодирование — арифметика, а не догадка о формах букв. И ломаются они по-разному. Квадратные коды содержат коррекцию ошибок и переживают царапину или логотип, напечатанный посередине; у полосатых её нет вовсе, поэтому блик поперёк полос означает, что код не прочитается, а не что номер окажется неверным.

На чём построены эти инструменты

Движки с открытым исходным кодом, которые выполняют основную работу, и спецификации, которые они реализуют.

  • TesseractApache-2.0 — распознаёт текст на 120 с лишним языках, а языковые пакеты загружаются с этого сайта.
  • ZXingApache-2.0 — читает QR-коды и штрихкоды.
  • QR code specification (Denso Wave)Specification — публикует размеры версий и уровни коррекции ошибок — от создателя формата.

Частые вопросы

Моё изображение или документ где-нибудь сохраняется?

Нет. Распознаватель и языковой пакет загружаются с этого сайта при первом использовании языка, а само изображение никуда не отправляется — поэтому после этой первой загрузки всё работает даже с выключенным Wi-Fi, и нигде ничего не сохраняется. Особенно это важно на страницах с кодами: в QR-коде может быть пароль от Wi-Fi, запрос на оплату или секрет двухфакторной аутентификации.

Насколько точно распознавание?

На чётком печатном тексте, сфотографированном прямо и в фокусе, — несколько ошибочных символов на тысячу. Точность падает при размытии, бликах, низком контрасте, необычных шрифтах и тексте, напечатанном поверх картинки. Показатель уверенности выводится рядом с текстом, чтобы вам не приходилось гадать, и если он низкий, проблема почти всегда в изображении: больше света, меньше угол, и текст на весь кадр — это исправляет большую часть.

Он распознаёт рукописный текст?

Раздельные печатные буквы от руки — часто, слитную пропись — нет. Это не ограничение этого сайта: универсальные OCR-инструменты обучены на печатном тексте и узнают формы букв, а в прописи отдельных форм букв нет. «Распознать рукописный текст» — страница, которая прямо об этом говорит и показывает, что удалось, а это полезнее уверенного неверного ответа.

Какие языки он распознаёт?

Более 120, в том числе английский, бенгальский, хинди, урду, арабский, испанский, французский, немецкий, португальский, русский, китайский, японский и корейский. Алфавит определяется по самому изображению; если одним алфавитом пользуются несколько языков — латиница, кириллица, арабское письмо, деванагари, — выбор определяет язык вашего браузера, и его всегда можно изменить.

Он использует мою камеру?

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

Таблица останется таблицей?

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

Другие категории инструментов

Инструменты для PDFКонвертация, редактирование, оптимизация и защита PDF-документов.Инструменты для изображенийКонвертация, сжатие, оптимизация и редактирование изображений.Инструменты для документовКонвертация офисных документов и электронных книг и работа с ними.Инструменты для таблицКонвертация таблиц и форматов структурированных данных.Инструменты для переводаПеревод файлов Word и Excel с сохранением оформления.Инструменты для видеоКонвертация, сжатие и редактирование видеофайлов.Инструменты для аудиоКонвертация, обрезка, объединение и настройка громкости аудиофайлов.Инструменты для архивовОткрывайте файлы ZIP, RAR, 7z и TAR и создавайте свои — ничего не сохраняется.Инструменты для разработчиковФорматирование, проверка и повседневные утилиты для разработчиков.Инструменты для текстаПовседневные инструменты для редактирования, сравнения и подсчёта текста.