Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Создание удобной рабочей среды в Linux

CellWriter: Распознаватель рукописного текста для Линукс с открытыми кодами

Оригинал: CellWriter: Open source handwriting recognition for Linux
Автор: Nathan Willis
Дата: 9 ноября 2007
Свободный перевод: А.Дмитриев
Дата перевода: 24 ноября 2007

При копировании материала обязательны указание автора, переводчика и ссылки на оригинал статьи и настоящую страницу как первоисточник перевода!

Распознавание рукописного текста - технология преобразования символов рукописного текста в последовательность кодов. (прим.перев.)

Разработка проблемы распознавания рукописного текста, как и близкородственных проблем: распознавания речи и оптического распознавания символов, до сих пор представлена преимущественно проприетарными продуктами. Хотя и встречаются отдельные решения на базе Линукс, например, такие как в Maemo Internet tablets фирмы Nokia [1], они часто являются приложениями с закрытым кодом, защищенным патентами. Тем приятнее было мое удивление от знакомства с CellWriter, небольшой и простой программой распознавания рукописного текста, которая прекрасно работает на современных Линукс компьютерах.

CellWriter создает небольшое окно, разлинованное в клеточку, в котором вы пишете от руки нормальными штрихами - как ручкой. Хотя программа лучше работает при использовании графического планшета, такого как Wacom tablet, строго обязательным это не является.

Сетчатое окошко всегда держится поверх окон остальных приложений, так, что приложение, в котором вы в данный момент работаете, сохраняет фокус. Когда вы удовлетворитесь текстом, "нацарапанным" в окне CellWriter, вы щелкаете мышкой на кнопке "Ввод", расположенной рядом, и ваши слова вставляются в активное приложение, как будто вы их напечатали на клавиатуре. Просто, как дважды два.


Работа с CellWriter. Обратите внимание, что окно Emacs сохраняет фокус, даже при работе в окне CellWriter. Красный цвет букв показывает, что я должен снова перейти в обучающий режим и доработать эти символы...

Процесс работы

Можно загрузить .DEB пакет исходного кода с Web-сайта проекта. Программа потребует GTK+, libgnome и libxtst; все эти программы стандартны в любом современном дистрибутиве Линукс.

CellWriter работает, обучаясь почерку каждого индивидуального пользователя, так что тренировка обязательна. Если при запуске CellWriter не находит файл ~/.cellwriter, то он запускает режим обучения, чтобы изучить ваш почерк. Если в какой-то момент вы испытываете особенные трудности с определенным символом (буквой), вы можете, нажав кнопку Train (Обучение), задать больше образцов почерка - программа продолжает обучаться по мере накопления опыта. Режим обучения подправляет таблицу символов, в которой каждый символ занимает собственную клетку. Вы рисуете соответствующий символ в его клетке, а CellWriter запоминает его. "Обученные" клетки отличаются по цвету от "необученных", поэтому легко следить за процессом обучения.

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

Опции

В диалоге настройки CellWriter можно задавать размеры, цвет клеток и настраивать некоторые особенности алгоритмов распознавания - такие как чувствительность к направлению штриха.

Больше того, благодаря Юникоду, вы можете настроить CellWriter на используемый вами алфавит. Можно отключать и подключать различные блоки Юникода по отдельности, устанавливать направление письма справа налево и слева направо. Вам хватает одной латиницы? Тогда ничего не меняйте. Нужна кириллица, Тайский или Международный Фонетический Алфавит [2]? Поставьте галочку в соответствующей графе.

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


Окно тренировочного режима

Прошлое, настоящее и будущее проекта

CellWriter - это продукт Michael Levin - студента последнего курса университета Миннесоты. Левин уже раньше написал OneStroke, простую утилиту распознавания символов, но предпочел писать CellWriter практически с нуля, а не развивать предыдущую разработку.

OneStroke был любительским проектом, а вот при разработке CellWriter Левин имел гораздо больше времени, благодаря университетской программе поддержки исследований старшекурсников (Undergraduate Research Opportunity Program - UROP). UROP обеспечивает грантами студентов Миннесотского университета, проводящих самостоятельные исследования в летнее время.

Интерес Левина к распознаванию рукописного текста происходит из практики использования своего персонального Toshiba Portege M200 tablet PC (планшетный ПК, позволяющий писать, или рисовать стилосом, либо пальцем прямо на мониторе особой конструкции, осуществляя ввод данных /прим. перев./). Левин вспоминает: "Он стоил вдвое дороже, чем остальные ноутбуки, но я был загипнотизирован планшетным интерфейсом. У меня возникло наивное желание заняться разработкой искусственного интеллекта, и я рассматривал распознавание рукописного текста как наиболее легкоразрешимую проблему. Я таки купил Portege, исключительно из-за желания заниматься этой проблемой".

Научное сообщество, занимающееся проблемами искусственного интеллекта, считает распознавание рукописного текста "решенной проблемой", так что новые подходы к решению ее появляются редко. "Я понял, где простор для усовершенствований, после того, как, в течение нескольких лет, планшетная панель Windows упорно отказывалась узнавать мою букву "о" (которую я пишу снизу против часовой стрелки), регулярно приводя меня в ярость" - говорит Левин.

Левин утверждает, что разработал алгоритмы программы CellWriter самостоятельно, методом проб и ошибок. Положив в основу индивидуальную тренировку программы под каждого пользователя, Левин обошел очень важную проблему: нет двоих людей с одинаковым почерком, так что системе распознавания рукописного текста общего назначения необходимо выработать некий "наименьший общий каллиграфический знаменатель".

Избрав поклеточный и побуквенный (по одному символу) метод ввода, Левин упростил задачу распознавания (так как вы рассматриваете только один знак в каждый данный момент). Но, с другой стороны, этот метод позволяет решать сложные задачи. Не в пример некоторым другим системам, CellWriter может распознавать символы, состоящие из многих штрихов, более того, он способен распознать символ вне зависимости от того, в какой последовательности эти штрихи были сделаны.

Будучи обычным студентом, Левин не может уделять много времени своим разработкам в учебное время, но он собирается продолжить исследования летом. Он говорит: "Еще очень многое надо сделать. Много работы по локализации, CellWriter ужасно сложен для азиатских пользователей. Я надеюсь найти способ упростить тренировку символов Kanji (разновидность японского стиля иероглифов), либо как-нибудь автоматизировать ее".

Какие проекты впереди?

Для распознавания рукописного текста не существует волшебной палочки - даже для людей это не всегда простая задача. В бытность мою студентом-математиком я был поглощен ей - делая математические выкладки на бумаге, мы были вынуждены придумывать различимые формы написания латинских, греческих и специальных математических символов. Даже в вашей собственной рукописи, иногда трудно понять где "w", а где "омега".

Клавиатура, как основной инструмент ввода, не сойдет со сцены. Но мы наблюдаем бурный рост числа Линукс устройств с активным дисплеем - от упоминавшегося Nokia tablet до OpenMoko телефонов. Скоро нам потребуется распознавание рукописного текста, в то время как закрытые разработки доминируют в этом секторе.

CellWriter - еще очень молодой проект с многообещающими возможностями и, что еще важнее, простотой применения.


[1] Nokia 770/maemo Internet Tablet
Nokia официально представила Internet Tablet 770/maemo - карманное устройство, которое, по задумке производителя, должно занять своё место среди КПК-подобных устройств с широкими возможностями. Размер сенсорного экрана Nokia 770/maemo - 800x480 пикселей, что ставит его несколько выше КПК, чьи экраны составляют 240х320 пикселей. Устройство работает под управлением операционной системы Linux. Нам не удалось выяснить, чей дистрибутив используется в Nokia 770/maemo, однако в ближайшее время эта тайна должна проясниться. Цена Nokia 770/maemo не сообщается.(прим. перев.)

[2] The International Phonetic Alphabet (IPA) Международный Фонетический Алфавит - система фонетической записи, основанная на латинском алфавите, разработанная Международной Фонетической Ассоциацией (International Phonetic Association) как стандартное представление звуков устного языка. (прим. перев.)


Обсуждение статьи на LOR.