![]() |
|
![]() ![]() ![]() |
|
PavelK |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 11.9.2005 Репутация: нет Всего: нет |
Привет всем.
Хочу написать простенький распознователь рукописного текста. Предпологается что, "на вход" поступает картинка. В ней содержится текст и возможно рисунки. Необходимо распознать то что возможно и затем сохранить в виде текста с не расспознаными фрагментами картинки. Интересно обменятся идеями по поводу построения распознователя. Добавлено @ 08:38 Я себе это предстовляю так: Забить в базу шаблоны букв в виде векторов. А затем выделять на картинке обекты, разбивать их на вектора и сравнивать. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: нет Всего: 459 |
Задача распознования рукописного текста весьма сложная.
Прежде чем приступить к реализации лучше подумать хватит ли сил. Компания Finereader так и не сумела решить эту задачу на должном уровне -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
PavelK |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 11.9.2005 Репутация: нет Всего: нет |
Я и не собираюсь заниматся этим хотя бы на уровне Finereader. Просто хочу покрутить эту тему и понять основные принципы (а вдруг чего и придумаем).
Вобщем-то я вроде в начале написал, что хочу получить простенькую программу. |
|||
|
||||
z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
для начала напиши распознователь печатного текста. а потом уже на рукописных переходи... тут ведь подчерк, наклон и еще кучу специфических параметров обрабатывать и анализировать надо... -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
PavelK |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 11.9.2005 Репутация: нет Всего: нет |
Кое-какой опыт по работе с печатным текстом у меня есть. Правда, делалось все это на MatLabe. В общем там больших проблем нет (если экзотические шрифты не использовать).
Добавлено @ 10:14 Вы бы лучше идеи как это сделать подкинули, чем меня отговаривать. |
|||
|
||||
Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: нет Всего: 108 |
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
PavelK |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 11.9.2005 Репутация: нет Всего: нет |
Спасибо за ссылочки. А как бы мне не только рецензию, а и саму дипломную получить?
|
|||
|
||||
DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
А мне кажется нужно нейронные сети использовать. Тогда прога будет распозновать буквы даже с помехами. К сожалению сам я писал только распознование гласная\согласная, но всеже...
|
|||
|
||||
PavelK |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 11.9.2005 Репутация: нет Всего: нет |
Нейронная сет штука хорошая, только ее напиши попробуй.
Лично я считаю, что сначала неплохо бы просто распознаватель написать, а уж потом нейроны мучить. |
|||
|
||||
DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Зря ты так сразу. Почитай про нейроновые сетки. Там все просто. Есть у тебя нейрон. Ты подаешь ему на вход сигналы. Допучтим у нас буква 5х5, поэтому сигналов meltn 25: 1 - если черная клетка в букве, 0 - если белая. Нейрон твой жует твои сигналы и выдает ответ "А" это буква или нет, расчитывая это по формуле: <РЕЗУЛЬТАТ>=<сигнал1>*<Вес1>+<сигнал2>*<Вес2>+...+<сигнал25>*<Вес25>;
If <РЕЗУЛЬТАТ> > <Порог> then Буква - А, если нет, то не А. Все здесь сводится к тому, чтобы расчитать эти <Вес> так, чтобы когда у нас поступали сигналы c буквы "А", то выражение <Результат> было больше порога, обычно он берется 1.5 или 0.5. Такой процесс называется обучением нейрона. Вот и вся задача. Обучаешь 33 нейрона - каждый на распознования своей определенной буквы - вот и Файн-Ридер написал!!! ![]() Если что не понятно объяснил - спрашивай. Я не учитель... ![]() ![]() Прошу модератора разрешить прикрепить рисунок к этому сообщению, а то то что я написал не очень понятно... Плиз... ![]() Это сообщение отредактировал(а) DragonFire - 26.10.2005, 06:44 |
|||
|
||||
PavelK |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 11.9.2005 Репутация: нет Всего: нет |
Спасибо за объяснение. С нейронными сетями дело иметь тоже приходилось, так что ничего нового ты не написал. Такой метод классно работает с печатным текстом, а что выдаст твой персептрон, если на него подать рукописный? Да и выделять в тексте отдельные буквы как то нужно.
Хотя в целом идея интересная, нужно подумать толком на досуге. Давай обсудим как следует. |
|||
|
||||
DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Ну да давай!
Я почиму думаю, что нейронные сети лучше. Всеравно ты не подберешь идеальной картинки для буквы рукописного текста, а нейроны распознают буквы с помехами. |
|||
|
||||
Guest |
|
|||
Unregistered |
Я и не собирался подбирать картинки. Я собирался входной текст представить в виде векторов. И сравнивать не сами написанные буквы с эталонными картинками, а векторное представление текста с векторным представлением каждой буквы. Причем искать буду не равные вектора, а последовательность векторов направленных приблизительно так же, как и в эталоне.
Тут тоже не лишним был бы рисунок. Такой подход позволяет сразу исключить проблемы с размером написанных букв. Да и отдельные буквы перед распознаванием из текста выделять не нужно. Потом сами выделятся. |
|||
|
||||
PavelK |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 11.9.2005 Репутация: нет Всего: нет |
Последнее сообщение было мое. Прошу прошения забыл выполнить "вход".
|
|||
|
||||
DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Да возможно это так, но я не представляю как это можно реализовать практически...
|
|||
|
||||
PavelK |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 11.9.2005 Репутация: нет Всего: нет |
Да в общем то сама идея простая, вот только писанины многовато.
Можно рассмотреть пример. Пуст есть векторный шаблон буквы "И". Он будет представлять собой 3 вектора (первый направлен вниз, второй - вверх под углом 45 градусов, третий - тоже вниз). Берем входной текст. Преобразовываем его в векторный вид. Идем по тексту и ищем направленный в низ вектор. Если сразу за ним идет вектор направленный вверх под углом близким к углу в 45 градусов, а следующий за ними вектор направлен вниз, то мы нашли искомую букву. Теперь вариант когда у нас есть целый алфавит шаблонов. Берем первые вектор из текста и проверяем каким буквам он может соответствовать. Получаем некоторое кол-во вариантов. Берем следующий в тексте вектор и пытаемся сопоставить с имеющимися вариантами. И так пока не получим 100% совпадение с каким-нибудь образцом. Если совпадений нет, то пропускаем первый вектор, берем второй и повторяем выше описанное. В итоге получаем распознанный набор букв, не обращая внимания на их размер и связки между буквами в словах. |
|||
|
||||
PavelK |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 11.9.2005 Репутация: нет Всего: нет |
Самая большая проблема в этом алгоритме - это правильно выполнить преобразование текста в вектора. И в этой области есть где развернутся, хотя в распознавании образов есть (и даже не один) алгоритм как такое сделать.
Я вот все думаю над твоей идеей. Однослойная нейросеть проблему явно не решит. А как насчет более сложных вариантов? |
|||
|
||||
alksoft |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 22.10.2005 Репутация: нет Всего: нет |
В принцыпе можно сделать методомо жука.
Долго писать, если нужно стучи в аську - 24 9 9 60 |
|||
|
||||
DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Вариант хороший, только как ты представляешь себе на практике сравнивание векторов?
На счет многослойной сети можно подумать... |
|||
|
||||
PavelK |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 11.9.2005 Репутация: нет Всего: нет |
А в чем проблема с векторами? Два направленных отрезка. Нужно получить угол между ними. Это еще в школе было.
|
|||
|
||||
DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Ну не знаю. Хотя идея мне нравится...
|
|||
|
||||
RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: нет Всего: 115 |
|
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 4 Всего: 360 |
RAdmin, смысл не в результате, а в пути к нему
![]()
А почему не: вниз -> вниз под углом 45 -> вниз. Добавлено @ 22:45 Вообще то можно не вектор, а кривые брать, Релевантны лишь начальная и конечная точка, а факторы колеблятся в пределах n. |
|||
|
||||
DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
И вообще почему именно три вектора? Как ты собираешся описывать букву "М" или "Ш" тремя векторами, а с "О", это вообще сложно будет разобратся...
|
|||
|
||||
Guest |
|
|||
Unregistered |
Три вектора я взял только для буквы "И" как пример.
На самом деле, даже для буквы "и", их может быть больше. И чего вы к этим трем векторам прицепились. |
|||
|
||||
Guest |
|
|||
Unregistered |
Уважаемый, RAdmin, подскажите пожайлуста где ты взял статейку о ABBYY FineReader Engine 8.0.
|
|||
|
||||
Гость_Silver |
|
|||
Unregistered |
Про вектора идея не нова. У нас недавно аспирант защитил кандидатскую по распознованию, алгоритм основан на нечеткой логике(размытой логике) он там с петлями работал (что то вроде векторов
![]() |
|||
|
||||
Guest |
|
|||
Unregistered |
Да возможно это так, но я не представляю как это можно реализовать практически...
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 4 Всего: 360 |
Вообще то темку не зря подняли. Год прошёл, может какие компоненты/алгоритмы появились на распознавание? Что скажете?
|
|||
|
||||
DeadSoul |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 1 Всего: 11 |
alexeis1, данная компания называется Abbyy. Finereader - это програмный продукт. -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
Y-Vladimir |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 16.7.2004 Где: Казань Репутация: 1 Всего: 6 |
Мы где-то полтора года назад хотели написать распознавание рукописного текста. Достигли весьма немалого, но потом у нас как-то все это заглохло, кто закончил учиться и времени стало жутко нехватать и т.д.
Можешь для начала посмотреть рецензию на диплом с нашего сайта, ссылку на который давали выше.
Не появилось... Есть много программ по рукопечатному распознаванию (FormReader), а также онлайновому рукописному распознаванию (для КПК скажем) - это задача на много порядков проще и ее успешно решают. Но для оффлайнового распознавния ничего нету. |
|||
|
||||
DeadSoul |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 1 Всего: 11 |
Это аналог Finereader от тойже компании Abbyy. Распознавалка там не отличается. Просто совфт предназначен для другого. -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
3х слойной сети(1-вохд, 2-скрытый слой, 3-выход) должно хватить! По моему даже Колмоговров доказал что практически любую задачу решаемой многослойной сетью (больше 3 слоев) можно решить сетью из 3 слоев |
|||
|
||||
SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Буквы можно представлять в виде матриц. Так работает Finereader но оплюс нейронные сети. В одну матрицу [8,3] можно положить 8 букв и доставать оттуда по определителю каждой буквы
-------------------- Всем добра ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |