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

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

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

В наличии

Технология распознавания капчи.

Категория:

Описание

Надоели мне онлайн сервисы распознование капчи, решил что нибудь сделать с этим. Выхода два либо писать анализатор или же  использовать существующие наработки других команд.
 Долго искал наткнулся. 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 не найдена!");
 КонецПопытки;
 КонецПроцедуры

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

has been added to your cart:
Оформление заказа