GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.1 (8)След. > >>   Поиск:  
 Автор Тема: Распознавание символов
Corwin
Сообщений: 1324
Распознавание символов
Добавлено: 28 май 07 1:36
Предлагаю вашему вниманию небольшую работу по распознаванию оптических символов. Во время выполнения работы была написана программа реализирующая один из принципов распознания векторного представления символа.
В общем в этом топике опишу вкратце теорию и мою программу распознания символов (может кому-то пригодится). Если кому не интересно, просьба не читать
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознавание символов
Добавлено: 28 май 07 1:36
Немного теории.
В общем программы оптического распознавания символов (ОРС) можно поделить на шрифтозависимые и шрифтонезависимые.
Шрифтозависимые алгоритмы используют в основном априорную информацию про шрифт или же сравнивают графическое изображение символа со своей базой данных. К шрифтозаваисмым алгоритмам относятся также нейронные сети.
Преимуществами таких алгоритмов является:
- Относительно высокое качество распознания
- Быстрота распознания
- Возможность более точно просчитать математическую достоверность соответствия символа
Недостатки:
- Привязанность алгоритма к конкретным обученным шрифтам. Т.е. при смене шрифта на неизвестный, качество распознавания заметно снижается
- Для корректного распознания, при базе данных которая включает в себя несколько шрифтов, необходимо знать каким шрифтом напечатан распознаваемый текст.
Шрифтонезависимые алгоритмы строятся на различных характеристиках символа (таких характеристик достаточно много: длина линий, углы между линиями, конечные точки и точки пересечения)
Преимуществами такого подхода являются:
- Относительная универсальность распознания текста. Т.е. алгоритм не сильно зависит от шрифта которым напечатан текст.
- Удобность использования конечным пользователем. Сюда относится как распознавание готового текста, так и обучение программы.
Недостатки:
- Качество распознавания ниже чем у шрифтозависимых.
- Низкая шумостойкость. Как правило, если нет специальной шумообработки, то подобные алгоритмы в сильно зашумленном линиями изображении могут увидеть почти весь алфавит
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознавание символов
Добавлено: 28 май 07 1:37
Лично мной была написана программа которая относится к шрифтонезависемым методам ОРС. В этой программе графическое изображение символа переводится в векторное представление и сравнивается с БД.
Основные стадии обработки графического символа в моей программе (в упрощенном варианте) состоит из:
1. Создание векторного скелета.
Наиболее популярными методами векторизации символов являются векторизация методом волны и векторизация растрового скелета (мной на практике был испытан именно второй вариант). Оба метода имеют свои преимущества и недостатки. Векторизация методом волны создает векторный скелет на основании середины фронта волны которая проходит по пикселям символа.
Векторизация растрового скелета включает в себя скелетизацию растрового изображения (утоньшение всех линий). Для этого существуют несколько разных алгоритмов которые могут отличатся по некоторым параметрам (скорость/ шумоустойчивость/ поворотоустойчивость ). После скелетизации готовое изображение проходит векторизацию. Я пробовал реализовать алгоритмы скелетизации Зонга-Суня и МВ2. Поскольку алгоритм Зонга-Суня показал лучшую шумостойкось, на практике решил использовать именно его. Примеры скелетизации можно посмотреть здесь:
2. Коррекция векторного скелета. Этот этап необходим поскольку после первого этапа могут остаться некоторые нежелательные побочные эффекты.
3. Поиск закрытых областей и кривых в векторном скелете. Эта информация в последствии используется в идентификации символа.
4. Поиск соответствий в базе данных.
5. По желанию, добавление полученного результата векторизации в базу данных.
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознавание символов
Добавлено: 28 май 07 1:38
Собственно после векторизации получаем набор ключевых точек которые связаны между собой. Ключевыми точками могут быть:
- конечные точки
- Точки стыка и пересечений линий
- Точки где линия «переламывается»
По сути получаем семантическую сеть состоящую из точек, где связи характеризуются углом линии, ее длиной и кривизной (ну и еще несколькими параметрами).
В основе идентификации символа стоит поиск максимально схожей семантической сети в базе данных. На выходе получаем следующие данные:
- Соответствия площади совпадения в символе из БД и символа который собственно и распознается.
- Относительность выше зазначеных площадей
- Коэффициенты соответствий углов.
Конечный коэффициент соответствия символа устанавливается на суммировании выше описанных коэффициентов. Наиболее соответствующим символом из БД считается символ у которого конечный коэффициент наибольший.
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознавание символов
Добавлено: 28 май 07 1:41
Теперь немного о самом программном продукте.
Скачать сию программу можно по адресу http://filesexchange.narod.ru/SymvecView.rar (327 kb)
Хочу сразу заметить что:
1. Во время написания программы подход к распознанию несколько раз менялся, в результате чего несколько раз переписывались или модифицировались отдельные части программы, что соответственно плохо отразилось на надежности ее работы. Короче программа в конечном результате получилась немного карявой
3. На данном этапе (для дебаг режима) проводится много лишних расчетов (да и алгоритм не оптимизирован), так что если хотите увидеть результаты то стоит обзавестись или хорошим процессором или терпением
2. Скорее всего программа дальше развиваться не будет, так что имеем что имеем

В архиве с программой идут несколько изображений которые можно использовать для просмотра результатов работы программы.
Интерфейс программы немного «партизанский» - он не очень рассчитан на конечного пользователя и в основном служит для вывода результатов работы алгоритма.
Имеем три кнопки:
1. Recognize file - Открыть и распознать файл. Если не хотите сравнивать файл с БД (эта процедура заметно тормозит работу программы ) то отключите опцию «Сравнивать символ с существующими в БД».
2. Next char – Поиск следующего символа на картинке
3. Write to DB – Запись символа в базу данных.

Программа поставляется с уже готовой экспериментальной БД. Не могу сказать что БД полностью правильная. Вполне вероятно что если обучить программу заново то можно получить лучшие результаты распознавания. Для очистки БД следует открыть файл main.aidb и удалить все кроме первой строчки.

В окне программы видим 5 изображений:
1.Собственно открытая картинка, которая подлегает распознанию.
2.Картинка после прохождения скелетизации. Можно также выбрать метод скелетизации (Зонга-Суня, МВ2). Синие токи – точки пройденные во время векторизации. Красные точки – ключевые точки по которым строится векторный скелет.
3.Векторное изображение картинки. При включенном «Отображать линии кривых» кривые будут нарисованы голубенькими линиями.
4.Конечный результат который и используется для сравнения с БД. Может сильно отличатся от начального векторного скелета. Оранжевые точки указывают на отношение ключевой точки к закрытой области.
5.Появляется после клика на таблице сравнения. В этом изображении показывается как визуально выглядит символ в БД.
* Для просмотра деталей изображений (ключевых точек) рекомендуется использовать программы типа экранной лупы.

Для ознакомления с процессом скелетизации/векторизации в архиве с программой есть папка «Samples for vectorization». Рекомендуется также отключить опции «Сравнивать символ с существующими в БД» и «Отображать линии кривых».

В окне сравнения символов отображается разная информация о сравнении распознаваемого символа и символов с БД. Здесь стоит смотреть только на первые два столбца. Распознанным символом можно считать самый верхний символ в таблице. Стоит заметить что в этой таблице символы имеют названия такие какими они занесены в БД (например ms4, Kb2, ns3). Поэтому при распознании символа стоить смотреть только на первый символ в строчке (m, K, n соответственно).


Основными проблемами данного алгоритма распознания являются:
1. Распознаются только незашумленые и не склеенные символы (в большинстве случаев).
2. Векторизуются и распознаются только цельные контуры. Такие символы как «i», «й», «ы», «ё» не будут корректно распознаны алгоритмом. Этот недостаток можно исправить после окончания распознавания всех контуров.
3. Все закрытые области без сторонних линий распознаються как О. Т.е. такие символы как «О», «о», «0», «D» будут распознаны как О.
4. Символы которые представляются одной кривой могут неправильно распознаваться (путаться между собой). К таким символам относятся “u” и в некотрых случаях “n”, “J”. Эта проблема просто недоработка в алгоритме, которую врятли буду исправлять.
5. Проблемное дифференцирование некоторых малых и великих букв (могут путатся «F» и «f»).
6. Распознание статически настроено под определенный размер символов, поэтому слишком маленькие буквы будут неправильно распознаваться.
7. Ну и еще несколько проблем…
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознавание символов
Добавлено: 28 май 07 1:43
Результаты распознавания.
Распознавания проводились на маленьких символах латинского алфавита.
Основные ошыбки при распознавании:
0 – Проблема в сравнении семантической сети.
1 – Проблема в скелетизации/векторизации
2 – Недоработка в сравнении кривых
3 – Новый тип символа
5 – Графически нечеткий символ
6 – Недостаток фильтрации изображения перед скелетизацией.
*В скобках зазначены какие литеры распознались неправильно и причина ошибки.
Результаты распознавания для разных шрифтов:
Times New Roman (J(2), g(3))
Book Antiqua (J(2),d(0), I(3,0), g(3))
Arial (z(1))
Century Gothic (J(2), k(3), t(0))
Sylfaen (J(2), g(3))
Verdana (J(2), d(0), n(2))
Comic Sans MS (J(2), a(0), s(1), n(0) ,t(0))
Impact (J(2), v(1,3), p(0), h(0), n(2), x(3), f(1), q(0), t(1,0))
Italic style:
Arial (d(0,1), v(1,3), u(2), t(0))
Book Antiqua (J(2), a(0,3), d(0), w(1,3), l(0), v(1,3,0), y(1,0), g(3), n(0), r(5), t(0))
Times New Roman (J(2), a(0), d(0), w(3), f(0,1), i(3,0), g(3), n(0,1), q(o), u(6,1), r(6,1), t(0))

База данных используемая для получения этих результатов была в основном построенная на шрифте Arial и поэтому буква g в некоторых отличных начертаниях не распознается.

Самыми проблемными символами являются символы с пометкой 0 и 1. Хотя стоит заметить что большинство брака с пометкой 0 (порядка 40% бракованных символов) не сильно отклонились от правильного ответа и в принципе, данная проблема может быть решена более качественным выбором коэффициентов сравнения. Проблемы же возникшие во время скелетизации/векторизации являются наиболее трудоемкими и в идеале сама векторизация растрового скелета должна быть заменена на более надежный метод векторизации.

В целом качество распознавания соответствует:
Times New Roman 92% 100%
Book Antiqua 85% 92%
Arial 96% 96%
Century Gothic 88% 96%
Sylfaen 92% 100%
Verdana 88% 96%
Comic Sans MS 81% 85%
Impact 65% 77%
Arial It 85% 88%
Book Antiqua It 54% 61%
Times New Roman It 54% 65%
Первое число – подсчитаны все ошибки, второе - подсчитаны только ошибки 0,1,5.
В принципе программу можно было обучить неопознанным символам, что привело б к более высокому проценту распознания. Но для чистоты эксперимента этого не делалось.
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознавание символов
Добавлено: 28 май 07 1:44
Поговорим об увеличении качества распознавания.
-Пожалуй если бы пришлось переписать мою ОРС заново, я бы сделал упор не на контрольные точки а на линии и связи между ними. Дело в том что если символ зашумленный то могут появится множество лишних контрольных точек, которые обойти используя логику распознавания не так то просто (да и это потребует дополнительных вычислительных мощностей). Кроме того после создания кривых на основе ключевых точек некоторые символы могут не до конца распознаваться. Для поиска линий на изображении можно воспользоваться шрифтозависимыми алгоритмами.
-Значительно облегчить распознавание могут шумоподавляющие фильтры, которые удаляют небольшие одноцветные области ( присутствие которых сильно искажает скелет символа), слишком тонкие линии (такие линии приводят к возникновению лишних контрольных точек), нормализуют расцветку изображения и т.д.
- Большое значение имеет БД с символами. В нее не стоит заносить все подряд символы, а выбирать только определенные изображения, которые наибольше соответствуют разным стилям написания литеры.

О проблеме склеенных символов.
Эту проблему можно решить как на поверхностном уровне (измеряя ширину изображения, и разделяя символы в самых тонких местах), так и на логическом. Например реализированый мной алгоритм разрешает определить соответствие (в процентах от площи) семантической сети символа из БД и распознаваемого символа. Если присутствуют склеенные символы, тогда можно подобрать такие распознанные символы, сумма площ которых полностю перекрывает распознаваемое изображение. Даже без подобных дополнительных расчетов существующий алгоритм (в некоторых случаях) способен определить символы которые склеелись. Гораздо худшая ситуация когда склеенные символы по семантической структуре напоминают цельную букву. К сожалению скелетизация в таких случаях дает не достаточно качественное изображение и единственный способ распознания в таких случаях это поверхностное разделение.
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознавание символов
Добавлено: 28 май 07 1:46
Программа писалась на Делфи 7, примерно два месяца. Результаты работы программы (лично я) оцениваю как неудовлетворительные. Хотя с основными функциями демонстрации технологии ОРС программа справляется хорошо. Если есть вопросы спрашивайте, помогу чем смогу
[Ответ][Цитата]
daner
Сообщений: 4593
На: Распознавание символов
Добавлено: 28 май 07 3:43
SUPER!!!! Вот такие топики и должны быть на форуме по ИИ. хотя лично мне OCR не интересна.
[Ответ][Цитата]
anatoli
Сообщений: 249
На: Распознавание символов
Добавлено: 28 май 07 6:24
Ну что, интересно уже то, что кто-то демонстрирует конкретные результаты. : )

Теперь перейдем к критике..

Из-за неюникодного русского интерфейса пришлось переконфигурировать региональные настройки. Иначе все буквы отображались знаками вопроса (????????????).

Не совсем понятны результаты распознавания. А в случае несверки с базой их вообще не отображается (кстати, у меня на компе прога результаты отображает моментально как без базы, так и с базой; так что скорость - более чем приемлемая). Надо бы показывать что-то вроде: Это строчная буква "а" с вероятностью 91%, это буква "о" с вероятностью 45%, и т.д. А то вот я в таблице даже не нашел вероятности. Есть всякие разные (непонятные) значения, а вероятности не нашел. Но так понял, что если что-то стоит первым в списке, значит наивысшая вероятность.

Не совсем понятен выбранный подход. Почему было просто не использовать обычную НС? Она дает хорошие результаты вообще без шрифтов (хоть от руки пиши). Т.е. просто раскладываем по клеточкам картинку (скажем, 10х20) и смотрим заполняемость и схожесть с базой. Предварительно, само собой, обучаем программу на примерах.

Лет 5 назад писал такую (используя примеры из инета), тестил на цифрах (я ей скормил под каждую цифру где-то по 10-20 изображений как печатных, так и от руки). Потом добиться того, чтобы она ошибалась, было крайне сложно - только сильными искажениями (например, перетяг по диагонали, сильный шум и т.п.). Причем, идея-то - проще значительно. Правда, распознавала она только картинки с одним символом.

Но так или иначе, сам подход в обоих случаях мне кажется далеким от совершенства. А совершенством является то, как человек распознает текст. Меня с недавних пор стало удивлять, почему большинство разработчиков (включая и меня пятилетней давности) не смотрят на самих себя, а выдумывают что-то новое.
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознавание символов
Добавлено: 28 май 07 13:39
>неюникодного русского интерфейса

Ой. Собственно интерфейс был английским, но в последний момент было принято решение о русификации. Про юникод я даже не подумал.

>в случае несверки с базой вообще не отображается результаты распознавания

Так это вполне нормально. Откуда взяться результатам без сверки с БД? Отключение сравнения было сделано чтобы обладатели не сильных процессоров могли без тормозов посмотреть результаты скелетизации / векторизации.

>у меня на компе прога результаты отображает моментально

Да у меня тоже (Core2Duo 2400), но на более медленных компах распознание может длится несколько секунд...

>Но так понял, что если что-то стоит первым в списке, значит наивысшая вероятность.

Правильно поняли. Собственно, нужды в процентном отображении достоверности символа особой нет. Для распознания символа достаточно знать результаты символа из БД который набрал наибольшее значение (поле Coof). Для подальшего анализа текста (при построении слова например) не будут также лишними символы которые заняли 2-4 позиции.

Ну если нужны результаты в процентном соотношении тогда:
Столбец AreaDB – в процентах, на сколько символ из БД воссоздался в распознаваемом символе.
Столбец AreaUnk – в процентах, сколько площади символ из БД покрывает в распознаваемом символе.
Рассмотрим пример с символом «k». В «чистом» варианте (шрифт Arial) оба поля будут по 100%. В Times New Roman символ k имеет «хвостики», которые конечно в БД не занесены и имеем AreaDB = 100% (полностью нашло семантическое соответствие с БД), но поскольку «хвостики» символом из БД не перекрываются, то имеем AreaUnk = 65 % («хвостики» занимают порядка 35% от символа).
Но, поскольку у очень многих символов части семантической структуры схожи (AreaDB=100), то смотреть только на эти два поля в отдельности, не стоит.

>я ей скормил под каждую цифру где-то по 10-20 изображений как печатных, так и от руки

А теперь представите что Вам нужно ей скормить где-то по 10-20 изображений не цифр (10 штук), а букв (26 маленьких + 26 больших, только латиницы).
- Посчитайте сколько времени нужно на обучение такой сети
- С таким возрастанием входных примеров ошибка распознания все-таки возрастет.
- Обучить ее нескольким возможным шрифтам не представляется возможным.
Теперь по поводу моего алгоритма:
- Обучение может сделать даже не особо обознаный пользователь
- В теории, количество возможных запоминаний символов хватает на все нужные вам шрифты - языки.
- В виду чрезмерного упрощения данных о символе (это связано с недостаточно качественной скелетизацией) возрастает возможность ошибки.

Наиболее перспективными мне видятся «гибридные» способы поиска, как я писал выше и как Данер зазначил в соседнем топике.

Хотя я не большой специалист по НС. Может кто-то знает о практических способах реализации распознания символов (именно СИМВОЛОВ всего алфавита)? А то мне постоянно попадаются примеры только с цифрами.

>не смотрят на самих себя, а выдумывают что-то новое.

Должен заметить что во всей моей системе «интеллектуальным» можно считать только сравнение семантической структуры символа. В остальном вся программа это реализация машинного зрения. Почему делалось именно так? Да потому что реализовать векторизацию растрового скелета, хотя не очень просто, но вполне возможно сделать в одиночку. Если делать хотя бы тот же «гибридный» подход, то написание подобной программы затянулось бы на гораздо больший строк…
[Ответ][Цитата]
anatoli
Сообщений: 249
На: Распознавание символов
Добавлено: 28 май 07 19:05
> Да у меня тоже (Core2Duo 2400)

Хе, у меня тоже Core2 Duo 2.4GHz (Е6600).. : ))


>> в случае несверки с базой вообще не отображается результаты распознавания
> Так это вполне нормально. Откуда взяться результатам без сверки с БД?

Ну я так и понял.. Картинки, кстати, неплохо было бы зазумить.. а то с лупой не очень удобно.. И цвета бы выбрать более контрастные..


Нужда в процентах заключается в том, что с процентами прогу можно использовать в сочетании с другими программами. Например, если у нас распознанный символ на 95% "а", а на 91% "о", то мы можем использовать, скажем, систему проверки орфографии и заменить "а" на "о" (если с "о" слово будет правильным), т.к. вероятность у них очень схожая. А вот если первый результат имеет вероятность за 90%, а второй лишь 20%, то тут возможность замены уже не такая очевидная.


> А теперь представите что Вам нужно ей скормить где-то по 10-20 изображений не цифр (10 штук), а букв (26 маленьких + 26 больших, только латиницы).

Ну раз надо, значит надо.. посадим индийца, и он за 20 долларов с удовольствием занесет по 100 примервов на каждую букву.. (кстати, не помню уже сейчас названия сайта, на нем можно было предлагать любой тип работы (скажем, распознавание CAPTCHAs) и потенциальные работники, типа как на аукционе, предлагали свои услуги за более чем приемлемые цены; я к тому, что 20 долларов - это не с потолка цифра).

Конечно, чем больше будет примеров, тем будет больше схожих образов, и тем хуже будет распознавание. Но под это есть решение. Можно заносить под каждую букву категории. Например, печатная "а", "а" от руки, "а" печатная курсивом, "а" - экзотический шрифт (типа того, что у Вас в папке Exotic), и т.п. Тогда распознование останется на высоком уровне. Я пробовал не только цифры, но и буквы очень похожие (не весь алфавит, а только очень похожие). Например, "К" от "о" отличить не сложно (поэтому я "К" и не пробовал - для экономии времени, цель была лишь оценить возможности), а вот отличить "О" (заглавная О) от "0" (ноль) уже значительно сложнее. Результаты были хорошие (точность выше 80-85%).


> - Обучить ее нескольким возможным шрифтам не представляется возможным.

Не совсем что-то я понял это. Программа вообще без шрифтов работает. Хоть Arial, хоть TNR, хоть Courier New, хоть Comic Sans, хоть от руки - программа все равно все распознает.
[Ответ][Цитата]
Victor Kazarinov
Сообщений: 13
На: Распознавание символов
Добавлено: 28 май 07 19:28
В распознаваемых символах есть 2 составляющие - их перцептивные характеристики (топология, геометрия, цвет и т.д.) и абстрактный смысл, вкладываемый написавшим этот символ. Один из примеров - английская буква "P" и русская буква "Р".
С первой составляющей могут справиться НС и др. аналогичные методы. Но их вых. результат будет пересечением перцептивных обучающих множеств и не более того. Обучающие последовательности позволяют обобщить лишь эти самые перцептивные характеристики. Дополнив систему абстрактным обучением и механизмом построения гипотез (фантазии), погружения в контекст, можно подойти к более надежным методам распознавания. Ведь иногда визуально более похожие объекты принадлежат к совершенно разным абстрактным классам и наоборот.
Все это похоже на деятельность правого и левого полушария человеческого мозга, хотя про него я мало что знаю.
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознавание символов
Добавлено: 28 май 07 20:06
На счет процентов.
На основании поля coof можно просчитать разницу (в процентах) между соседними символами. Коэффициент распознания первого "претендента" (символа) берем как 100% а в остальных "претендентах" проценты просчитываем на основании этих данных. Получим соответствующую разницу в процентах. Например при распознании символа "а" претендент "d" будет отставать от претендента "а" на 10%. В принципе этого числа вполне хватает для построения слова, где возможна подмена символов.

>Можно заносить под каждую букву категории

А потом просить пользователя определить к какому типу относится распознаваемый текст? Или пробовать автоматически это определить (что кстати тоже будет добавлять ошибку к конечным результатам)?

>Я пробовал не только цифры, но и буквы очень похожие

Я так понимаю Вы пробовали только несколько символов..? На практике, чем больше выборка обучения у НС, тем больше ошибка в конечных результатах. Поэтому оценка качества распознавания всего алфавита на основании пары букв не даст хороших результатов.

>Программа вообще без шрифтов работает

Я пробовал несколько программ с шрифтозависимыми методами распознавания (правда НС среди них не было). Изменение шрифта распознаваемого текста в таких программах снижало качество распознавания до 20-30%. Хотя знакомый текст такие программы распознают с 100% качеством.
[Ответ][Цитата]
anatoli
Сообщений: 249
На: Распознавание символов
Добавлено: 28 май 07 23:59
>> Можно заносить под каждую букву категории
> А потом просить пользователя определить к какому типу относится распознаваемый текст? Или пробовать автоматически это определить (что кстати тоже будет добавлять ошибку к конечным результатам)?

Смысл такой, что программа _обучается_ на разных типах. Т.е ей даются не совершенно непохожие друг на друга буквы вместе (скажем, русская буква "Д" заглавная печатная и та же заглавная от руки (с хвостиком слева внизу)), а по типам. Т.е. эти две "Д" будут в разных типах, дабы четкость символов в каждой группе была выше. (точно так же, как если ребенку объяснить, что "Д" - это "Д", а потом показать "Д" от руки, он тоже не сможет ее распознать, т.к. в ней нет ничего общего с печатной "Д")

А _при распознании_ программа уже будет анализировать изображение на основании всех символов из всех групп (автоматически, участие пользователя не требуется) и выводить, что это, скажем, буква "А" (при этом внутренне это, може быть, будет вензельная "А", или "А", как в книгах, когда первая буква новой главы рисуется размером 3х3 см).

Причем, она анализирует и то, какие результаты дали другие представители одного символа. Т.е. если ни одна группа (со всеми ее типами) не дала однозначного результата, то берем и суммируем все (или первые 3, 5 и т.п. лучших) результаты во всех группах и выбираем ту группу, сумарный результат которой оказался лучше. Ошибается такая программа крайне редко. Да и то, если и ошибается, то правильный результат стоит очень близко от неправильного, и при этом человек тоже затрудняется дать сходу (не задумываясь и не присматриваясь) однозначный ответ по поводу изображенного символа.


>> Я пробовал не только цифры, но и буквы очень похожие
> Я так понимаю Вы пробовали только несколько символов..?

Да, я пробовал только те символы, с которыми у программы могли бы возникнуть сложности. Т.е. я пробовал "Г" и "Т", "О" и "0", "М", "Н" и "И". Весь алфавит сразу я не пробовал. Но можно попробовать..


>> Программа вообще без шрифтов работает
> Я пробовал несколько программ с шрифтозависимыми методами распознавания

Так эта ведь не шрифтоЗависимая. Она как раз шрифтоНЕзависимая (ну, на сколько вообще эта независимость возможна).
[Ответ][Цитата]
 Стр.1 (8): [1]  2  3  4  5  ...  8След. > >>