CellWriter работает, обучаясь почерку каждого индивидуального пользователя, так что тренировка обязательна. Если при запуске CellWriter не находит файл ~/.cellwriter, то он запускает режим обучения, чтобы изучить ваш почерк. Если в какой-то момент вы испытываете особенные трудности с определенным символом (буквой), вы можете, нажав кнопку Train (Обучение), задать больше образцов почерка - программа продолжает обучаться по мере накопления опыта. Режим обучения подправляет таблицу символов, в которой каждый символ занимает собственную клетку. Вы рисуете соответствующий символ в его клетке, а CellWriter запоминает его. "Обученные" клетки отличаются по цвету от "необученных", поэтому легко следить за процессом обучения.
Если вы неаккуратно нарисовали букву, можно удалить каракули. Когда вы пишете в режиме ввода текста, CellWriter преобразует ваши штрихи в символы по мере продвижения ручки из одной клетки в другую. Если символ интерпретирован некорректно, вы правым щелчком мыши вызываете выпадающий список близких символов и выбираете правильный. Если же CellWriter не уверен в выборе буквы, он выделит соответствующую клетку цветом, чтобы предупредить вас, но не прервет вашей работы» [8].
То есть получается, что даже имея данные приборы, мы должны все равно смотреть в текст и механически его переписывать каким-то из существующих устройств ввода. В результате, мы еще усложняем себе работу: если просто принося с собой ноутбук мы набирали текст, то теперь нам с собой еще нужно приносить устройство ввода и иметь на компьютере соответствующую программу, которая бы распознавала бы то, что мы написали, к тому же, программу сначала нужно обучить понимать свой почерк. Конечно, это уже шаг вперед, но, к сожалению, нашу работу данный путь вряд ли облегчит.
Глава 3
В данной главе мы попытаемся описать пути, по которым намечается движение в поисках решения проблемы распознавания рукописного текста – бесспорно, одной из важнейших проблем векторной графики. При этом мы пользовались идеями, предложенными на различных интернет-форумах, обсуждавших данную проблему, т.к. каких-либо более «убедительных», научных статей по данному вопросу нам найти не удалось.
Главное препятствие в развитии исследований по созданию программ/устройств, позволяющих переносить рукописный текст в текстровый редактор, - это, как ни печально, отсутствие надлежащей теоретической базы. Существует несколько идей для решения проблемы распознавания рукописных текстов, но каждая из них имеет на пути своей реализации значительные припятствия.
Распознавать рукопись - не только сложная идейно, но и трудоемкая задача, так как необходимо держать как минимум словарь всех слов - а лучше учитывать контекст предложения. Потому что даже человек не может разобрать типичный почерк, не анализируя смысл (невозможно однозначно распознать тарабарщину). В связи с этим возникло такое предложение:
1) разделить рукописный текст на строки;
2) определить ширину линии пера(ручки) и высоту строки;
3) все элементы рукописного текста соединяются между собой одним из 3-4 способов. Нужно выделить эти стандартные элементы, отличающиюеся большим разнообразием, и получить представление данного элемента в виде набора дуг с учетом высоты строки и ширины линии. Выделить в процессе распознавания, поскольку они зависят от конкретного почерка, а не от стандартов;
4) все особенности начертания букв зависят не только от почерка, но и от конкретного слова. Тем не менее, есть общие признаки, по которым мы и выделяем конкретные буквы или их элементы из текста. Потом к ним пристраиваем остальное.
Распознать текст, не имея возможности выдернуть из него буквы или лигатуры, - практически невозможно. Суть в создании алгоритма, позволяющего выделить наборы штрихов, содержащие буквы или лигатуры с некоторым перебором вариантов (намного меньшим нежели в случае перебора всего слова). По замыслу - будет использован словарь слов языка, в котором содержится слова с вероятностью их встречаемости в языке. Если алгоритм не может сказать какое слово написано в данном фрагменте текста, то он должен выдать пользователю набор возможных вариантов для корректировки в котором должно содержаться нужное сочетание, при этом количество вариантов должно быть минимальным и содержать правильный.
То есть анализируется набор дуг каждого элемента и пропорции относительно ширины линии и высоты строки. формируется семейство начертаний элемента. формируется семейство элементов для данного символа, а лучше для данного слова. то есть, формируется семейство начертаний данного слова.
Оппоненты данного «пути» высказываются о нереальности данного решения рукописном распознавании: «Это способ замечательно подходит для рукопечатного текста, где человек пишет одну букву несколькими штрихами, а вот при рукописном написании слово пишется одной непрерывной линией (может и несколькими, но это не суть важно), и в таких случаях возникают совершенно другие дефекты - наезд линий друг на друга, самопересечение линии, слипание соседних букв и их пересечение и т.д. Как пример, посмотрите, как пишется буква Ф и Ж, выделить конкретные элементы (линии, дуги) не получится, так что пока единственный хороший подход - выделение траекторий».
Выделение траекторий – следующий сценарий развития. Как высказываются сами его разработчики, «алгоритм сложный и возможно не рабочий (это нужно проверить), однако вполне понятно, что если он будет удачным, то задачу, при соблюдении некоторых условий, можно свести из разряда оффлайновых к онлайновой» [4].
Если зайти с другого конца, то как человек читает неразборчивый почерк? Сначала ищет знакомые буквы, пытаясь угадать смысл предложения, или ищет образец - точно определенное слово, букву и так далее. Потом запоминает начертание символа и производит поиск всех форм данного символа, вырабатывая устойчивый набор признаков символа. Потом то же самое для коротких слов, потом более длинных и так далее. Неопознанные символы подставляются по контексту. Конечно, это нереально перенести на компьютер, но только в данный момент.
Многие информатики говорят о больших сложностях, возникающих при попытке разработать программу для распознавания рукописного текста. Однако они все же склоняются к мысли, что это возможно в ближайшем будущем, т.к. понемногу появляются какие-то разработки в данной сфере. Вот, например, некоторые из условий, которые должны соблюдаться пробных программах, распознающих цифры и некоторые рукописные буквы:
1) буквы должны стоять отдельно. Решения этой проблемы разработчики пока не находят, т.к. в доброй половине подчерков случаются "слияния" букв и человек интуитивно догадывается о том, какая это буква, по слову вцелом, а иногда даже по предложению;
2) программа ориентирована на конкретный шрифт. К примеру, написание буквы "т" имеет множество различных вариантов;
3) реализовано чтение не всех букв, т.к. для инициализации буквы программа ищет замкнутое пространство, а на нём уже находит различные "приросты". Т.е. программа читает только те буквы ,в которых есть замкнутые элементы(да и то не со всеми буквами справляется) [4].
Если проанализировать приведенные выше данные, получается, что даже при воплощении перечисленных проектов в жизнь, для нашей работы они не будут иметь решающего значения, поскольку это будет, судя по всему, уже после ее написания, к тому же, нужно будет сначала создать словарь употреблявшихся в 17 веке слов, что опять таки требует первоначального их механического ввода в электронную базу. Однако для дальнейших исследований рукописных текстов создание подобных программ будет иметь огромное влияние, т.к. это намного облегчит «неблагодарный» и ужасно тяжелый труд архивиста, а также позволит быстрее переходить от фазы ввода текста в базу к непосредственному его изучению.
Заключение
В данной работе были проанализированы как уже существующие программы для распознавания текста, так и находящиеся на стадии разработки теоретические основы будущих программ. Для этого были использованы материалы различных сайтов, представляющих программы, а также форумы, на которых проходили обсуждения данных проблем. Все данные были проверены на возможность и (!) рациональность их внедрения как в нашу работу по изучению рукописных польскоязычных текстов 17 века, так и в архивные работы в общем.
Целью работы был обзор и поиск программ, которые могли бы помочь более быстро и правильно (а именно – исключая человеческий фактор) записывать рукописный текст в текстовый редактор. Однако после изучения проблемы оказалось, что единственным возможным методом оказывается механический набор на клавиатуре, т.е. отсканировать древний рукописный текст и потом его распознать оказалось в свете состояния современной науки просто невозможно. Учитывая тот факт, что изучаемые нами тексты написаны рукою далеко не одного человека, и даже не одного десятка людей, создание какой-либо самообучаемой программы, которая разбирала бы написанное им (ими), также остается делом неблагодарным, поскольку такая программа потребовала бы огромных временных затрат не только из-за огромного количества авторов текстов (а значит и их почерков, следовательно, пришлось бы такую программу переучивать под каждого), но также из-за отсутствия словаря, характерного для изучаемых нами документов. Еще одна проблема – это то, что изучаемые нами тексты написаны не рукопечатно, а различными линиями, т.е. кождая буква, а иногда и целое слово представлено одной непрерывной линией, что затрудняет распознавание не только компьютеру, но даже и человеку.
Таким образом, перспективы применения информационных технологий в изучении рукописных текстов довольно велики, но пока так и остаются перспективами. Распознавание рукописного текста будет востребованной задачей еще очень долгое время из-за существования огромного количества необработанных документов. Это многочисленные архивы, конспекты, рукописи, заполненные бланки (платежные поручения), существует множество форм документов, заполняемых от руки (доверенности, например). Хотя есть спрос на разработку подобных систем, практически никто не рискует заниматься таким проектом в силу его рискованности. Нам остается только надеятся и верить в силу прогресса и – набирать все вручную.