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

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.3.24)

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

18.03.2024    2664    0    John_d    8    

53

GUID в 1С 8.3 - как с ними быть

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

12.02.2024    4597    atdonya    22    

45

Переоткрытие внешних обработок

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

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

30.11.2023    3956    ke.92@mail.ru    16    

61

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    8804    YA_418728146    6    

141

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2071    21    progmaster    7    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    16140    133    sapervodichka    112    

129

Система контроля ведения учета [БСП]

Универсальные функции Механизмы типовых конфигураций БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    7242    quazare    8    

109
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ivanov660 4330 07.07.14 10:05 Сейчас в теме
И каково качество распознавания изображения?
2. OldthiefXXX 153 07.07.14 17:41 Сейчас в теме
3. powerpc 225 09.07.14 09:46 Сейчас в теме
Всё почти понятно. Только подскажите пожалуйста как ДокХМЛ создать? На примере какого-нибудь сайта. Тессеракт кстати jpeg с каптчей отказался распознавать, сказал: пустая картинка
4. OldthiefXXX 153 09.07.14 10:00 Сейчас в теме
(3) powerpc,
ДокХМЛ = ЭлементыФормы.ПолеHTML.Документ;
5. OldthiefXXX 153 09.07.14 10:01 Сейчас в теме
(3) powerpc,
Также JPEG нет tiff надо!!!
9. powerpc 225 09.07.14 11:21 Сейчас в теме
(5) мозгов не хватает страницу с капчей найти подходящую.... блин. с элементом "id=captcha". Может есть ссылки для проверки кода ?
10. OldthiefXXX 153 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 101 09.07.14 10:20 Сейчас в теме
Сразу огорчу: распознавание на ... одном каком-то языке. А если их несколько? (Есть такие капчи: кириллица + латиница). Поддерживаемые форматы - TIFF, PNG + PDF с координатами текста. И куча ограничений: изображение не цветное, не сжатое и т.д.

7. powerpc 225 09.07.14 11:02 Сейчас в теме
(6) Sykoku, ясно что публикация не панацея. Есть капчи и с математикой, и с логикой, и с рисунками, и с ограничением времени показа. Интересен сам инструмент в рамках 1С и метод реализации. В любом случае познавательно. Автору плюс несомненно!
11. OldthiefXXX 153 09.07.14 21:43 Сейчас в теме
(6) Sykoku, Согласен с тобой полностью, каждая капча разбирается отдельно, схемы защиты капч огромное величество, но хочу порадовать раз твой глаз видит капчу а мозг распознает , значит и софт написать можно. Человек создавая капчу или генератор капчи все равно закладывал логику, даже у генератора случайных чисел есть логика. А соответственно можно эту логику понять ну и карты в руки.
12. AlexanderKai 10.07.14 10:22 Сейчас в теме
(11)
бывает такое, что мозг не может распознать.
shoy; It-developer; +2 Ответить
13. OldthiefXXX 153 10.07.14 15:44 Сейчас в теме
(12) AlexanderKai, тогда обновляешь элемент DOM
8. mzelensky 53 09.07.14 11:16 Сейчас в теме
Круто. Где ж ты раньше был :)
14. Vladimir_Konyrev 255 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 971 23.11.16 15:44 Сейчас в теме
Не работает!

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

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

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

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