Коротко
OCR, оптическое распознавание символов, превращает пиксели, похожие на буквы, в настоящий текст. На чёткой фотографии или скриншоте печатного текста результат близок к идеальному; на рукописном тексте, декоративных шрифтах или размытом снимке меню он почти бесполезен. Движок на этом сайте называется Tesseract, он работает в браузере с двенадцатью языковыми пакетами, а изображение остаётся на вашем устройстве. Большинство плохих результатов вызвано изображением, а не движком, и их можно исправить ещё до нажатия кнопки.
Как работает движок
Tesseract появился в Hewlett-Packard в 1985 году, в 2005 году его код открыли, а с 2006 года его поддерживает Google. Версия 4 (2018) заменила посимвольный классификатор нейросетью LSTM, которая читает всю строку целиком, поэтому она справляется со слипшимися буквами и пропорциональными шрифтами, на которых спотыкался старый движок. Конвейер такой: найти на странице области с текстом, разбить их на строки, пропустить каждую строку через сеть и дать языковой модели (словарю и статистике буквенных последовательностей) выбрать между похожими формами (l, 1, I; 0, O). Из-за этого последнего шага и важно выбрать правильный язык: английская модель, читающая немецкий текст, «исправит» straße на strasse или хуже.
В браузере движок скомпилирован в WebAssembly (около 4 МБ), а каждый языковой пакет весит 0,7–3 МБ, скачивается при первом использовании и кэшируется. Самые большие пакеты у китайского и японского, потому что в них нужно знать тысячи символов.
От чего зависит результат
Разрешение. Tesseract рассчитан на буквы высотой около 30 пикселей; ниже 20 сеть начинает угадывать. Фото страницы на телефон подходит, миниатюра шириной 400 пикселей нет. Если распознать нужно маленькое изображение, сначала увеличьте его в 2 раза. Информации от этого не прибавится, но алгоритму поиска строк станет просторнее.
Контраст и равномерность. Чёрное на белом при ровном освещении. На фото страницы под настольной лампой центр яркий, а углы серые; движок переводит изображение в чёрно-белое по одному порогу, и одна сторона страницы пропадает. Снимайте при рассеянном свете или сканируйте.
Ровность. Наклон в несколько градусов движок исправляет сам. Страница, снятая под углом, превращается в трапецию, и строки сходятся; перед распознаванием поверните и обрежьте изображение до блока текста. Обрезка заодно убирает край стола, ваш палец и соседнюю страницу, каждый из которых даёт строку мусора.
Вёрстка. Обычный текст в одну колонку распознаётся легко. Две колонки обычно определяются. Таблицы, формы, текст с обтеканием картинок и подписи на полях выходят в том порядке, какой выбрал движок, а столбцы цифр теряют выравнивание. В таблице распознавайте нужные ячейки, а не всю страницу.
Шрифт. Стандартные книжные и экранные шрифты: отлично. Узкие, вычурные, рукописные или контурные шрифты: плохо. Текст шрифтом, которого не было в обучающих данных, читается по отдельным формам, и исправления языковой модели только ухудшают результат.
Рукописный текст. Фактически не поддерживается. Tesseract обучен на печатном тексте; печатные заглавные буквы в анкете ещё могут распознаться, слитное письмо нет. Распознавание рукописи требует моделей другого семейства, и этот инструмент его не выполняет.
Языки и их смешение
Выбирайте язык, на котором написан текст, и по возможности только его. Если выбрать три языка, число вариантов для каждого символа утроится, распознавание замедлится, а точность упадёт. Смешанный текст, например китайский документ с английскими названиями товаров, как раз и требует двух языков вместе (китайский + английский): движок переключается на уровне слов. Доступно двенадцать языков: английский, упрощённый и традиционный китайский, японский, корейский, испанский, французский, немецкий, португальский, русский, итальянский и вьетнамский.
Отсканированные PDF
PDF со сканера содержит изображение каждой страницы, и текста для копирования в нём нет. Преобразуйте страницы в изображения с разрешением 200–300 dpi и распознавайте их. При 72 dpi (разрешение экрана) буквы получаются высотой 10 пикселей, и на выходе бессмыслица.
Что означают «99 %» на практике
Хорошее распознавание чистой страницы ошибается примерно в одном символе из ста. На странице в 500 слов это тридцать ошибок, в основном в цифрах, именах и пунктуации, то есть именно там, где при беглом чтении их не заметить. Сверяйте каждую цифру с оригиналом, прежде чем текст попадёт туда, где это важно: OCR даёт черновик, а не готовую расшифровку.