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

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
dima-pol
Новичок
Новичок
 
Сообщения: 28
Зарегистрирован: 03.11.2008 (Пн) 17:47

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

Сообщение dima-pol » 10.11.2010 (Ср) 21:42

Здраствуйте!

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

Хотелось бы иметь более менее универсальный способ. Например, распознавание текста (OCR).

Нет ли для VB6 какого нибудь готового OCR решения?

Спасибо.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Распознавание текста с экрана

Сообщение Хакер » 10.11.2010 (Ср) 21:46

dima-pol писал(а):Не всегда получается это сделать с помощью Win API.

Что имелось в виду? Перехват выводящих текст API?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Распознавание текста с экрана

Сообщение Joo » 11.11.2010 (Чт) 8:18

Хакер писал(а):Что имелось в виду? Перехват выводящих текст API?

Вероятно имеются ввиду функции GetWindowText.
dima-pol писал(а):Нет ли для VB6 какого нибудь готового OCR решения?

Я как-то писал, для распознавания цифр, что выдает программа для игры в интернет-казино. Могу поискать, но для распознавания букв надо дорабатывать, ну или погуглить.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Распознавание текста с экрана

Сообщение alibek » 11.11.2010 (Чт) 10:00

Joo писал(а):Вероятно имеются ввиду функции GetWindowText.

Это разные случаи. Хакер предлагает перехватывать сами процедуры вывода текста, это более универсально.
Lasciate ogni speranza, voi ch'entrate.

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Распознавание текста с экрана

Сообщение Joo » 11.11.2010 (Чт) 12:40

alibek писал(а):Хакер предлагает перехватывать сами процедуры вывода текста, это более универсально.

Ты смеешься? Где ты тут увидел, чтоб он, что-то предлагал?
По моему тут четко видно, что он уточняет:
Хакер писал(а):dima-pol писал(а):
Не всегда получается это сделать с помощью Win API.

Что имелось в виду? Перехват выводящих текст API?


И вообще alibek, я пытался понять автора топика и дать ответ, на вопрос Хакера "Что имелось в виду?", но не как не уточнял второе предложение Хакер.
Последний раз редактировалось Joo 11.11.2010 (Чт) 15:04, всего редактировалось 1 раз.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Распознавание текста с экрана

Сообщение Хакер » 11.11.2010 (Чт) 13:35

alibek писал(а):Хакер предлагает перехватывать сами процедуры вывода текста, это более универсально.

Именно это я и имел в виду.

Joo забавен.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Распознавание текста с экрана

Сообщение Joo » 11.11.2010 (Чт) 13:44

Хакер писал(а):Именно это я и имел в виду.

Я забавен? Твой пост не был похож на предложение.
Ты процитировал текст "Не всегда получается это сделать с помощью Win API.", и спросил "Что имелось ввиду?", дальше последовал возможный вариант ответа на свой же вопрос "Перехват выводящих текст API?".
Предложение могло бы выглядеть так "Попробуй перехват выводящих текст API" ну или хотя бы так "А ты не пробовал перехват выводящих текст API?"
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Распознавание текста с экрана

Сообщение Хакер » 11.11.2010 (Чт) 13:47

Глупо писать «попробуй», если человек именно это уже и пробовал и говорит, что это не подходит. Поэтому пишут вопросительно.

Пробовал — так и скажет. Будет дальше искать.
Не пробовал — попробует (здесь вопрос выступает как предложение).
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Распознавание текста с экрана

Сообщение Joo » 11.11.2010 (Чт) 14:58

Хакер писал(а):если человек именно это уже и пробовал

Ты сам веришь в это? Думаешь человек пробовал перехват выводящих текст API? (хотя ты сейчас во что угодно поверишь).

Ладно фиг с ним. Не будем разводить флуд.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

dima-pol
Новичок
Новичок
 
Сообщения: 28
Зарегистрирован: 03.11.2008 (Пн) 17:47

Re: Распознавание текста с экрана

Сообщение dima-pol » 11.11.2010 (Чт) 21:50

Да под Win API я имел ввиду GetWindowText SendMessage LVM_GETITEMTEXT др.
Нет я не пробовал перехват выводящих текст API. Я не знаю, что это такое.

Спасибо всем за участие, но обсуждение как-то ушло от темы (не считая 1го сообщения Joo).

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

Тут я скачал классную утилитку Kleptomania_Commercial. Она распознает текст с любой области экрана, очерченной мышкой, и помещает его в буфер обмена. А управлять другим приложением, имитируя работу мыши - это я уже пробовал. Конечно было бы лучше найти какую либо DLL, реализующую OCR. 1.Но есть ли такая?

Кстати, при установке, Kleptomania_Commercial сканирует все устновленные в системе экранные шрифты, а в хелпе сказано, что это как раз упрощает алгоритм распознавания.
2.Ни у кого нет идей, как с помошью шрифтов упростить распознавание?

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

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Распознавание текста с экрана

Сообщение Хакер » 11.11.2010 (Чт) 21:57

dima-pol писал(а):Что касается метода "перехват выводящих текст API", то прежде чем его пробывать
хотелось бы получить ответ: 3. А является ли он универсальным методом, годиться ли он на все случаи захвата текста с экрана (каким является OCR)?

Если текст является картинкой, то нет. Если текст растеризуется не с помощью GDI — то нет. Впрочем, это ошибкоустойчивый метод, он всегда даст то, что есть. OCR может распознать текст даже с картинки, но правильность разбора не гарантируется. До сих пор вспоминаю рождённые OCR локальные (для моей группы разработчиков) мемы «Кюахстан» и «Гашишные акватории».
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

dima-pol
Новичок
Новичок
 
Сообщения: 28
Зарегистрирован: 03.11.2008 (Пн) 17:47

Re: Распознавание текста с экрана

Сообщение dima-pol » 11.11.2010 (Чт) 23:26

Если текст является картинкой, то нет. Если текст растеризуется не с помощью GDI — то нет.

Посмотрите во вложении одну из моих задачек - мне надо регулярно читать текст из колонки Value в строке Name (в данный момент это XSIG020045). Это явно не картинка, а как наперед определиться с GDI, прежде чем пробовать "перехват выводящих текст API".
Может у Вас есть пробный ЕХЕ, или примерчик на VB6?


До сих пор вспоминаю рождённые OCR локальные (для моей группы разработчиков) мемы «Кюахстан» и «Гашишные акватории».

Подозреваю, что у Вас это была OCR отсканированного текста, напечатанного на бумаге. Подозреваю, что OCR экранных фрагментов, да еще с использованием шрифтов дает очень высокую достоверность. Или я ошибаюсь?
Вложения
CLink.jpg
CLink.jpg (77.39 Кб) Просмотров: 3282

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Распознавание текста с экрана

Сообщение Хакер » 11.11.2010 (Чт) 23:36

В данном случае вообще рекомендовано два пути:
  • Искать на предмет наличия у приложения нормального программого интерфейса (COM или просто). У серьёзных программ он обычно есть. Особенно у программ, призванных быть связующим звеном между CAD-ами, базами данных, сервисной документацией и прочего.
  • Смотреть, что это за ЭУ. Очень вероятно, что это ListView в режиме Report. Тогда надо просто слать ему нужные сообщения, чтобы получить текст. Это куда более правильно, чем в таком случае перехватывать рисующие API.
  • Таки перехватывать ExtTextOut/DrawText и тому подобные функции.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Распознавание текста с экрана

Сообщение alibek » 12.11.2010 (Пт) 12:15

dima-pol писал(а):Подозреваю, что у Вас это была OCR отсканированного текста, напечатанного на бумаге. Подозреваю, что OCR экранных фрагментов, да еще с использованием шрифтов дает очень высокую достоверность. Или я ошибаюсь?

Если текст расположен на однотонном фоне, то да, достоверность будет высокой.
И это, кстати, будет не совсем OCR. Тут будет не распознавание образов, а сравнение с эталоном, это и быстрее, и проще.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 130

    TopList