Подтвердить что ты не робот

Tesseract 3 (OCR) -.NET Wrapper

http://code.google.com/p/tesseractdotnet/

У меня возникла проблема с тем, чтобы Tesseract работал в моих проектах Visual Studio 2010. Я попробовал консоль и winforms, и оба имеют тот же результат. Я столкнулся с dll кем-то другим, кто утверждает, что он работает в VS2010:

http://code.google.com/p/tesseractdotnet/issues/detail?id=1

Я добавляю ссылку на DLL, которую можно найти в прикрепленной к сообщению 64 с веб-сайта выше. Каждый раз, когда я создаю свой проект, я получаю сообщение AccessViolationException, говорящее о попытке прочитать или записать защищенную память.

public void StartOCR()
{
    const string language = "eng";
    const string TessractData = @"C:\Users\Joe\Desktop\tessdata\";

    using (TesseractProcessor processor = new TesseractProcessor())
    {
        using (Bitmap bmp = Bitmap.FromFile(fileName) as Bitmap)
        {
            if (processor.Init(TessractData, language, (int)eOcrEngineMode.OEM_DEFAULT))
            {
                string text = processor.Recognize(bmp);
            }
        }
    }
}

Исключение нарушения прав доступа всегда указывает на if (processor.Init(TessractData, language, (int)eOcrEngineMode.OEM_DEFAULT)). Я видел несколько предложений, чтобы убедиться, что платформа решений установлена ​​в x86 в диспетчере конфигурации и что местоположение папки tessdata завершено с завершающей косой чертой, но безрезультатно. Любые идеи?

4b9b3361

Ответ 1

Похоже, что содержимое папки tessdata вызывает проблему. Получена папка tessdata из первой ссылки, и теперь все работает.

Ответ 2

Я только что завершил проект с движком tesseract 3. Я думаю, что в движке есть ошибка, которую нужно исправить. Что я сделал, чтобы удалить "AccessViolationError", добавьте "\ tessdata" в настоящую строку каталога tessdata. Я не знаю, почему, но двигатель, кажется, обрезает самый внутренний каталог на пути Tessdata.

Только что сделанный полный пакет OCR (Dlls + Tessdata (английский)), который работает с .net framework 4.

Ответ 3

Если у кого-то есть такая же проблема, и советы с завершающим косой чертой не работают, попробуйте... ДВА ДЛИННЫХ СЛЕВА! Видит в ней ничего. Это работает для меня.

if (processor.Init(@".\tessdata\\", "eng", (int)eOcrEngineMode.OEM_DEFAULT))