2012-04-08 13 views
20

http://code.google.com/p/tesseractdotnet/Tesseract 3 (OCR) - .NET Envoltura

estoy teniendo problemas para conseguir Tesseract a trabajar en mi Visual Studio 2010 proyectos. He intentado consola y winforms y ambos tienen el mismo resultado. Me he encontrado con un DLL por otra persona que dice tener que trabajar en VS2010:

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

Estoy añadiendo una referencia a la DLL que se puede encontrar en el documento adjunto a publicar 64 de la citada página web. Cada vez que construyo mi proyecto recibo un AccessViolationException diciendo que se intentó leer o escribir en la memoria protegida.

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); 
      } 
     } 
    } 
} 

La excepción violación de acceso siempre apunta a if (processor.Init(TessractData, language, (int)eOcrEngineMode.OEM_DEFAULT)). He visto algunas sugerencias para asegurarme de que la plataforma de la solución esté configurada en x86 en el administrador de configuración y que la ubicación de la carpeta tessdata haya finalizado con una barra inclinada final, sin éxito. ¿Algunas ideas?

+1

¿puede compartir la implementación completa? Creo que estoy leyendo instrucciones contradictorias sobre cómo configurar esto. – Roger

+0

No puedo tomar el crédito pero esto funcionó para mí: reemplace 'eng.traineddata' en la carpeta tessdata con este http://code.google.com/p/tesseract-ocr/downloads/detail?name=eng.traineddata. gz – Alex

Respuesta

7

Parecía ser el contenido de la carpeta tessdata que estaba causando el problema. Obtenido la carpeta tessdata desde el primer enlace y todo está funcionando.

2

Acabo de completar un proyecto con el motor tesseract 3. Creo que hay un error en el motor que debe rectificarse. Lo que hice para eliminar "AccessViolationError" es, agregar "\ tessdata" a la cadena de directorio tessdata real. No sé por qué, pero el motor parece estar truncando el directorio más interno en la ruta de Tessdata.

Acaba de hacer el paquete completo de OCR (DLL + Tessdata (Inglés)) que funciona con .NET Framework 4.

+0

¡Es cierto! La carpeta se encuentra en "e: \ tessdata", y la definición de la variable es 'const string tessractData = @" e: \ tessdata \ tessdata ";' –

0

Si alguien tiene el mismo problema y los consejos con la barra inclinada final no funcionan, intente ... ¡DOS barras diagonales finales! Seriosly. Esto funciona para mi.

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

Parece que su problema está relacionado con el problema de estabilidad mencionado here. En el teléfono oficial site, se recomienda utilizar la versión estable anterior 2.4.1. Puede instalarlo desde nuget.org a través del comando del administrador de paquetes: Install-Package Tesseract -Version 2.4.1