С# ZennoPoster + Tesseract.Net SDK

Полезная ли для вас информация ?


  • Всего проголосовало
    123

swiniks

Client
Регистрация
19.02.2015
Сообщения
244
Благодарностей
171
Баллы
43
Tesseract.Net SDK - это библиотека классов на основе проекта tesseract-ocr project. Она может читать широкий спектр форматов изображений и преобразовывать их в текст на более чем 60 языках.

Первое - качаем пакет Tesseract.Net SDK по ссылке.
Копируем библиотеку tesseract.dll и Patagames.Ocr.dll в папку ExternallAssemblies.
Если её нет - то создаем. А папку tessdata в C:\Program Files (x86)\ZennoLab\ZennoPoster\Progs.




Второе - подключаем наши библиотеки к проекту, для этого добавляем к проекту экшен Ссылки из GAC и экшен Директивы using и общий код.



В экшене
Ссылки из GAC добавляем нашу библиотеку Patagames.Ocr.dll из папки ExternallAssemblies которая находиться или которую создали C:\Program Files (x86)\ZennoLab\ZennoPoster\Progs\ExternallAssemblies.



В экшене Директивы using и общий код добавляем следующий код.
C#:
using Patagames.Ocr;
using Patagames.Ocr.Exceptions;
using Patagames.Ocr.Enums;


Третье - добавляем в проект экшен C# код и пишем в нём такой код.

C#:
using (var api = OcrApi.Create())
{
api.Init(Languages.English); // язык распознавания
string plainText = api.GetTextFromImage(@"C:\quote.jpg"); // путь к картинке
return plainText; // возвращаем ответ переменой екшена
}
return "bad";
Более подробная информация находится на сайте ссылка Tesseract.Net SDK.



Вот и всё дорогие друзья, можно ещё предварительно обрабатывать картинку, с помощью штатных екшенов или воспользоваться библиотекой ImageProcessor, как это сделать смотрите по ссылке.

Исходник шаблон проекта С# ZennoPoster + Tesseract.Net SDK скачать.
 
Последнее редактирование:

kagorec

Client
Регистрация
24.08.2013
Сообщения
916
Благодарностей
471
Баллы
63
Бюджетный вариант Capmonster2:bp:
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 628
Благодарностей
1 303
Баллы
113
Сделал все как у вас но у меня не работает почему то! Ну добавили мы это все а дальше то как? Как ему приказать распознавать капчу? Сделайте пожалуйста пример

 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 703
Баллы
113
по ошибке в логе видно что вы некорректную конструкцию для директории проекта использовали
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 628
Благодарностей
1 303
Баллы
113
разобрался
 
Последнее редактирование:

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
2016-04-05_015150.png

пробывал майловскую каптчу вообще пустота выходит
 

swiniks

Client
Регистрация
19.02.2015
Сообщения
244
Благодарностей
171
Баллы
43
Сделал все как у вас но у меня не работает почему то! Ну добавили мы это все а дальше то как? Как ему приказать распознавать капчу? Сделайте пожалуйста пример

Это в входных настройках проекта прописан путь к картинке, укажи в входных настройках проекта путь к распознаваемому изображению.
 
  • Спасибо
Реакции: mux76

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 628
Благодарностей
1 303
Баллы
113

swiniks

Client
Регистрация
19.02.2015
Сообщения
244
Благодарностей
171
Баллы
43
Как сохранять картинку через С#
Пример сохранения капчи с букса C#
C#:
ZennoLab.CommandCenter.HtmlElement he = instance.GetTabByAddress("page").GetDocumentByAddress("0;0").FindElementByAttribute("img", "src", "/captcha-st/captcha.php\\?sid=", "regexp", 0);

            if (he.IsVoid)
            {
            he = instance.GetTabByAddress("page").GetDocumentByAddress("0;0").FindElementByAttribute("img", "fulltag", "img", "text", 0);
            }
            if (he.IsVoid) return -1;
 
string toBitmap1 = he.DrawToBitmap(false);
string toBitmap2 = he.DrawToBitmap(true);

System.IO.File.WriteAllBytes(project.Directory + "/captcha.png", Convert.FromBase64String(toBitmap2));

return 0;
 
Последнее редактирование:

swiniks

Client
Регистрация
19.02.2015
Сообщения
244
Благодарностей
171
Баллы
43
Посмотреть вложение 12540

пробывал майловскую каптчу вообще пустота выходит
Это Tesseract же, его можно обучать тоже, язык может другой на капче у тебя, обработай капчу предварительно, переведи в чёрно-белый, задай параметры распознавания нужные. Но даже так прямые капчи берёт все почти.
 
  • Спасибо
Реакции: August TS и mux76

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 628
Благодарностей
1 303
Баллы
113
спасибо щя потестю

И так потестил, экшен отрабатывает, в переменную ложится -1 а куда капча сохраняеться я так и не понял=(
 
Последнее редактирование:

swiniks

Client
Регистрация
19.02.2015
Сообщения
244
Благодарностей
171
Баллы
43
спасибо сейчас по тестю
И так потестил, экшен отрабатывает, в переменную ложится -1 а куда капча сохраняется я так и не понял=(
C#:
System.IO.File.WriteAllBytes(project.Directory + "/captcha.png", Convert.FromBase64String(toBitmap2));
project.Directory + "/captcha.png" - путь сохранения и имя файла с расширением.
project.Directory - директория где лежит шаблон.
"/captcha.png" - имя файла картинки.
-1 - значит что сохраняемая картинка не найдена в табе "page"
Коротко, картинка сохраниться рядом с шаблоном. Если сохранена, экшен запишет в переменную екшена 0.
 
Последнее редактирование:
  • Спасибо
Реакции: samsonnn и mux76

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 263
Баллы
113
На 10-ке не встала
 

swiniks

Client
Регистрация
19.02.2015
Сообщения
244
Благодарностей
171
Баллы
43
На 10-ке не встала
У меня тоже 10-ка всё встаёт, внимательнее делай.
Проверь какую библиотеку tesseract берёшь, бери х86 и я беру net45, у меня версия zennoposter последняя. Если у тебя zennoposter старый посмотри какой net с ним ставиться, скорее всего на старой версии net40.
 
Последнее редактирование:
  • Спасибо
Реакции: rediffusion и mux76

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 628
Благодарностей
1 303
Баллы
113
спасибо :ay:
 
Последнее редактирование:

mux76

Client
Регистрация
13.12.2010
Сообщения
259
Благодарностей
119
Баллы
43
win10 - x64
dll-ка - х86
все работает

Спасибо :ay:
 

budora

Client
Регистрация
13.08.2012
Сообщения
831
Благодарностей
554
Баллы
93
:az: Когда свои руки не доходят. Спасибо.
 

swiniks

Client
Регистрация
19.02.2015
Сообщения
244
Благодарностей
171
Баллы
43
Частую ошибка. :aq:
В пути к quote.jpg не должно быть кириллицы.
Исправил, спасибо, budora. Но работало или я гоню, но вон на скрине у людей тоже работало :D уже так пусть будет :-)
 
Последнее редактирование:

budora

Client
Регистрация
13.08.2012
Сообщения
831
Благодарностей
554
Баллы
93

kornell

Client
Регистрация
15.05.2015
Сообщения
94
Благодарностей
2
Баллы
8
Исправил, спасибо, budora. Но работало или я гоню, но вон на скрине у людей тоже работало :D уже так пусть будет :-)
Столкнулся с такой проблемой, если использую x86 то библиотека работает в PM, а в ZP не работает и выдаёт вот такую ошибку.


2016-04-25 16:11:53.7326|WARN|ZennoLab.LogLibrary.InternalError|Ошибка в модуле "Выполнение действия CSharp OwnCode id: f0590f18-c760-438a-859d-eb5a8074f0cc группы действий id: 5bab6895-9cc0-4cde-a399-8a7baf1b065c"
Сообщение: "Unable to load DLL 'tesseract.dll': The specified module could not be found. Please make sure that you copy it to the application folder. Alternatively, you can specify the full path to the tesseract.dll file using specificPath parameter in the TessBaseAPICreate method"
2016-04-25 16:11:53.7376|WARN|ZennoLab.LogLibrary.InternalError|Ошибка в модуле "ZennoPoster"

А если закидываю x64 то работает в ZP, а в PM выдаёт ту же ошибку.
Как я понял не находит библиотеку и просит указать путь к ней в Параметре specificPath в методе TessBaseAPICreate. Не подскажешь как это можно сделать? Буду очень благодарен:-)
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 263
Баллы
113
Pm 32 битный, zp 64. Поэтому такие проблемы
 
  • Спасибо
Реакции: swiniks и kornell

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
закидываете обе папки с dll в папку ExternalAssemblies и всё работает на ура

2016-04-26_225239.png

запущено одновремено

2016-04-26_225658.png
 

kornell

Client
Регистрация
15.05.2015
Сообщения
94
Благодарностей
2
Баллы
8
закидываете обе папки с dll в папку ExternalAssemblies и всё работает на ура

Посмотреть вложение 12973

запущено одновремено

Посмотреть вложение 12974
Помогло, запаренный третий день уже и что то сам не додумался закинуть сразу две папки, пробовал разные net и в них засовывал tesseract для разных разрядов. Ещё кучу всего пробовал, но до этого не дошёл:-)
Реально, большущее спасибо:-)
 

Hartwell

Client
Регистрация
25.09.2014
Сообщения
194
Благодарностей
117
Баллы
43
вооо) все мозги с тессерактом прожужал rostonix:ah:
так и не выдержали нервишки с капч монстром)) на тессеракте решение сделал без зенки.

Т.с. молодчик, памятник скажешь где возвести :bt:
 
  • Спасибо
Реакции: rostonix

ezotonal

Client
Регистрация
13.01.2014
Сообщения
808
Благодарностей
227
Баллы
43

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 263
Баллы
113
Эта либа платная я так скажу)
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 263
Баллы
113
Чтобы русский распознавал
api.Init(Languages.Russian);// язык распознавания
 
  • Спасибо
Реакции: samsonnn

ezotonal

Client
Регистрация
13.01.2014
Сообщения
808
Благодарностей
227
Баллы
43

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 628
Благодарностей
1 303
Баллы
113

doc

Client
Регистрация
30.03.2012
Сообщения
8 605
Благодарностей
4 595
Баллы
113
  • Спасибо
Реакции: samsonnn

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)