| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Распознавание рукописного текста |
| Автор: PavelK 25.10.2005, 08:34 |
| Привет всем. Хочу написать простенький распознователь рукописного текста. Предпологается что, "на вход" поступает картинка. В ней содержится текст и возможно рисунки. Необходимо распознать то что возможно и затем сохранить в виде текста с не расспознаными фрагментами картинки. Интересно обменятся идеями по поводу построения распознователя. Добавлено @ 08:38 Я себе это предстовляю так: Забить в базу шаблоны букв в виде векторов. А затем выделять на картинке обекты, разбивать их на вектора и сравнивать. |
| Автор: Alexeis 25.10.2005, 09:43 |
| Задача распознования рукописного текста весьма сложная. Прежде чем приступить к реализации лучше подумать хватит ли сил. Компания Finereader так и не сумела решить эту задачу на должном уровне |
| Автор: PavelK 25.10.2005, 09:52 |
| Я и не собираюсь заниматся этим хотя бы на уровне Finereader. Просто хочу покрутить эту тему и понять основные принципы (а вдруг чего и придумаем). Вобщем-то я вроде в начале написал, что хочу получить простенькую программу. |
| Автор: z-END 25.10.2005, 09:57 | ||
для начала напиши распознователь печатного текста. а потом уже на рукописных переходи... тут ведь подчерк, наклон и еще кучу специфических параметров обрабатывать и анализировать надо... |
| Автор: PavelK 25.10.2005, 10:12 |
| Кое-какой опыт по работе с печатным текстом у меня есть. Правда, делалось все это на MatLabe. В общем там больших проблем нет (если экзотические шрифты не использовать). Добавлено @ 10:14 Вы бы лучше идеи как это сделать подкинули, чем меня отговаривать. |
| Автор: Albinos_x 25.10.2005, 10:24 |
| посмотри http://devkhit.ksu.ru/index.php?m=7&id=6 http://devkhit.ksu.ru/index.php?m=6&a=4&n=11 http://devkhit.ksu.ru/index.php?m=6&a=4&n=9 может быть поможет |
| Автор: PavelK 25.10.2005, 10:55 |
| Спасибо за ссылочки. А как бы мне не только рецензию, а и саму дипломную получить? |
| Автор: DragonFire 25.10.2005, 13:14 |
| А мне кажется нужно нейронные сети использовать. Тогда прога будет распозновать буквы даже с помехами. К сожалению сам я писал только распознование гласная\согласная, но всеже... |
| Автор: PavelK 25.10.2005, 13:19 |
| Нейронная сет штука хорошая, только ее напиши попробуй. Лично я считаю, что сначала неплохо бы просто распознаватель написать, а уж потом нейроны мучить. |
| Автор: DragonFire 26.10.2005, 06:43 |
| Зря ты так сразу. Почитай про нейроновые сетки. Там все просто. Есть у тебя нейрон. Ты подаешь ему на вход сигналы. Допучтим у нас буква 5х5, поэтому сигналов meltn 25: 1 - если черная клетка в букве, 0 - если белая. Нейрон твой жует твои сигналы и выдает ответ "А" это буква или нет, расчитывая это по формуле: <РЕЗУЛЬТАТ>=<сигнал1>*<Вес1>+<сигнал2>*<Вес2>+...+<сигнал25>*<Вес25>; If <РЕЗУЛЬТАТ> > <Порог> then Буква - А, если нет, то не А. Все здесь сводится к тому, чтобы расчитать эти <Вес> так, чтобы когда у нас поступали сигналы c буквы "А", то выражение <Результат> было больше порога, обычно он берется 1.5 или 0.5. Такой процесс называется обучением нейрона. Вот и вся задача. Обучаешь 33 нейрона - каждый на распознования своей определенной буквы - вот и Файн-Ридер написал!!! Если что не понятно объяснил - спрашивай. Я не учитель... Прошу модератора разрешить прикрепить рисунок к этому сообщению, а то то что я написал не очень понятно... Плиз... |
| Автор: PavelK 26.10.2005, 12:11 |
| Спасибо за объяснение. С нейронными сетями дело иметь тоже приходилось, так что ничего нового ты не написал. Такой метод классно работает с печатным текстом, а что выдаст твой персептрон, если на него подать рукописный? Да и выделять в тексте отдельные буквы как то нужно. Хотя в целом идея интересная, нужно подумать толком на досуге. Давай обсудим как следует. |
| Автор: DragonFire 26.10.2005, 15:07 |
| Ну да давай! Я почиму думаю, что нейронные сети лучше. Всеравно ты не подберешь идеальной картинки для буквы рукописного текста, а нейроны распознают буквы с помехами. |
| Автор: Guest 26.10.2005, 17:12 |
| Я и не собирался подбирать картинки. Я собирался входной текст представить в виде векторов. И сравнивать не сами написанные буквы с эталонными картинками, а векторное представление текста с векторным представлением каждой буквы. Причем искать буду не равные вектора, а последовательность векторов направленных приблизительно так же, как и в эталоне. Тут тоже не лишним был бы рисунок. Такой подход позволяет сразу исключить проблемы с размером написанных букв. Да и отдельные буквы перед распознаванием из текста выделять не нужно. Потом сами выделятся. |
| Автор: PavelK 26.10.2005, 17:15 |
| Последнее сообщение было мое. Прошу прошения забыл выполнить "вход". |
| Автор: DragonFire 26.10.2005, 19:15 |
| Да возможно это так, но я не представляю как это можно реализовать практически... |
| Автор: PavelK 26.10.2005, 20:55 |
| Да в общем то сама идея простая, вот только писанины многовато. Можно рассмотреть пример. Пуст есть векторный шаблон буквы "И". Он будет представлять собой 3 вектора (первый направлен вниз, второй - вверх под углом 45 градусов, третий - тоже вниз). Берем входной текст. Преобразовываем его в векторный вид. Идем по тексту и ищем направленный в низ вектор. Если сразу за ним идет вектор направленный вверх под углом близким к углу в 45 градусов, а следующий за ними вектор направлен вниз, то мы нашли искомую букву. Теперь вариант когда у нас есть целый алфавит шаблонов. Берем первые вектор из текста и проверяем каким буквам он может соответствовать. Получаем некоторое кол-во вариантов. Берем следующий в тексте вектор и пытаемся сопоставить с имеющимися вариантами. И так пока не получим 100% совпадение с каким-нибудь образцом. Если совпадений нет, то пропускаем первый вектор, берем второй и повторяем выше описанное. В итоге получаем распознанный набор букв, не обращая внимания на их размер и связки между буквами в словах. |
| Автор: PavelK 26.10.2005, 21:06 |
| Самая большая проблема в этом алгоритме - это правильно выполнить преобразование текста в вектора. И в этой области есть где развернутся, хотя в распознавании образов есть (и даже не один) алгоритм как такое сделать. Я вот все думаю над твоей идеей. Однослойная нейросеть проблему явно не решит. А как насчет более сложных вариантов? |
| Автор: alksoft 26.10.2005, 23:11 |
| В принцыпе можно сделать методомо жука. Долго писать, если нужно стучи в аську - 24 9 9 60 |
| Автор: DragonFire 27.10.2005, 06:07 |
| Вариант хороший, только как ты представляешь себе на практике сравнивание векторов? На счет многослойной сети можно подумать... |
| Автор: PavelK 27.10.2005, 08:23 |
| А в чем проблема с векторами? Два направленных отрезка. Нужно получить угол между ними. Это еще в школе было. |
| Автор: DragonFire 27.10.2005, 13:02 |
| Ну не знаю. Хотя идея мне нравится... |
| Автор: RA 27.10.2005, 21:56 | ||
|
| Автор: sergejzr 27.10.2005, 22:44 | ||
RAdmin, смысл не в результате, а в пути к нему
А почему не: вниз -> вниз под углом 45 -> вниз. Добавлено @ 22:45 Вообще то можно не вектор, а кривые брать, Релевантны лишь начальная и конечная точка, а факторы колеблятся в пределах n. |
| Автор: DragonFire 28.10.2005, 06:02 |
| И вообще почему именно три вектора? Как ты собираешся описывать букву "М" или "Ш" тремя векторами, а с "О", это вообще сложно будет разобратся... |
| Автор: Guest 28.10.2005, 12:41 |
| Три вектора я взял только для буквы "И" как пример. На самом деле, даже для буквы "и", их может быть больше. И чего вы к этим трем векторам прицепились. |
| Автор: Guest 28.10.2005, 12:45 |
| Уважаемый, RAdmin, подскажите пожайлуста где ты взял статейку о ABBYY FineReader Engine 8.0. |
| Автор: Гость_Silver 8.11.2005, 14:55 |
| Про вектора идея не нова. У нас недавно аспирант защитил кандидатскую по распознованию, алгоритм основан на нечеткой логике(размытой логике) он там с петлями работал (что то вроде векторов |
| Автор: Guest 15.1.2006, 01:06 |
| Да возможно это так, но я не представляю как это можно реализовать практически... |
| Автор: sergejzr 15.1.2006, 01:11 |
| Вообще то темку не зря подняли. Год прошёл, может какие компоненты/алгоритмы появились на распознавание? Что скажете? |
| Автор: Y-Vladimir 15.1.2006, 15:11 | ||
| Мы где-то полтора года назад хотели написать распознавание рукописного текста. Достигли весьма немалого, но потом у нас как-то все это заглохло, кто закончил учиться и времени стало жутко нехватать и т.д. Можешь для начала посмотреть рецензию на диплом с нашего сайта, ссылку на который давали выше.
Не появилось... Есть много программ по рукопечатному распознаванию (FormReader), а также онлайновому рукописному распознаванию (для КПК скажем) - это задача на много порядков проще и ее успешно решают. Но для оффлайнового распознавния ничего нету. |
| Автор: DeadSoul 15.1.2006, 16:53 | ||
Это аналог Finereader от тойже компании Abbyy. Распознавалка там не отличается. Просто совфт предназначен для другого. |
| Автор: chaos 16.1.2006, 14:15 | ||
3х слойной сети(1-вохд, 2-скрытый слой, 3-выход) должно хватить! По моему даже Колмоговров доказал что практически любую задачу решаемой многослойной сетью (больше 3 слоев) можно решить сетью из 3 слоев |
| Автор: SoWa 16.1.2006, 20:03 |
| Буквы можно представлять в виде матриц. Так работает Finereader но оплюс нейронные сети. В одну матрицу [8,3] можно положить 8 букв и доставать оттуда по определителю каждой буквы |