Если вы думали, что распознавание рукописных цифр — это просто игра в угадайку, то вы явно не знакомы с теми бедами, которые испытывают компьютеры при встрече с человеческим почерком. Представьте себе машину, которая пытается понять, что же там написал человек: «3» или «8», а может быть это вообще какой-то древний символ из индийской вязи?
Вот тут и начинается настоящая эпопея! Чтобы победить эту головоломку, ученые придумали использовать машины с векторной поддержкой — звучит почти как название супергероя из комиксов Marvel: «Векторная Поддержка — защитник четкости и порядка в мире цифр!»
Распознавание рукописных цифр особенно актуально в странах с многоязычием и разнообразием шрифтов, таких как Индия. Там каждый почтовый индекс — это загадка на уровне кроссворда: то английский алфавит, то деванагари, то еще какая-нибудь экзотика. В таких условиях классические методы вроде скрытых марковских моделей (HMM) и гибридов нейронных сетей (NN) стараются не отставать.
Однако HMM — это как дедушка, который хорошо помнит прошлое, но плохо справляется с неожиданными поворотами сюжета; он видит только локально и боится изменений длины и искажений рисунков. А нейронные сети — эти молодые ребята — способны распознать даже каракули на салфетке после бурной вечеринки.
Но вот пришла новая звезда — машина с векторной поддержкой (SVM), которая решила показать всем кузькину мать. SVM умеет оценивать глобальные корреляции и классифицировать модели так ловко, что иногда кажется: она читает мысли у тех самых каракульщиков!
Если бы SVM была человеком, она бы точно выиграла чемпионат по угадыванию почерка профессора-математика.
Основная проблема распознавания почерка — это его изменчивость и нелинейные искажения. Почерк меняется даже у одного человека: утром аккуратный, днем торопливый, вечером вообще загадочный. Попытки поймать эту переменчивость при помощи эластичных моделей напоминают борьбу с желе: вроде схватил за край, а оно уже скользит куда-то в сторону.
Поэтому комбинирование HMM с нейросетями дало отличный результат: первые отвечают за структуру слова, вторые — за детали каждого символа.
Системы распознавания бывают двух видов: онлайн и оффлайн. Онлайн-системы похожи на внимательного секретаря, который записывает каждое движение пера в реальном времени; для этого нужны специальные планшеты или смартфоны с функцией распознавания рукописи.
Оффлайн-системы же работают как детективы по отпечаткам пальцев: берут уже написанный текст и пытаются расшифровать его без подсказок о том, как именно он был написан.
Интересно отметить, что современные мобильные устройства уже оснащены встроенными интерфейсами для распознавания текста от руки. Правда иногда получается забавно: пишешь слово «привет», а телефон предлагает варианты типа «прицел» или «привид».
Тут можно вспомнить старую шутку про программиста:
— Почему программист не пишет письма от руки?
— Боится, что компьютер неправильно поймет его почерк!
Вернемся к техническим тонкостям. После того как устройство ввода получило сигнал о движении пера или стилуса, данные проходят через фильтры предварительной обработки и нормализации — словно стилист перед показом мод приводит модель в порядок. Затем запись делится на базовые единицы (символы или их части), которые классифицируются нейросетями и моделями Хайден Маркова (HMM).
Именно здесь происходит магия определения наиболее вероятного слова.