Долго искал наткнулся. 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/