7.7 Распознать капчу

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Samouchka, 20 фев 2015.

  1. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Всем здравствуйте! Нужно автоматически распознать капчу в 1с 7.7 и ввести её текст. Есть ссылка на изображение капчи, например
    http://69.39.239.48/322/142441494964026.jpg
    да и само изображение (прикрепил файл). Лучше распознавать по ссылке, чем по изображению. Или если передавать только ссылку, то тогда надо программно загружать изображение, иначе не выйдет? На первое время я могу передавать и само изображение, если по ссылке никак. У кого какие мысли есть? Может быть существует готовая обработка для этого?.
    --- Объединение сообщений, 20 фев 2015 ---
    Да, совсем забыл, не предлагайте мне решения с платными онлайн-сервесами по распознаванию капч. Нужно на халяву.

    Вложения:

    Последнее редактирование: 20 фев 2015
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Про халяву забудьте, время не то.
  3. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а при чем тут в принципе 1С и капча?
  4. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Видимо парсер делают.
  5. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    на 1С??? не проще ли на чем другом - на С например
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Халява священна...
    Берем С (как выше сказано) или Дельфи и пишем библу, которую с успехом интегрируем в 1с
  7. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Вот на инфостарте нашел способ через тессаракт. Как пользоваться тессарактом я вообще не знаю, хотя усnановил его. Пытаюсь приладить для 1с 7.7 найденный код. Похоже что писали для 8-ки, потому что нет в 7-ке функций ПолучитьТекстКапчи(), Base64Значение(). Кроме того, при открытии обработки выдаются ошибки, что не найдены файлы: clipboard_dll, hstart_exe, cap_bat, tesseract_exe. Хотя тессеракт я установил. Или же этот тессеракт надо было ставить в каталог временных файлов, как указано в коде? И помимо него скачивать и ставить еще 3 упомянутые компоненты, которые не находятся? А как узнать каталог временных файлов? Кроме того, сразу при выполнении вылезает ошибка (возможно просто в 7-ке такого нет):

    КартинкаКапчи = ДокХМЛ.getElementById("captcha");
    {Обработка.Капча.Форма.Модуль(112)}: Значение не представляет агрегатный объект (getElementById)

    Кто-нибудь знает, можно ли этот код доработать для 1с 7.7. Если да, то подскажите, пожалуйста, вот он:

    Код:
    Перем ПутьКhstart;
    Перем ПутьКcapbat;
    Перем ПутьКtesseract;
    Перем ДокХМЛ;
    Перем КомпонентБО;
    Перем КаталогКапчиНашей1;
    
    Перем ДанныеКартинки;
    
    
    Процедура ПриОткрытии()
        КаталогВременныхФайлов =КаталогВременныхФайлов();
    Попытка
         Таб=СоздатьОбъект("Таблица");
        Таб.ИсходнаяТаблица("clipboard_dll");
        МакетДЛЛ = Таб;
        ИмяВременногофайла=КаталогВременныхФайлов+"clipboard.dll";
        МакетДЛЛ.Записать(ИмяВременногофайла);
    исключение
    Конецпопытки;
    Попытка
         Таб2=СоздатьОбъект("Таблица");
        Таб2.ИсходнаяТаблица("hstart_exe");
        Макетhstart_exe = Таб2;
    ИмяВременногофайлаМакетhstart_exe=КаталогВременныхФайлов+"hstart.exe";
        ПутьКhstart=ИмяВременногофайлаМакетhstart_exe;
        Макетhstart_exe.Записать(ИмяВременногофайлаМакетhstart_exe);
    исключение
        Макетhstart_exe="";
    Конецпопытки;
    Попытка
         Таб3=СоздатьОбъект("Таблица");
        Таб3.ИсходнаяТаблица("cap_bat");
        Макетcapbat = Таб3;
    ИмяВременногофайлаМакетcapbat=КаталогВременныхФайлов+"cap.bat"; //Его содержание одна команда без ковычек "tesseract cap.tiff cap"
        ПутьКcapbat=ИмяВременногофайлаМакетcapbat;
        Макетcapbat.Записать(ИмяВременногофайлаМакетcapbat);
    исключение
        Макетcapbat="";
    Конецпопытки;
    Попытка
         Таб4=СоздатьОбъект("Таблица");
        Таб4.ИсходнаяТаблица("tesseract_exe");
        Макетtesseract_exe = Таб4;
    ИмяВременногофайлаМакетtesseract_exe=КаталогВременныхФайлов+"tesseract.exe";
        ПутьКtesseract=ИмяВременногофайлаМакетtesseract_exe;
        Макетtesseract_exe.Записать(ИмяВременногофайлаМакетtesseract_exe);
    исключение
        Макетhstart_exe="";
    Конецпопытки;
    Попытка
        ЗагрузитьВнешнююКомпоненту(ИмяВременногофайла);
    Попытка
        КомпонентБО = СоздатьОбъект("AddIn.clipboard");
    Исключение
        Сообщить("Не удалось создать объект компоненты");
    КонецПопытки;
    Исключение
        Сообщить("Компонента clipboard не найдена!");
    КонецПопытки;
    КонецПроцедуры
    
    
    
    
    
    
    Процедура ОткрытьКапчу()
        ТекущКатал=ФС.ТекКаталог();
        ФС.ВыбратьФайл(0,КаталогКапчиНашей1,ТекущКатал,"Выберите капчу",,,);
        КаталогКапчиНашей=ТекущКатал+КаталогКапчиНашей1;
    КонецПроцедуры
    
    
    
    
    
    
    
    Функция РаспознатьТекст(КартинкаТиф)
        Удачно=0;
    Попытка
        ТекстКоманды =""+ПутьКhstart+" /NOCONSOLE /WAIT "+""""+ПутьКtesseract+" "+КартинкаТиф+" "+КаталогВременныхФайлов()+"cap"+"""";
        ЗапуститьПриложение(ТекстКоманды);
        WshShell = СоздатьОбъект("WScript.Shell");
        WshShell.Run(ТекстКоманды, 5, 1);
        Удачно=1;
    исключение
        Удачно=0;
    Конецпопытки;
    Если Удачно=1 тогда
    //    ТекстКапчи=ПолучитьТекстКапчи(КаталогВременныхФайлов()+"cap.txt");
        //здесь нет такой функции в 1с 7.7
    Возврат ТекстКапчи;
    конецесли;
    Возврат Удачно;
    КонецФункции
    
    
    
    
    
    
    
    
    Процедура ОбработКапчу()
    //Получение элемента дом картинки
        ЗначениеИзФайла(КаталогКапчиНашей,ДокХМЛ);
        КартинкаКапчи = ДокХМЛ.getElementById("captcha");
    //Копирование картинки в буфер обмена
        body = ДокХМЛ.body;
        imgs = КартинкаКапчи;
        controlRange = body.createControlRange();
        controlRange.add(imgs);
        controlRange.execCommand("Copy", 0);
    ///Получение картинки из буфера обмена через компоненту КомпонентБО = Новый("AddIn.clipboard");
        строкаКартинки = КомпонентБО.ПолучитьКартинкуИзБуфераОбмена();
    //Преобразование в двоичные данные
    //    ДанныеКартинки = Base64Значение(строкаКартинки);
        //здесь нет такой функции в 1с 7.7
    //Установка картинки на форму просто показать капчу
         Картин=СоздатьОбъект("Картинка");
        КартинКапч = Картин.УстановитьКартинку(ДанныеКартинки);
    //Сохранение капчи на диск в файл
        КартинКапч.Записать(КаталогВременныхФайлов()+"cap.tiff");
    //САМОЕ ИНТЕРЕСНОЕ!
        ТекстКапчи=РаспознатьТекст(КаталогВременныхФайлов()+"cap.tiff");
    КонецПроцедуры
    
      
    Процедура Выполнить()
        ОбработКапчу();
    КонецПроцедуры
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    В 8ке таких ШТАТНЫХ функций тоже нет... Это функции библы по распознованию скорее всего
  9. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.429
    Симпатии:
    372
    Баллы:
    104
    ну Base64 то есть
    upload_2015-2-22_15-50-43.png



    Писали точнее не на 8-ке, а с использованием 8-ки, так как вероятнее всего она больше подошла по первоначальным требованиям.
    иначе бы на 7.7 пришлось бы городить ещё кучу кода

    в каталог временных файлов ничего не устанавливают, потому что там хранятся временные файлы, которые потом уничтожаются по завершении работы с ними (обычно)

    ну так и пишите на 8-ке, а лучше как вам советовали ранее
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Возможно. не пользовался
  11. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.429
    Симпатии:
    372
    Баллы:
    104
    я тоже, просто в СП нашлось
  12. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Ну ПолучитьТекстКапчи() точно не стандарт
  13. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.429
    Симпатии:
    372
    Баллы:
    104
    а про это и речи не было, там такого и быть не могёт :)
    ну если только в саму 1с капчу не впендюрят
  14. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
  15. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Ну не умею я пользоваться другими языками программирования, кроме 1С, к сожалению. А если преобразовать картинку в матрицу размером ширина на длина картинки в пикселях, где вместо каждого пикселя будет код его цвета по RGB. Тогда можно будет работать целиком в 1с методами работы с таблицами (выделять из матрицы каждый цвет, сравнивать с таблицами эталонных символов...). Есть ли возможность в 1с 7ке или 8ке получить такую матрицу? Или надо только специальные приложения использовать для этого?
  16. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Штатно не получите. Только писать библиотеку, которая бы научила 1с разбирать картинку по кикселям
Похожие темы
  1. PsyTech
    Ответов:
    14
    Просмотров:
    878
Загрузка...

Поделиться этой страницей