С# ZennoPoster + Tesseract.Net SDK

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


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

Hartwell

Client
Регистрация
25.09.2014
Сообщения
182
Благодарностей
108
Баллы
43
А он разве обучается? Он только распознает. Это ж не нейросеть
элементарно, но стоит спросить вики посмотреть в каком году был релиз, а потом спросить снова у себя что из себя может представлять библиотека в таком "возврасте", в опуенсорсе, с приличным по кол-ву участников комьюнити..

Блин, по прежнему не понятно, как обучать тессеракт(( Может кто-то продвинулся уже в этом вопросе? Обучить циферкам нужно, то есть вроде как не сложное должно быть обучение, но не понятно, чего делать...
бога ради, у вас что там цифры римского рукописца? с арабскими проблемы вообще какие могут впрцинипе? стоит пересмотреть подготовку изображения для рекогнишена... если сомнения, кидайте циферки заветные, с таймером засеку сколько займет процесс от и до с результатом приближенным к 90% корректности, ах и откужда такие цифры понятия не имею.. обработка 1 пикчи одним потоком, с 5-6 интерациями в подготовке к рекогнишену да еще и смешнный тип буквы и латиница ну простой максимум 0.1 сек, или жуе 100мс , ну чтобы наверняка 1/10 секунды. в 1 поток...
Никто и не ждёт, милейший. Что можно, делаю сам. Где не получается - пишу. Это раз. Второе - использование даже самого быстрого решения - икс зла - мне не подходит, так как ему на разгадывание нужно секунд пять, а тесеракт в течении секунды всё делает. А у шаблона всего 15 секунд на разгадывание двух картинок и принятия решения.
15 сек, 5 скинем на всяие вызовы запуски, по 5 на пикчу, это примерно по 50 вариантов на 1 и 50 на вторую... темболее если циферки методом вариаций вообще вполне реально. ну с убогой подготовкой хотябы в 10% верных, шансы раз 5 верно попасть грубо говоря.

Но рекогнишен не для тех случаев когда нужен результат без ошибочный, при условии что у попытки есть своя "цена". Если попытки не проблема, можно не заморачиваться над максимальных % корректности, инкаче натягивать 90-99% корректность. Именно циферки без искажения в одноцветном представлении - самое простое где максимум что нужно, подрезать если они лишние, установить межбуквенный интервал, задать прмиерное соотношение высоты символов относительно масштаба всего слова. 30-60 сек, и 99% гарантирована. Ну в разговоре 100%, без ошибочное отгадывание. имхо, основываясь на реальных выполнены задач с применением тессеракт либы.

з.ы. за 10 часов вообще скармливал 21млн каптч, из которых 14млн были корректны. И то время больше уходило на http. Процессор задействовать на 100 не вышло, но на капчи имхо избыточен современный многоядерный cpu..
 

Home_KreKer

Client
Регистрация
05.12.2016
Сообщения
114
Благодарностей
28
Баллы
28
Тема актуальна? пробую код из первого поста - пишет
Компиляция кода Ошибка в действии "CS1061" ""Patagames.Ocr.OcrApi" не содержит определение для "setVarirable". Не удалось найти метод расширения "setVarirable", принимающий первый аргумент типа "Patagames.Ocr.OcrApi" (пропущена директива using или ссылка на сборку?)". [Строка: 3; Cтолбец: 5]

не могу понять что сделал не так...подскажите пожалуйста...
 

Home_KreKer

Client
Регистрация
05.12.2016
Сообщения
114
Благодарностей
28
Баллы
28
setVarirable тут ошибка
setVariable вот корректно
Спасибо, заработало, изучаю, как правильно работать с данным инструментом.
П.С Хочу разгадывать НЕ капчи, а просто тексты с картинок.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 384
Благодарностей
1 186
Баллы
113
Спасибо, заработало, изучаю, как правильно работать с данным инструментом.
П.С Хочу разгадывать НЕ капчи, а просто тексты с картинок.
Результатом потом поделитесь. Интересно.
 

Gooldbee

Client
Регистрация
16.05.2019
Сообщения
206
Благодарностей
24
Баллы
18
Вот код распознования
using (var api = OcrApi.Create())
{
api.Init(Languages.English);
string plainText = api.GetTextFromImage(@"T:\2.jpg");
MessageBox.Show(plainText, "Результат распознавания");
return plainText;
}
return "bad";
А как вырезать по координатам изображение перед распознаванием?
 

deskuznetsov

Client
Регистрация
29.08.2019
Сообщения
497
Благодарностей
336
Баллы
63
/
 
Последнее редактирование:

BPOH

Client
Регистрация
11.04.2019
Сообщения
113
Благодарностей
25
Баллы
28
Windows 10 все работает, подскажите пожалуйста манул как добавить свои слова? Нашел манулы только под linux в них фигурирует combine_tessdata в виндовой версии такого файла не нашел
 

ezotonal

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

sergboss

Client
Регистрация
19.09.2016
Сообщения
53
Благодарностей
3
Баллы
8
У меня при старте тестового проекта, зависает, можно долго ждать и нет ответа от шаблона.
 

sergboss

Client
Регистрация
19.09.2016
Сообщения
53
Благодарностей
3
Баллы
8
C#:
using (var api = OcrApi.Create())
{
api.Init(Languages.English); // язык распознавания
string plainText = api.GetTextFromImage(@"C:\quote.jpg"); // путь к картинке
return plainText; // возвращаем ответ переменой екшена
}
return "bad";
Подскажите как вставить ссылку на картинку

www.site.ru/quote.jpg
Спасибо
 

ArmMonster

Client
Регистрация
10.08.2018
Сообщения
56
Благодарностей
5
Баллы
8
для оброботки каптчи использую ImageMagick, но оно сильно грузи ЦП, как то можно использовать простые фильтры resize, threshold и blur в самом тессеракте, без ImageMagick ?
 

Gooldbee

Client
Регистрация
16.05.2019
Сообщения
206
Благодарностей
24
Баллы
18
у тебя работает?
Разобрался? тоже не понимаю с новой версией

Тип Время Сообщение
12:12:44 Компиляция кода Ошибка в действии "CS0106" "The modifier 'public' is not valid for this item". [Строка: 1; Cтолбец: 1]
Всё сделал вроде по инструкции папка tessdata в Progs . Оба Dll добавил и подключил что не так?(

public void ExtractTextFromImage()
{
using (var api = OcrApi.Create())
{
api.Init(Languages.English);
string plainText = api.GetTextFromImage("c:\test_image.png");
}
}
 

PussyM

Client
Регистрация
08.04.2019
Сообщения
63
Благодарностей
18
Баллы
8
Разобрался? тоже не понимаю с новой версией

Тип Время Сообщение
12:12:44 Компиляция кода Ошибка в действии "CS0106" "The modifier 'public' is not valid for this item". [Строка: 1; Cтолбец: 1]
Всё сделал вроде по инструкции папка tessdata в Progs . Оба Dll добавил и подключил что не так?(

public void ExtractTextFromImage()
{
using (var api = OcrApi.Create())
{
api.Init(Languages.English);
string plainText = api.GetTextFromImage("c:\test_image.png");
}
}
На сколько помню, я использовал для парсинга номеров avito. Задачу решил, но не помню этим методом или нет.
 
  • Спасибо
Реакции: Gooldbee

Nekro

Client
Регистрация
01.08.2020
Сообщения
148
Благодарностей
11
Баллы
18
Подскажите, что он от меня хочет? Где взять это "System.Drawing.Common"? Делал всё по инструкции. Правда не знаю какой именно
net нужен. Их там много. Поставил из 5.0

86527


Вот код распознования
using (var api = OcrApi.Create())
{
api.Init(Languages.English);
string plainText = api.GetTextFromImage(@"T:\2.jpg");
MessageBox.Show(plainText, "Результат распознавания");
return plainText;
}
return "bad";
А как вырезать по координатам изображение перед распознаванием?
Так

C#:
int x1 = 35;
int x2 = 55;
int y1 = 70;
int y2 = 90;
int width = x2 - x1 + 1;
int height = y2 - y1 + 1;

using (var result = new Bitmap(width, height))
{
    using (var bmpTemp = new Bitmap(@"D:\1.png"))
    {
        using (var img = new Bitmap(bmpTemp))
        {
            for (int i = x1; i <= x2; i++)
                for (int j = y1; j <= y2; j++)
                result.SetPixel(i - x1, j - y1, img.GetPixel(i, j));
        }
    }
    result.Save(@"D:\1q.png");
    
}
 
Последнее редактирование:

Nekro

Client
Регистрация
01.08.2020
Сообщения
148
Благодарностей
11
Баллы
18
Заработало на net40. Ура!
 

Ikigai

Client
Регистрация
13.12.2016
Сообщения
276
Благодарностей
25
Баллы
28
Компиляция кода Ошибка в действии "CS0246" "Ошибка в директивах using. The type or namespace name 'Patagames' could not be found (are you missing a using directive or an assembly reference?)". [Строка: 1; Cтолбец: 7]
 

radv

Client
Регистрация
11.05.2015
Сообщения
2 794
Благодарностей
1 441
Баллы
113
Компиляция кода Ошибка в действии "CS0246" "Ошибка в директивах using. The type or namespace name 'Patagames' could not be found (are you missing a using directive or an assembly reference?)". [Строка: 1; Cтолбец: 7]
Надо прописать using и добавить dll через ссылки из GAC, а так же может влияет версия dll.
 

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