2012-04-08 5 views
20

http://code.google.com/p/tesseractdotnet/Тессеракт 3 (OCR) - .NET Wrapper

У меня возникли проблемы с получением 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 завершено с завершающей косой чертой, но безрезультатно. Есть идеи?

+1

вы можете поделиться своей полной реализацией? Кажется, я читаю противоречивые инструкции о том, как это сделать. – Roger

+0

Не могу взять кредит, но это сработало для меня: Замените 'eng.traineddata' в папке tessdata с этим http://code.google.com/p/tesseract-ocr/downloads/detail?name=eng.traineddata. gz – Alex

ответ

7

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

2

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

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

+0

Правда! Папка находится в «e: \ tessdata», а определение переменной - 'const string tessractData = @" e: \ tessdata \ tessdata ";' –

0

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

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

Кажется, ваша проблема связана с проблемой стабильности, упомянутой here. На официальном site есть рекомендация использовать предыдущую стабильную версию 2.4.1. Вы можете установить его с nuget.org с помощью команды менеджера пакетов: Install-Package Tesseract -Version 2.4.1

 Смежные вопросы

  • Нет связанных вопросов^_^