2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки





Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4  След.
 
 Re: Выбор языка программирования для конкретной задачи.
Сообщение24.10.2016, 00:33 
Аватара пользователя


18/06/12

499
планета Земля
melnikoff, Вам предложили некий узкоспециализированный инструмент, но вы настаиваете на попытке решить эту задачу ЯП общего назначения. OK, тогда хотелось бы спросить, точно ли вам нужен 1C? Перекладывать данные из таблички в табличку это очень сильно об SQL и других БД (NoSQL тоже не стоит списывать со счетов). Всё равно вы в своей задаче рано или поздно столкнётесь с понятием консистентности наборов данных, так вот, в случае изучения реляционных БД вы столкнётесь с этим понятием ОЧЕНЬ рано, и как только освоите его - вы получите (в начальной стадии) один из самых востребованных на рынке труда навыков, специалист по БД. Логику будете писать на любом удобном вам языке общего назначения, трудно сейчас найти язык, не работающий с SQL. Мой вам совет: если задачу нельзя решить методом распознавания цвета небольшого количества определённых пикселей + простой двигалки курсора, попробуйте решить задачу без обратной разработки коммерческого ПО. С другой стороны, если вас привлекает именно задача распознавания элементов интерфейса коммерческих программ с целью самопальной автоматизации или типа того - подучите отладчики, WinAPI, сломайте кучу-малу crackme, чтоли. Ассемблером управлять кишочками программы будет существенно проще, чем самодельным GUI-визиром. Надеюсь, я не сильно неправильно вас понял.

 Профиль  
                  
 
 Re: Выбор языка программирования для конкретной задачи.
Сообщение24.10.2016, 00:37 


02/04/13
182
rockclimber в сообщении #1162419 писал(а):
а контроль действий определять не путем распознавания текста, а просто по контрольным точкам на экране. Например, вы ввели в поле для ввода отрицательное число, а можно вводить только положительные. Рядом с полем для ввода появилась надпись об ошибке красными буквами, а в случае правильного ввода там был бы просто серый фон. Вы берете область и анализируете - появились ли в пределах определенного прямоугольника красные пиксели. Вот как-то так.

Распознавать текст все равно нужно. От смысла написанного зависит путь, по которому пойдет алгоритм. А по анализу пикселей я думаю можно определять факт реагирования интерфейса на действия программы, а то 1С-ка любит зависать на несколько секунд сразу после кликов.

 Профиль  
                  
 
 Re: Выбор языка программирования для конкретной задачи.
Сообщение24.10.2016, 00:45 
Заслуженный участник


06/07/11
2873
melnikoff в сообщении #1162428 писал(а):
Распознавать текст все равно нужно. От смысла написанного зависит путь, по которому пойдет алгоритм.
Тут тоже можно попробовать срезать угол. Если, например, перечень возможных сообщений заранее известен, можно сравнивать их с заранее сохраненными изображениями.
Вот еще мысль в голову пришла. Если шрифты и фон остаются теми же самыми, можно сохранить изображения букв, а потом сравнивать попиксельно картинки сохраненных букв и букв, вырезанных из сообщений. Не совсем труЪ-распознавание, но для вашей задачи должно хватить.

 Профиль  
                  
 
 Re: Выбор языка программирования для конкретной задачи.
Сообщение24.10.2016, 00:48 


02/04/13
182
Eimrine в сообщении #1162426 писал(а):
OK, тогда хотелось бы спросить, точно ли вам нужен 1C?

Да. Изменить входные данные задачи я не в силах даже под страхом смерти.

Eimrine в сообщении #1162426 писал(а):
если задачу нельзя решить методом распознавания цвета небольшого количества определённых пикселей + простой двигалки курсора

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

Eimrine в сообщении #1162426 писал(а):
попробуйте решить задачу без обратной разработки коммерческого ПО.

А что значит "обратная разработка коммерческого ПО"? И что Вы имеете в виду?

Eimrine в сообщении #1162426 писал(а):
С другой стороны, если вас привлекает именно задача распознавания элементов интерфейса коммерческих программ с целью самопальной автоматизации или типа того - подучите отладчики, WinAPI, сломайте кучу-малу crackme, чтоли. Ассемблером управлять кишочками программы будет существенно проще, чем самодельным GUI-визиром. Надеюсь, я не сильно неправильно вас понял.

Эммм... Мне это мало о чем говорит, но куда смотреть я примерно понял. Спасибо!

-- 24.10.2016, 03:03 --

rockclimber в сообщении #1162430 писал(а):
Тут тоже можно попробовать срезать угол. Если, например, перечень возможных сообщений заранее известен, можно сравнивать их с заранее сохраненными изображениями.

К сожалению не все так просто. Текст может быть любым. Логика работы программы должна быть такой:
1) В 1С-ке делается дабл-клик по элементу списка справочника,
2) Открывается окно;
3) В нескольких полях окнах содержится некоторая текстовая информация. Программа считывает ее и распознает, при этом понимая какой текст из какого поля окна;
4) Программа идет в браузер и в интерфейсе БД на определенном сайте вводит полученную инфу в определенные поля. Клик на кнопке "поиск";
5) БД выдает результат так же в текстовом виде;
6) Программа считывает и распознает текст, который выдала БД;
7) Программа возвращается в 1С-ку и полученной инфой из БД заполняет (вводит с клавиатуры) определенные поля окна;
8) Клик на кнопке "Сохранить";
9) см. п.1

rockclimber в сообщении #1162430 писал(а):
Вот еще мысль в голову пришла. Если шрифты и фон остаются теми же самыми, можно сохранить изображения букв, а потом сравнивать попиксельно картинки сохраненных букв и букв, вырезанных из сообщений. Не совсем труЪ-распознавание, но для вашей задачи должно хватить.

О, а это идея! Спасибо!

 Профиль  
                  
 
 Re: Выбор языка программирования для конкретной задачи.
Сообщение24.10.2016, 01:15 


26/05/14
326
melnikoff в сообщении #1162431 писал(а):
О, а это идея! Спасибо!

Хочу вас предостеречь. При кажущейся простоте, это очень хрупкое решение, которое будет страдать от изменения шрифтов, цветов, разрешения экрана, сжатия изображения при передаче. Есть большое количество библиотек для распознавания текстов (OCR), которые отлично решат эту задачу. Думаю что вам в таком случае нужен Python и библиотека для него. Если не получится с Python, то C++. В любом случае начните с поиска OCR решения.
Например: https://github.com/tesseract-ocr/tesseract.

 Профиль  
                  
 
 Re: Выбор языка программирования для конкретной задачи.
Сообщение24.10.2016, 01:30 


02/04/13
182
slavav, так и попробую. Спасибо!

 Профиль  
                  
 
 Re: Выбор языка программирования для конкретной задачи.
Сообщение24.10.2016, 01:36 
Заслуженный участник


06/07/11
2873

(Оффтоп)

melnikoff в сообщении #1162431 писал(а):
К сожалению не все так просто. Текст может быть любым. Логика работы программы должна быть такой:
1) В 1С-ке делается дабл-клик по элементу списка справочника,
2) Открывается окно;
3) В нескольких полях окнах содержится некоторая текстовая информация. Программа считывает ее и распознает, при этом понимая какой текст из какого поля окна;
4) Программа идет в браузер и в интерфейсе БД на определенном сайте вводит полученную инфу в определенные поля. Клик на кнопке "поиск";
5) БД выдает результат так же в текстовом виде;
6) Программа считывает и распознает текст, который выдала БД;
7) Программа возвращается в 1С-ку и полученной инфой из БД заполняет (вводит с клавиатуры) определенные поля окна;
8) Клик на кнопке "Сохранить";
9) см. п.1
Мда. Примите мои соболезнования.

Изображение

 Профиль  
                  
 
 Re: Выбор языка программирования для конкретной задачи.
Сообщение24.10.2016, 02:07 
Заслуженный участник


16/02/13
2549
Владивосток
Зуб не дам, но весь разговор, как по мне, не о том вовсе. RDP — это же удалённый рабочий стол. Судя по размерам линуксового клиента и загрузке процессора, не картинку он передаёт, а как раз таки окна и т.п. структуру. Стоит, как по мне, взять тексты rdesktop и попробовать слегка разобраться. Да и описание протокола не помешает покурить.

 Профиль  
                  
 
 Re: Выбор языка программирования для конкретной задачи.
Сообщение24.10.2016, 02:13 
Аватара пользователя


18/06/12

499
планета Земля
melnikoff в сообщении #1162431 писал(а):
А что значит "обратная разработка коммерческого ПО"? И что Вы имеете в виду?
https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0

Решение задачи методом компьютерного зрения - хорошо и обратной разработкой не является, правда, в этой области я вам не советчик. В любом случае, самая гиморная часть вашей задачи, с моей точки зрения - необходимость изучать внутренности коммерческого продукта - даже если вы не нарушаете лицензию, а просто читаете документацию. Может быть, есть смысл продумать все сценарии будущих действий, изучить все доступные вам API в исследуемой программе и прощупать возможность реализовать нужные вам сценарии силами 1C. Вот только в этой области я советчик еще даже менее.

 Профиль  
                  
 
 Re: Выбор языка программирования для конкретной задачи.
Сообщение24.10.2016, 02:17 
Заслуженный участник


06/07/11
2873
iifat в сообщении #1162444 писал(а):
Зуб не дам, но весь разговор, как по мне, не о том вовсе. RDP — это же удалённый рабочий стол. Судя по размерам линуксового клиента и загрузке процессора, не картинку он передаёт, а как раз таки окна и т.п. структуру.
Хм, мне удалось нагуглить следущее (http://www.atraining.ru/windows-rdp-tuning/):
Цитата:
Когда у Вас выключен ClearType, протокол RDP передаёт не картинку, а команды по отрисовке символов. Когда включен – рендерит картинку со стороны сервера, сжимает и пересылает клиенту. Это с гарантией в разы менее эффективно, поэтому отключение ClearType значительно ускорит процесс работы и уменьшит время отклика. Сами удивитесь, насколько.
Видимо, не все так однозначно, плюс зависит от настроек сервера, менять которые ТС скорее всего не может.

 Профиль  
                  
 
 Re: Выбор языка программирования для конкретной задачи.
Сообщение24.10.2016, 02:40 
Заслуженный участник


16/02/13
2549
Владивосток
На всякий случай добавлю:
securitylab в вот этой статье писал(а):
В качестве графического вывода может выступать как точная копия графического экрана, передаваемая как изображение, так и команды на отрисовку графических примитивов ( прямоугольник, линия, эллипс, текст и др.). Передача вывода с помощью примитивов является приоритетной для протокола RDP, так как значительно экономит трафик; а изображение передается лишь в том случае, если иное невозможно по каким-либо причинам (не удалось согласовать параметры передачи примитивов при установке RDP -сессии). RDP- клиент обрабатывает полученные команды и выводит изображения с помощью своей графической подсистемы
Насчёт настроек сервера: надеюсь, не взлом чужого компьютера исподтишка, а вполне легальное, согласованное со всеми заинтересованными лицами действо. Так что доступ к серверу (в качестве которого в случае RDP выступает просто рабочая станция с запущенным клиентом 1С) имеется полный доступ.

-- 24.10.2016, 09:47 --

Наконец, можно ж соединиться по RDP и запустить программу непосредственно на нужном компьютере.
По поводу языков: дело совершенно не в языке. Дело в средствах вызова соответствующих функций Windows. В Питоне наверняка есть дополнительный пакет с этими функциями. Собственно, в autoit, кажется, тоже нужно подключать соответствующий пакет, только что идёт он в комплекте.

-- 24.10.2016, 10:06 --

Наконец, коли уж речь идёт об 1С, таки есть же нормальный способ — разобраться с языком программирования и внести в конфигурацию необходимые дополнения средствами 1С. Муторно (ввиду постоянных обновлений), но предельно качественно и надёжно.

 Профиль  
                  
 
 Re: Выбор языка программирования для конкретной задачи.
Сообщение24.10.2016, 07:32 


02/04/13
182
К сожалению, надеяться на отключенный ClearType или режим отрисовки графических примитивов нельзя. Это все может поменяться в любой момент, а программа должна работать бесперебойно. Поэтому единственно верный путь – это считывание изображения с монитора и распознавание текста.

 Профиль  
                  
 
 Re: Выбор языка программирования для конкретной задачи.
Сообщение24.10.2016, 10:46 
Заслуженный участник


16/02/13
2549
Владивосток
Скажу вам страшное: возможность подключения по RDP — она тоже того-с... Отключабельна...

-- 24.10.2016, 17:47 --

Ну и таки не раскроете тайну: вы таки шпион — или сотрудник организации? И если таки второе — почему вы не можете подойти к компьютеру и отключить ClearType?

 Профиль  
                  
 
 Re: Выбор языка программирования для конкретной задачи.
Сообщение24.10.2016, 10:53 


02/04/13
182
iifat в сообщении #1162478 писал(а):
Ну и таки не раскроете тайну: вы таки шпион — или сотрудник организации?

Второе.

iifat в сообщении #1162478 писал(а):
И если таки второе — почему вы не можете подойти к компьютеру и отключить ClearType?

Потому что я не админ. А админ вместе с сервером находятся за 2000 км от меня. И намекнуть админу я тоже не могу (если даже отбросить тот факт, что я его не знаю). Приходится исходить из тех вводных данных, которые я привел в стартовом посте.

 Профиль  
                  
 
 Re: Выбор языка программирования для конкретной задачи.
Сообщение24.10.2016, 11:03 
Заслуженный участник
Аватара пользователя


02/08/11
4130
В любом случае условия чрезвычайно странные. Особенно невозможность запуска управляющей программы на одном (специально настроенном) виртуальном компьютере вместе с клиентом 1C. Ограничение только и исключительно RDP больше похоже на чьё-то неявно выраженное желание провалить всю затею. Так может, раз незримо присутствует такая цель, стоит добиться того же результата (провала всего дела) с меньшими затратами?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 53 ]  На страницу Пред.  1, 2, 3, 4  След.

Модераторы: Toucan, maxal, Karan, PAV, Супермодераторы



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group