Искусственный Интеллект

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Искусственный Интеллект » Макеты и реализации » Распознавание рукописного текста


Распознавание рукописного текста

Сообщений 1 страница 30 из 165

1

Данная тема является продолжением инициативы, начатой на форуме GotAI.

Суть инициативы заключается в проведении публичного соревнования между форумом АrtМind и GotAI в решении некоторой нетривиальной задачи, имеющей непосредственное отношение к искусственному интеллекту.

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

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

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

0

2

у меня есть несколько замечаний по процедуре...

я не считаю, что "форумы" могут "соревноваться" и в этом есть смысл...
все (многие) участники этого форума являются участниками многих других...
и GotAI и АртМайнд - это не торговые рамки, нет смысла их раскручивать (пока)...

Но... АртМайнд позиционируется как форум, направленный на техногическое "понимание" ИИ,
на то, чтобы обсужать здесь конкретные вопрос, если угодно - АртМайнд должен стать Инженерным
форумом... Поэтому мне бы хотелось, чтобы участников, которые умеют писать код
и макетировать было бы здесь много...

Поэтому, пусть это будет соревнование... Но пусть это будет сначала соревнование персон,
а уже затем - форумов...

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

Кстати, у меня есть кандидатура на роль арбитра - Combinator,
если у него нет самоотвода...

0

3

Признаюсь не тая, я испытываю скепсис к необходимости открытия дополнительного форума (для описанных целей) и GotAI считаю (пока) лучшим из того, что есть. Поэтому вижу смысл обсуждать свои идеи и реализации, связанные с соревнованием, именно там. Кроме того, люди, оставшиеся, по тем или иным причинам, за бортом форума ArtMind, должны иметь практическую возможность направить своё неудовольствие (или удовольствие) в конструктивное русло и тоже участвовать в процессе - для этого и необходим либеральный форум - GotAI. Так я понимаю соревнование между форумами, между их идеологиями. Безусловно, фактически участниками соревнования будут конкретные люди и идеи. Я надеюсь.

В остальном возражений нет.

В продолжение, думаю, имеет смысл установить приемлемый уровень упрощения задачи и сформулировать более конкретное ТЗ.

0

4

Prosolver написал(а):

Так я понимаю соревнование между форумами, между их идеологиями

как-то я не увидел идеологий у форумов... особенно у GotAI, но не будем его обсуждать...
ты, безусловно, можешь обсуждать "ТЗ" там, где хочешь, просто у меня предчувствие, что конструктивное
обсуждение будет именно здесь... :-)
когда "ваш форум" все обсудит, поставь меня, плиз, в известность о ТЗ...

пока (для размышлений) я формулирую его так:
1. Есть исходное изображение в графическом формате (например, jpeg) которое представляет собой
страницу рукописного текста.
2. Язык - строго русский.
3. Никаких специальных терминов в тексте не используется.
4. Почерк - условно разборчивый, пригласим эксперта для оценки, мой критерий - свободно читается человеком
5. Почерки могут быть разными, нет специального обучения почерку и начертанию букв (обсуждаемо)
6. Разрешение изображения любое, но буква в среднем занимает от 24 до 100 пикселов в высоте, точнее - не менее 24...
7. Требования к грамматике - нет, могут быть ошибки.
8. Спелчеккер - не элемент распознавателя, распознавание дается с ошибками, допущенными в исходном тексте на изображении...
9. Выход - плэйн текст на русском языке.
10. Скорость, качество, удобность интерфейса и т.п. - критерии при выставлении оценки системе.

Отредактировано Egg (2009-08-05 22:57:35)

0

5

Очень интересно! :)

Пункты 1, 2, 7, 8, 9, 10 - возражений пока не вызывают.

Неясно назначение пункта 3. С учётом пунктов 7 и 8, по-моему, он лишний.

Пункт 4 предлагаю уточнить - "свободно читается пятью случайно выбранными людьми" (обсуждаемо).

По пункту 5. Предлагаю задать две страницы текста: первая - открытая, тестовая, для обучения и отладки программ; вторая - секретная или (лучше) написанная в день тестирования для осуществления оного. Кем написанная и каким почерком - не важно.

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

Пункт 6 предлагаю дополнить условиями: направление чтения слов и предложений - слева направо, строк - сверху вниз (но само изображение может быть произвольно повёрнуто (или даже искажено)). Между строками должно быть ненулевое расстояние (строки не должны налезать друг на друга - обсуждаемо). Буквы могут быть как печатными, так и прописными. Расстояние между цветом букв и цветом фона в пространстве RGB должно составлять не менее 20 единиц.

Egg написал(а):

когда "ваш форум" все обсудит, поставь меня, плиз, в известность о ТЗ

Ok.

0

6

Prosolver написал(а):

Неясно назначение пункта 3

Например такой текст: "Вода́ (оксид водорода) — прозрачная жидкость, не имеющая цвета (в малом объёме) и запаха. Химическая формула: Н2O. В твёрдом состоянии называется льдом или снегом, а в газообразном — водяным паром. 71 % поверхности Земли покрыто водой (океаны, моря, озера, реки).
Является хорошим сильнополярным растворителем. В природных условиях всегда содержит растворённые вещества (соли, газы)."
Оксид - это не ошибочное слово, это термин. H2O - это вообще обозначение.
В астрономии чудовищное количество разных обозначений. Смешанные терминологические тексты с обозначениями - это довольно трудно,
на мой взгляд. Нужно примерно такой текст: "Мама мыла Раму. Рама медитировал спал. Папа был в командировке."

С остальными дополнениями согласен.

UPD: очень важно: слова пишутся слитно, а не каждая буква раздельно...
(это требование - дополнительные 300% времени :) )

Отредактировано Egg (2009-08-06 02:29:02)

0

7

Egg написал(а):

слова пишутся слитно

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

0

8

Egg написал(а):

Оксид - это не ошибочное слово, это термин
8. Спелчеккер - не элемент распознавателя, распознавание дается с ошибками, допущенными в исходном тексте

Предлагаю либо ввести полный запрет на использования словаря, либо разрешить полностью, с учётом спец-терминов и исправлением ошибок написания. Иначе неясна граница между тем, что считать исправлением ошибки в написании, а что ошибкой в распознавании. Т.е. если словарь помогает в распознавании вернонаписанных слов он, при этом, может исправлять ошибки распознавания отдельных букв, а не ошибки допущенные тем, кто писал текст.

Если же словарь запрещён, неясен запрет на использование специальных терминов. Для программы, не имеющей словаря, термины "оксид" и "мама" - равнозначны по своей специальности.

Также можно ввести запрет на использование любых символов (цифр, например), кроме букв русского алфавита (заглавных и прописных) и основных знаков препинания ( . , : - ! ? )

Egg написал(а):

могут писаться слитно, нет требований к раздельному написанию буков

Именно это я и подразумевал.

0

9

Prosolver написал(а):

Иначе неясна граница между тем, что считать исправлением ошибки в написании, а что ошибкой в распознавании.

вводить запрет на использовании словаря - это абсурд и убивает процентов 80% хорошего кода,
основанного на частотности, цепях и т.п. статистике.
Не исправлять ошибки - это дополнительное усложнение. Легче - исправлять. :-) :-)
Давай снимем требования к исправлению, если хочешь. Мне все равно.
Хорошо, пусть будут термины. Я не против.

0

10

Соглашаясь с предыдущим сообщением и с учётом всех правок, получается такое ТЗ:

1. Исходное изображение в графическом формате (например, jpeg), которое представляет собой
страницу рукописного текста.
2. Язык - строго русский. Запрещено использование любых символов (цифр, например), кроме букв русского алфавита (заглавных и прописных) и основных знаков препинания ( . , : - ! ? )
3. Почерк - условно разборчивый, критерий - свободно читается 5 случайно выбранными людьми.
4. Почерки могут быть разными, нет специального обучения почерку и начертанию букв, но в качестве инициализирующего базового задания задаётся некая конкретная страница рукописного текста обязательная для распознавания.
5. Технические детали:
- Разрешение изображения любое, но символ занимет в высоту не менее 24 пикселов.
- Направление написания/чтения слов и предложений - слева направо, строк - сверху вниз (но само изображение может быть произвольно повёрнуто (или искажено другим образом)).
- Между строками должно быть ненулевое расстояние (строки не должны налезать друг на друга).
- Буквы могут быть как печатными, так и прописными; написанными слитно и/или раздельно.
- Расстояние между цветом букв и цветом фона в пространстве RGB должно составлять не менее 20 единиц.
6. Требования к грамматике - нет, могут быть ошибки.
7. Можно пользоваться любым словарём для исправления любых ошибок.
8. Выход - плэйн текст на русском языке.
9. Скорость, качество, удобность интерфейса и т.п. - критерии при выставлении оценки системе.

Если возражений нет, я скопирую ТЗ на GotAI и если после пары дней висения там и здесь не возникнет дополнительных соображений, думаю, можно будет давать Start :)

+1

11

я вот просто буквы выделял-раскрашивал, тут еще распознавания нет
http://www.aicommunity.org/members/no/Kaligraph.rar
сейчас это далеко от моих интересов, хотя конечно стандартная задача инженерного ИИ

словарь двух-трех-буквенных сочетаний легко поместится в коде

0

12

NO написал(а):

Kaligraph

симпатично...
да, работа со словарями, в условиях, когда имеет настолько "плохой вход" - это
единственное, что внушает оптимизм. :)

0

13

Prosolver написал(а):

Если возражений нет

возражений нет...

0

14

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

0

15

NO написал(а):

важны только первая и последняя буква слова

кроме того, именно первая и последняя буквы лучше всего и распознаются...
видимо именно поэтому вообще возможно чтение рукописного текста... :)

0

16

Количество информации в букве чуть меньше 2 бит, примерно 16 бит на слово, с учетом статистики 10.
Даже просто длина слова видится может 30 градаций, это уже 5 бит информации, половина всего распознавания. Потом разные хвостики и пустоты. Человек вообще почти ничего не распознает.

0

17

NO написал(а):

просто длина слова

про длину слова я тоже думал... это очень хорошая характеристика...

UPD: в английском языке, кстати, почти все важные слова - короткие...
когда я после франзуцского начал заниматься английским, мне по-началу казалось,
что они кроме артиклей ничего в предложения и не пишут... :)

Отредактировано Egg (2009-08-06 22:57:41)

0

18

Ну вот я немного разбирался и успокоился.
Потом свой шрифт придумывал, там всего один значек-крючек и все буквы кодируются его высотой в строке и поворотами-отражениями.
Сделал ttf, получилось похоже на арабский язык.
У арабов кстати одна-и-та-же буква в начале в конце или в середине слова пишется по-разному.

0

19

в русском тоже коротких больше
9874539 И
7546768 В
5550318 НЕ
4437343 НА
3866430 ЧТО
3230421 Я
3078502 С
2910042 ОН
2075024 А
2001670 КАК
1786800 НО
1758705 ЕГО
1727739 ЭТО
1676284 К
1646018 ТО
1485942 ПО
1411844 ИЗ
1397598 ВСЕ
1220049 ЗА
1209027 У
1119288 ОНА
1075356 ОТ
1028031 ТАК
977467 ЖЕ
939763 ТЫ
938863 О
914179 ОНИ
908993 БЫЛО
844853 БЫ
827614 МЫ
805423 ВЫ
795544 ЕЕ
780627 МНЕ
771141 КОГДА
751782 МЕНЯ
749297 ЕСЛИ
737567 ДЛЯ
726879 ТОЛЬКО
726461 ЕЩЕ
710485 БЫЛ

0

20

NO написал(а):

Потом свой шрифт придумывал

тогда надо реформу алфавита тоже сделать... такое количество букв совершенно неуместно...
нужно оставить 16, 4 гласных + 12 согласных... слова переделать по фонетическому подобию,
те, которые плохо переделываются - или редуцировать или как в польском писать один звук тремя буквами...

0

21

NO написал(а):

в русском тоже коротких больше

в русском ты не скажешь настолько коротко...  I did it, I will see it,
ключевые глаголы все лилипуты: can, get, do, has/have, am/is/are...
где-то читал, что английские тексты в 1.5 (или больше) раза короче русских...

0

22

Egg написал(а):

I did it, I will see it,

всё, увижу :)

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

0

23

в твоем частотном списке только два глагола "БЫЛО" и "БЫЛ", что для русского языка характерно, а для нас поучительно... :)
/* а в этом моем - ни одного :) */

0

24

Эм... Начертание букв надо или как-то зафиксировать, или составить базу возможных. Потому как распознать букву в неизвестном начертании - в общем случае невозможно. Никто не может сказать, является данная картинка иероглифом "вода" или иероглифом "ветер", если их никогда не видел :)
Как вариант - подготовить 3 страницы текста: одну для обучения, одну для тестирования (обе доступны изначально), и одну для соревнования. С одной стороны, это будет в некоторой мере модельной задачей, с другой - не потребует черезмерно большого времени разработки.
Также, использование словаря - это две задачи вместо одной. Можно, но ради чего? Лучше отдельным соревнованием провести. Лучшая система получится при комбинации лучшего распознавания самих букв с лучшей словарной (и даже контекстной) коррекцией. А так будет соревнование комбинации подходов, и мы не узнаем, у кого лучше одно, а у кого лучше другое.
Произвольная ориентация текста - снова внесение лишней задачи. ИМХО вполне достаточно зафиксировать отклонение от нормальной ориентации не более 20 градусов.

И - сколько времени на это предлагается потратить? ИМХО, меньше 2х месяцев нереально, больше 8ми бессмысленно...

Отредактировано 3d6 (2009-08-07 16:05:43)

0

25

3d6 написал(а):

И - сколько времени на это предлагается потратить?

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

0

26

3d6 написал(а):

Потому как распознать букву в неизвестном начертании - в общем случае невозможно.

если незнакомая буква только одна и она в контекста слова - возможно учиться на ходу...

3d6 написал(а):

Также, использование словаря - это две задачи вместо одной.

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

3d6 написал(а):

Произвольная ориентация текста - снова внесение лишней задачи. ИМХО вполне достаточно зафиксировать отклонение от нормальной ориентации не более 20 градусов

с этим соглашусь, но 20 градусов - это почти произвольная ориентация в моем понимании...

0

27

Egg написал(а):

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

Да, но словарь и контекстное распознавание - это то, что имеет смысл делать только после того, как сделано предварительное, безконтекстное распознавание.
Честно говоря, на полноценную систему распознавания рукописного текста меня скорее всего не хватит. Слишком уж большой объем работы, не особо значительная научная ценность, да и плюс коммерческая ценность под вопросом (ради чего тогда столько технической работы?). А вот какой-нибудь вариант сырого побуквенного распознавания - это примерно так же интересно, но объем технической работы куда меньше, соответственно реализовать можно за несколько месяцев. Если получится хорошо - можно будет думать о продолжении, получится плохо - можно будет написать статью :) и забросить без особого сожаления.
Отдельно можно рассматривать систему коррекции искажений текста с помощью контекста. В этой задаче на вход идет поток букв, полученный внесением различного рода шумов в исходный текст (характер шумов может зависеть от грамматических особенностей, визуальной схожести, похожего произношения, или еще чего), а на выходе нужно получить восстановленный текст (и его альтернативы, если есть существенно неоднозначные моменты). Тоже очень интересная задача. Но не нужно рассматривать все скопом - иначе есть шансы не реализовать ни одну :)

0

28

3d6 написал(а):

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

Вот видите, какие мы все разные... :-) :-)

мне как раз не слишком интересна проблема распознавания, я "знаю как" это сделать, при этом мне видно, где есть объективные ограничения. Плохой сигнал - этого я хлебнул в полном объеме в прошлом проекте, где приходилось искать объекты в рассеянии, шуме, искажениях и отражениях (магнитная дефектоскопия магистральных трубопроводов). Как ни странно, эти задачи (по обработке) очень похожи... Как не бывает двух одинаковых дефектов, так не бывает двух одинаковых начертаний одной и той же буквы... так вот, если сигнал плохой (а он - плохой), то с этим никакой математикой ничего нельзя поделать... если в сигнале нет классификационных признаков и буквы И, П, Н, Ш, К, Л и т.д. :-) выглядят очень похожими, то никакое "побуквенное"  распознавание не поможет.

мне интересно (в рамках моего будущего проекта Референт) как раз цепи, частотности, вероятности и комбинаторика слов, сочетаний букв, длин слов и тому подобное. Именно это - наш язык, собственно именно поэтому данная задача - реконструкционная, а не задача распознавания... :-)

Отредактировано Egg (2009-08-08 01:50:20)

0

29

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

0

30

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

что такое комплексная система мне вообще не понятно... система всегда комплексная...
если, конечно, пишется рабочая система, а не материал для статьи в журнале...

З.Ы. искать потерянные вещи под фонарем - это на мой вкус - прогулка, а не экспедиция... :)

0


Вы здесь » Искусственный Интеллект » Макеты и реализации » Распознавание рукописного текста


Создать форум.