Еще одна технология распознавания капчи без онлайн сервисов.

05.07.14

Разработка - Универсальные функции

Технология распознавания капчи.
Надоели мне онлайн сервисы распознование капчи, решил что нибудь сделать с этим. Выхода два либо писать анализатор или же  использовать существующие наработки других команд.
 Долго искал наткнулся. https://code.google.com/p/tesseract-ocr/ за что им огромное Спасибо.
Качаем tesseract-ocr-setup-3.02.02.exe Устанавливаем
Далее все тонкости описывать не буду только самое важное


 //Получение элемента дом картинки
	КартинкаКапчи = ДокХМЛ.getElementById("captcha"); 
//Копирование картинки в буфер обмена
	body = ДокХМЛ.body; imgs = КартинкаКапчи;
	controlRange = body.createControlRange(); controlRange.add(imgs); controlRange.execCommand("Copy", False, Неопределено);
 ///Получение картинки из буфера обмена через компоненту КомпонентБО = Новый("AddIn.clipboard");
	строкаКартинки = КомпонентБО.ПолучитьКартинкуИзБуфераОбмена();
 //Преобразование в двоичные данные
	ДанныеКартинки = Base64Значение(строкаКартинки);
 //Установка картинки на форму просто показать капчу
	ЭлементыФормы.КапчаКартинкаНаФорме.Картинка = Новый Картинка(ДанныеКартинки); 
//Сохранение капчи на диск в файл
	ЭлементыФормы.КапчаКартинкаНаФорме.Картинка.Записать(КаталогВременныхФайлов()+"cap.tiff");
 //САМОЕ ИНТЕРЕСНОЕ!
	ТекстКапчи=РаспознатьТекст(КаталогВременныхФайлов()+"cap.tiff"); 

Дальше сама функция
 Функция РаспознатьТекст(КартинкаТиф)
	Удачно=Ложь;
 Попытка
	ТекстКоманды =""+ПутьКhstart+" /NOCONSOLE /WAIT "+""""+ПутьКtesseract+" "+КартинкаТиф+" "+КаталогВременныхФайлов()+"cap"+"""";
	ЗапуститьПриложение(ТекстКоманды); WshShell = Новый COMОбъект("WScript.Shell");
	WshShell.Run(ТекстКоманды, 5, 1);
	Удачно=истина;
исключение
	Удачно=Ложь;
 Конецпопытки; 
Если Удачно тогда
	ТекстКапчи=ПолучитьТекстКапчи(КаталогВременныхФайлов()+"cap.txt");
 Возврат ТекстКапчи;
 конецесли;
 Возврат Удачно;
 КонецФункции

Да и заранее подготовленные exe и bat перед открытием формы
 Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
	КаталогВременныхФайлов =КаталогВременныхФайлов();
 Попытка
	МакетДЛЛ = ПолучитьМакет("clipboard_dll"); ИмяВременногофайла=КаталогВременныхФайлов+"clipboard.dll";
	МакетДЛЛ.Записать(ИмяВременногофайла); 
исключение
 Конецпопытки;
 Попытка
	Макетhstart_exe = ПолучитьМакет("hstart_exe");
 ИмяВременногофайлаМакетhstart_exe=КаталогВременныхФайлов+"hstart.exe";
	ПутьКhstart=ИмяВременногофайлаМакетhstart_exe;
	Макетhstart_exe.Записать(ИмяВременногофайлаМакетhstart_exe);
 исключение
	Макетhstart_exe=""; 
Конецпопытки;
 Попытка
	Макетcapbat = ПолучитьМакет("cap_bat");
 ИмяВременногофайлаМакетcapbat=КаталогВременныхФайлов+"cap.bat"; //Его содержание одна команда без ковычек "tesseract cap.tiff cap"
	ПутьКcapbat=ИмяВременногофайлаМакетcapbat;
	Макетcapbat.Записать(ИмяВременногофайлаМакетcapbat);
 исключение
	Макетcapbat="";
 Конецпопытки;
 Попытка
	Макетtesseract_exe = ПолучитьМакет("tesseract_exe");
 ИмяВременногофайлаМакетtesseract_exe=КаталогВременныхФайлов+"tesseract.exe";
	ПутьКtesseract=ИмяВременногофайлаМакетtesseract_exe;
	Макетtesseract_exe.Записать(ИмяВременногофайлаМакетtesseract_exe);
 исключение
	Макетhstart_exe="";
 Конецпопытки; 
Попытка
	ЗагрузитьВнешнююКомпоненту(ИмяВременногофайла);
 Попытка
	КомпонентБО = Новый("AddIn.clipboard");
 Исключение
	Сообщить("Не удалось создать объект компоненты");
 КонецПопытки;
 Исключение
	Сообщить("Компонента clipboard не найдена!");
 КонецПопытки;
 КонецПроцедуры

Огромное спасибо создателям компоненты копирование из буфера обмена. //infostart.ru/public/19872/

Вступайте в нашу телеграмм-группу Инфостарт

КАПЧА

См. также

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

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

14.05.2025    5463    DeerCven    15    

57

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

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

21.05.2024    46485    dimanich70    83    

165

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    6873    6    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    57609    atdonya    31    

68

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    8647    ke.92@mail.ru    17    

68

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    22837    YA_418728146    8    

174
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ivanov660 4897 07.07.14 10:05 Сейчас в теме
И каково качество распознавания изображения?
2. OldthiefXXX 155 07.07.14 17:41 Сейчас в теме
3. powerpc 225 09.07.14 09:46 Сейчас в теме
Всё почти понятно. Только подскажите пожалуйста как ДокХМЛ создать? На примере какого-нибудь сайта. Тессеракт кстати jpeg с каптчей отказался распознавать, сказал: пустая картинка
4. OldthiefXXX 155 09.07.14 10:00 Сейчас в теме
(3) powerpc,
ДокХМЛ = ЭлементыФормы.ПолеHTML.Документ;
5. OldthiefXXX 155 09.07.14 10:01 Сейчас в теме
(3) powerpc,
Также JPEG нет tiff надо!!!
9. powerpc 225 09.07.14 11:21 Сейчас в теме
(5) мозгов не хватает страницу с капчей найти подходящую.... блин. с элементом "id=captcha". Может есть ссылки для проверки кода ?
10. OldthiefXXX 155 09.07.14 21:33 Сейчас в теме
(9) powerpc, Для примера с капчей возьми любую страницу, открой в хроме затем на капче правой кнопкой мыши нажми и в открывшейся менюшке "Просмотр кода элемента " и посмотри его ID. В 90% случае это будет некий элемент DOM. найти его можно по разному не только методом getElementById есть и другие методы для помощи немного почитать http://javascript.ru/tutorial/dom/search .
15. powerpc 225 16.07.14 10:46 Сейчас в теме
(10) а вот например здесь https://rzd.ru/selfcare/register/ru. На капче жму ПКМ -> "Проинспектировать элемент". Там img src="/selfcare/captchaImage2". Нет ID. По вашей ссылке http://javascript.ru/tutorial/dom/search решил, что подойдет только способ:
КартинкаКапчи = ДокХМЛ.getElementsByTagName("src");
Но метод возвращает пустой COM-объект. А как ещё можно на странице https://rzd.ru/selfcare/register/ru выцепить капчу ?
6. Sykoku 102 09.07.14 10:20 Сейчас в теме
Сразу огорчу: распознавание на ... одном каком-то языке. А если их несколько? (Есть такие капчи: кириллица + латиница). Поддерживаемые форматы - TIFF, PNG + PDF с координатами текста. И куча ограничений: изображение не цветное, не сжатое и т.д.

7. powerpc 225 09.07.14 11:02 Сейчас в теме
(6) Sykoku, ясно что публикация не панацея. Есть капчи и с математикой, и с логикой, и с рисунками, и с ограничением времени показа. Интересен сам инструмент в рамках 1С и метод реализации. В любом случае познавательно. Автору плюс несомненно!
11. OldthiefXXX 155 09.07.14 21:43 Сейчас в теме
(6) Sykoku, Согласен с тобой полностью, каждая капча разбирается отдельно, схемы защиты капч огромное величество, но хочу порадовать раз твой глаз видит капчу а мозг распознает , значит и софт написать можно. Человек создавая капчу или генератор капчи все равно закладывал логику, даже у генератора случайных чисел есть логика. А соответственно можно эту логику понять ну и карты в руки.
12. AlexanderKai 10.07.14 10:22 Сейчас в теме
(11)
бывает такое, что мозг не может распознать.
shoy; It-developer; +2 Ответить
13. OldthiefXXX 155 10.07.14 15:44 Сейчас в теме
(12) AlexanderKai, тогда обновляешь элемент DOM
8. mzelensky 53 09.07.14 11:16 Сейчас в теме
Круто. Где ж ты раньше был :)
14. Vladimir_Konyrev 263 14.07.14 11:05 Сейчас в теме
Совместное использование возможностей внешних компонент и 1С - это очень интересная тема.
16. saga 17.07.14 18:14 Сейчас в теме
Проверил на паре 10 картинок с цифрами, если простой шрифт, однообразный фон, то 100%.
Если повернуто немного или с помехами то все 0%.
А такие каптчи которая она распознает нужно сейчас поискать.

PS С камими каптчами проходил тест?
17. shoy 19 22.08.14 13:00 Сейчас в теме
Да уж! Где ты был то пораньше, годков на 10? ;)
Вероятно, на данный момент, ещё есть такие капчи, иначе не было бы этой публикации.
Но мне попадаются совсем другие ...
Хотя заинтересовал подход. +
18. пользователь 11.12.14 10:30
Сообщение было скрыто модератором.
...
19. пользователь 27.06.15 10:24
Сообщение было скрыто модератором.
...
20. for_sale 902 23.11.16 15:44 Сейчас в теме
Не работает!

Пробовал на ВКонтактовских - не распознаёт даже близко, даже количество символов правильно не определяет. Я уж не говорю о том, что с теми командами, которые привёл автор, оно не работает вообще, выдаёт ошибку.
Автор забыл указать, что тессеракт, как оказалось, нужно тренировать. Т.е. каким-то там очень хитрым способом, который умещается на нескольких страницах, скармливать ему чуть ли не посимвольные картинки пачками. Тогда, вроде бы как, начинает работать.

В общем, потерянное впустую время, кг/ам и низачот.
21. for_sale 902 23.11.16 15:50 Сейчас в теме
Да, и ещё, небольшое лирическое отступление.

Если кто-то попадает в эту тему, то рано или поздно сталкивается с платными сервисами разгадок капчи. Так вот, отзыв rucaptcha.com. НЕ работайте с рукапчей (rucaptcha)! Это мошенники. В рекламе на главной странице заявлена цена от 18 руб. за 1000 капч (что более чем отличная цена по рынку!), но по факту оказывается, что цена не падает ниже 40-45 рублей. А техподдержка вообще колхозники какие-то - грубят и по существу ничего не отвечают.
22. пользователь 23.05.17 10:27
Сообщение было скрыто модератором.
...
23. KroVladS 35 03.10.17 09:04 Сейчас в теме
Простой текст распознаёт, капчи нет.
24. 🅵🅾️🆇 526 26.07.18 14:08 Сейчас в теме
Пробывал тессеракт, с питоном дружил, даже картинку подчищал - очень плохое качество распознавания даже просто кириллицы со скриншотов.

Может я и ошибаюсь, прикрепляю первую выпавшую капчу с сайта егрн:
Прикрепленные файлы:
for_sale; +1 Ответить
25. husky 6 21.12.18 12:36 Сейчас в теме
Привет, а такую капчу может распознать?
Прикрепленные файлы:
Для отправки сообщения требуется регистрация/авторизация