Что нового

Как распознать текст с изображения?

Leanna

Новичок
Сообщения
25
Репутация
3
Подскажите пожалуйста как написать скрипт распознающий текст из скриншота:

Например имеется картинка:


Имеются координаты (в рамках картинки) x1y1 x2y2 = 100 100 400 250 в которых находится нужный текст.

Как можно распознать текст из картинки, что бы передать распознанный текст в переменную?

В некоторых темах ссылаются на библиотеки, cap-cap, но как с помощью них сделать распознавание, не представляю.

Благодарю за рассмотрение.

UPD1. Нужно распознать русский текст.
UPD2. Подойдет так же распознавание с изображения экрана, координаты в которых заключен текст имеются.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: Как распознать текст из файла картинки?

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"Как распознать текст из файла картинки?" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Модератор.









Думаю тебе имеет смысл поискать на оффоруме темы связанные с Tesseract. Там были рабочие примеры
 

Asshaker

Знающий
Сообщения
150
Репутация
17
Re: Распознавание текста из файла картинки?

Код:
PixelSearch(x1,y1,x2,x2,color)

И определить для каждой цифры уникальные точки, по ним то и искать.
 

Arei

Скриптер
Сообщения
938
Репутация
115
Re: Распознавание текста из файла картинки?

OCR(поищи примеры на форуме)
OffTopic:
Asshaker ему нужно распознать текст из картинки, а PixelSearch ты такого и за час не разберёшь.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: Распознавание текста из файла картинки?

Arei сказал(а):
OCR(поищи примеры на форуме)
OffTopic:
Asshaker ему нужно распознать текст из картинки, а PixelSearch ты такого и за час не разберёшь.
Разберается. Быстро и без лишних заморочек. Но для этого лучше использовать PixelGetColor
 

running-frag

why me?
Сообщения
441
Репутация
60
Re: Распознавание текста из файла картинки?

Как вариант ещё сделать по проверке полностью катритки. Но для этого нужно иметь все эти картинки (скрины цифр).

По сути это тот же что и PixelGetColor только более расширенный.

Минусы в том что нужно знать все возможные варианты (0-9 цифры).

По поводу PixelSearch имхо, Белфи правильно говорит лучше уж PixelGetColor.
По поводу OCR, его не так легко разкурить (взять тот же тессеракт).


PS: Но с другой стороны если взять БГ + шрифт, картики можно самому сделать.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: Распознавание текста из файла картинки?

Так же для несложных задач можно использовать ImageSearch.au3
 

running-frag

why me?
Сообщения
441
Репутация
60
Re: Распознавание текста из файла картинки?

Belfigor [?]
Так же для несложных задач можно использовать ImageSearch.au3
OffTopic:
Как по мне лучше уж написать свой, что я и сделал, ImageSearch. Т.к. о скорости на больших обьёмах у него проблемы - слишком долго. Но для данного случая да - он подходит на 100%.

Но это опять же при наличии картинок.


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

PS: но всё имхо, если это браузерная игра о каких картинках речь? :rofl: cудя по скрину мы тут зря распинаем о них :smile:
 
Автор
Leanna

Leanna

Новичок
Сообщения
25
Репутация
3
Re: Распознавание текста из файла картинки?

Спасибо за ответы.
Готовых решений по распознаванию на форуме по поиску не нашла совсем.

Самое близкое из найденого, это Tesseract, но пока в процессе переваривания.
http://www.autoitscript.com/forum/topic/89542-tesseract-screen-ocr-udf/

PixelSearch использовала для того что бы опредлять куда нажать, иногда было что не срабатывало не всегда срабатывало (не видит он точки нужного цвета и всё), а иногда появлялись вкрапления нужного цвета в другом месте и прога не туда нажимала (это в игре использовалось).

Попробую сначала с Tesseract.


Добавлено:
Сообщение автоматически объединено:

Предупреждение
За нарушение правил форума (пункт Б.5):
Модераторы, я не понимаю что не так с названием этой темы.
Вы мне шлёте многочисленные страшные личные сообщения о нарушениях правил, которых я не нарушала.
Тема не начинается с указанных вами слов, заголовок отражает суть моего вопроса.
Что вы от меня хотите? Уже один раз переименовала, и снова вам не нравится.
 

running-frag

why me?
Сообщения
441
Репутация
60
Re: Распознавание текста из файла картинки?

Leanna [?]
Попробую сначала с Tesseract.
Лично я рекомендую "свои велосипеды", в процессе изобретения много нового о автоит узнаешь (если ты уже не Pro), что увеличит возможности в написании бота.

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

В Tesseract много (на мой взгляд) мусора, там чего то доустанавливать, ещё и хрен поймёшь как он работает ибо ехе, ну в общем я быстро ушёл с него на свои велосипеды.

По поводу принцепов ещё загляни в раздел EVE Online ботов, там тоже есть много чего интересного.
 
Автор
Leanna

Leanna

Новичок
Сообщения
25
Репутация
3
Re: Распознавание текста из файла картинки?

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

Что ты имеешь в виду под мастер образцом? какой алгоритм?

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

Про EVE Online почитаю, спасибо.
 

running-frag

why me?
Сообщения
441
Репутация
60
Re: Распознавание текста из файла картинки?

Я не стану описывать что такое "мастер образец". Проще говоря это то что ты видишь в игре.

По поводу какой алгоритм распознования. http://autoit-script.ru/index.php/topic,6890.0.html

Как это ты не имеешь "суперточные" координаты? :-X Читай функцию
Код:
Opt()
поищи там всё на счёт координат. Ну это не браузерная, это флэш. Вещи разные. В браузерных не нужно извратом заниматься, под них есть UDF. А вот под флэш да, там нужен пиксельхантинг (хотя не всегда).

На счёт БД, верно. Скажу так, писать нужно от "редактора базы", от которой будешь отталкиваться в будущем. Т.е. если в игре что то сменится, быстренько вызываешь функциями редактора и вуаля, всё дальше пашет с нужными данными. Я к тому что любого бота нужно писать от его редактора (а не бота, а потом его редактор, личное имхо). Так же выносить общие данные в файл (можно .ini можно в .xml, насколько фантазии хватит), к примеру то же описание цифр...

В теории да, если найдёшь уникальный цвет для каждой цифры - идеал. Но не факт что получится. Как минимум у тебя будет 4 вида цифр (пикселей). Почему? у тебя там х4 цифры т.е. XX\XX, беда состоит в том что (согласно скрину) у тебя БГ (бэкграунд колор) градиент (заливка). Т.е. у каждой цифры своя "подложка" что усложнит написание определения цифры. Но с другой стороны если ты найдёшь как определить по одному пикселю - будет не так много кода. В идеале конечно же будет много, но толковый (ноги будут расти от редактора).

По поводу алгоритма подскажу что не нужно искать все схождения пикселей, достаточно одного ряда (по высоте цифры), ну или одного пикселя. 8)


Добавлено:
Сообщение автоматически объединено:

да и реши вопросы с топиком, я больше постить тут не буду если модеры\админы говорять что есть косяки (у меня по первой такое тоже было) :laugh:
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Re: Распознавание текста из файла картинки?

Еще хороший OCR можно через Офис 2003 сделать
Но и Tesseract не плох
Например, при установленном Tesseract кинуть картинку с именем 1.jpg в папку с Tesseract-ом
и запустить с такой командной строкой
Код:
Run('C:\Program Files\Tesseract-OCR\tesseract.exe 1.jpg Test -l eng','C:\Program Files\Tesseract-OCR')

в папке с Tesseract появится файл Test.txt с распознанным текстом.
 

running-frag

why me?
Сообщения
441
Репутация
60
Re: Распознавание текста из файла картинки?

WSWR [?]
Например, при установленном Tesseract кинуть картинку с именем 1.jpg в папку с Tesseract-оми запустить
А разве в него не нужно сначало "впаять" этот шрифт для корректного определения?
 

eropov

Jury
Сообщения
195
Репутация
25
Re: Распознавание текста из файла картинки?

Еще можно распознать картинку с помощью программы Cap.
Суть распознавания заключается в создании шаблонов - кусков картинки с цифрами, буквами.
Если на капче нет сложных шумов, поворотов текста, то распознавание равно 100%.
 
Автор
Leanna

Leanna

Новичок
Сообщения
25
Репутация
3
FineReader ScreenshotReader прекрасно всё распознает. Вот бы его из командной строки :scratch:

Спасибо. Эта штука работает с русским текстом. (Конечно не так идеально, как FR ScreenshotReader, но тем не менее)
Можно ли указать ей координаты где находится текст? Или что бы не из картинки? например, а с экрана (тоже в рамках координатного прямоугольника)?
http://code.google.com/p/tesseract-ocr/downloads/list
Код:
Run('C:\Program Files\Tesseract-OCR\tesseract.exe 1.jpg Test -l rus','C:\Program Files\Tesseract-OCR')


В эти темах, есть полезная информация, правда только только английский распознает
http://www.autoitscript.com/forum/topic/89542-tesseract-screen-ocr-udf/
http://www.autoitscript.com/forum/topic/92795-little-prob-ocr-tesseract-need-help-oo/
SimpleTesseract.au3 http://www.autoitscript.com/forum/index.php?app=core&module=attach&section=attach&attach_id=25716
Код:
#include <SimpleTesseract.au3>
$omg = _TesseractScreenCapture(0,"",1,3,880,527,932,542,1)
MsgBox(0, "Test", $omg)


И ещё, что это за OCR через Офис 2003? Есть ли пример?


Добавлено:
Сообщение автоматически объединено:

Еще можно распознать картинку с помощью программы Cap.
Не подскажите, как с помощью командной строки через autoit запустить CAP, что бы он распознавал?

Cap умеет как-то использовать FineReader для распознавания (из их FAQ). Через Autoit это можно сделать?
 

Arei

Скриптер
Сообщения
938
Репутация
115
Нашёл распознание OCR онлайн, отправкой запроса.
Вот сайт там эти запросы
OffTopic:
http://www.free-ocr.co.uk/ocr.asmx?op=Analyze

Попробуйте кто нибудь сделать запрос.
 

eropov

Jury
Сообщения
195
Репутация
25
Для распознавания CAP нужна картинка, для ее получения нужно сделать скриншот нужной части экрана. Нарезать нужные шаблоны, а после использовать, так:
Код:
#include <ScreenCapture.au3>
_ScreenCapture_Capture(@ScriptDir & "\GDIPlus_Image2.bmp", 0, 0, 70, 70); получаем картинку
$RunDOS = _RunDOS(@ScriptDir & "\Cap\Cap.exe /recognize /ini CapLettersBWC.ini"); запускаем cap через cmd с настройками CapLettersBWC.ini(в настройках указывается файл в который записывается распознанная строка(1.txt))
_FileReadToArray(@ScriptDir & "\Cap\1.txt", $sArray);записываем строку из файла в массив $sArray
 

forfrends

Новичок
Сообщения
176
Репутация
3
Например, при установленном Tesseract кинуть картинку с именем 1.jpg в папку с Tesseract-ом
и запустить с такой командной строкой
Код: AutoIt [Выделить]
Код:
Run('C:\Program Files\Tesseract-OCR\tesseract.exe 1.jpg Test -l eng','C:\Program Files\Tesseract-OCR')

в папке с Tesseract появится файл Test.txt с распознанным текстом.

а как нормально распознать русский текст?
Я использую этот код:
Код:
Run('C:\Program Files\Tesseract-OCR\tesseract.exe 12112.jpg Test -l rus','C:\Program Files\Tesseract-OCR')


В результате получаю такое: "куєы дикгтра"
картинка прилагается
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Тессеракт вероятнее всего не обучен шрифту, на который его применяют
 
Верх