Ответ 1
Похоже, что содержимое папки tessdata вызывает проблему. Получена папка tessdata из первой ссылки, и теперь все работает.
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 завершено с завершающей косой чертой, но безрезультатно. Любые идеи?
Похоже, что содержимое папки tessdata вызывает проблему. Получена папка tessdata из первой ссылки, и теперь все работает.
Я только что завершил проект с движком tesseract 3. Я думаю, что в движке есть ошибка, которую нужно исправить. Что я сделал, чтобы удалить "AccessViolationError", добавьте "\ tessdata" в настоящую строку каталога tessdata. Я не знаю, почему, но двигатель, кажется, обрезает самый внутренний каталог на пути Tessdata.
Только что сделанный полный пакет OCR (Dlls + Tessdata (английский)), который работает с .net framework 4.
Если у кого-то есть такая же проблема, и советы с завершающим косой чертой не работают, попробуйте... ДВА ДЛИННЫХ СЛЕВА! Видит в ней ничего. Это работает для меня.
if (processor.Init(@".\tessdata\\", "eng", (int)eOcrEngineMode.OEM_DEFAULT))
Кажется, ваша проблема связана с проблемой стабильности, упомянутой здесь. На официальном сайте есть рекомендация использовать предыдущую стабильную версию 2.4.1. Вы можете установить его с nuget.org с помощью команды менеджера пакетов: Install-Package Tesseract -Version 2.4.1