Tesseract 3 (OCR) - оболочка .NET
http://code.google.com/p/tesseractdotnet/
у меня проблема с получением Tesseract для работы в моих проектах Visual Studio 2010. Я пробовал console и 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:UsersJoeDesktoptessdata";
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
в configuration manager и что расположение папки tessdata завершено с конечной косой чертой, безрезультатно. Есть идеи?
4 ответов
оказалось, что это содержимое папки tessdata, которая вызывала проблему. Получил папку tessdata из первой ссылки, и все теперь работает.
Я только что завершил проект с Tesseract engine 3. я думаю, что в двигателе есть ошибка, которую нужно исправить. Что я сделал, чтобы удалить "AccessViolationError", добавьте" \tessdata " в реальную строку каталога tessdata. Я не знаю почему, но движок, похоже, усекает самый внутренний каталог в пути Tessdata.
только что сделал полный пакет OCR (DLL+Tessdata (английский)), который работает с .net framework 4.
Если у кого-то есть такая же проблема, и совет с трейлинг-Слэш не работает, попробуйте... Две конечные слеши! Серьезно. Это работает на меня.
if (processor.Init(@".\tessdata\", "eng", (int)eOcrEngineMode.OEM_DEFAULT))