Что нового

Идентификация всплывающих окон

Medic84

Омега
Команда форума
Администратор
Сообщения
1,585
Репутация
338
alexbs

{CodeWarn.Admin}
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
362
Все-таки, думаю, использование сравнения скриншотов не перспективно. Посмотрел в сторону OCR - оказывается, есть еще Tesseract 3.0 от Google, работающий из-под командной строки. Вроде как это свободное, бесплатное ПО. http://code.google.com/p/tesseract-ocr/downloads/list

После установки нужно запустить tesseract.exe
с параметрами типа:

Код:
1.jpg Текстовый -l rus

Где 1.jpg- имя граф файла, он должен лежать в папке с tesseract.exe
Текстовый - имя выходного файла, т.е. Текстовый.txt, он появится в папке с tesseract.exe

Но качество распознования такое, что понимает где-то половину текста. :scratch:

В общем, можно потестить на скринах окон 1C, и проверить, перспективно ли такое направление; установить Tesseract 3.00 на серверы, наверное, возможно? Автоматизировать само распознование средствами Autoit было бы несложно.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
WSWR [?]
Но качество распознования такое, что понимает где-то половину текста
потому что его еще обучить надо
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
362
Как оказалось, существует UDF Tesseract.au3
от seangriffin

http://www.autoitscript.com/forum/topic/89542-tesseract-screen-ocr-udf/page__hl__tesseract__fromsearch__1
Все уже готовое для захвата текста из нечитаемых окон и контролов
Правда, она вроде изначально не поддерживает русский язык, потребовалась небольшая доделка.
В итоге получается вполне пригодное средство для решения проблем, как в этой теме.
 
Автор
A

alexbs

Новичок
Сообщения
11
Репутация
0
Прошлую проблему с незакрытием файла $File0 решил путём его переименования после каждого использования. Думал, что скрипт работает нормально. Но выявилась неожиданная фича - скрипт отлично работает на удалённых серверах (в т.ч. ис-под шедулера), что и требовалось, но только при выполненном удалённом терминальном входе в систему. При отключенном сеансе (даже не закрытом) шедулер запускает скрипт, но он при сравнении не находит одинаковых скриншотов. При удалённом входе же в систему при запуске шедулером скрипт начинает исправно закрывать накопившиеся окна с сообщением об ошибке. Вопрос изначально был в том, что при отсутствии реакции на сообщение об ошибке 1С (т.е. незакрытии окна) необходимая внешняя обработка 1С шедулером не запускается, а только плодит окна об ошибках.
Пробовал запускать скомпилированный скрипт через RUNAS явно от лица нужного пользователя, но результат был тот же. Тут похоже нужно знать глубинные процессы распознавания AUTOIT всплывающих окон.

Запускал шедулером на терминале при отключённом сеансе скрипты:
на основе скриншотов - создаёт скриншот нужного размера, но полностью чёрный.
на основе tesseract - _TesseractWinCapture - создаёт нулевой файл.
При подключённом терминальном сеансе - скрипт на Tesseract сохраняет надписи окна 1С, правда русский шрифт не понимает, сохраняет латинскими символами в непонятном порядке.
Возникает вопрос - где Windows хранит файлы окон для пользователя при отключённом терминальном сеансе?
 
Верх