2012-04-08 8 views
20

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

Ich habe ein Problem Tesseract immer in meinem Visual Studio 2010-Projekten zu arbeiten. Ich habe versucht Konsole und Winforms und beide haben das gleiche Ergebnis. Ich habe über eine dll von jemand anderem kommen, die es in VS2010 Arbeit haben will:

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

ich einen Verweis auf die DLL-Zugabe, die in der beigefügten gefunden werden kann über 64 von der Website zu veröffentlichen. Jedes Mal, wenn ich mein Projekt erstelle, bekomme ich eine AccessViolationException, die besagt, dass versucht wurde, geschützten Speicher zu lesen oder zu schreiben.

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

Die Zugriffsverletzung Ausnahme zeigt immer auf if (processor.Init(TessractData, language, (int)eOcrEngineMode.OEM_DEFAULT)). Ich habe ein paar Vorschläge gesehen, um sicherzustellen, dass die Lösungsplattform im Konfigurationsmanager auf x86 eingestellt ist und dass der Speicherort des Tessdata-Ordners mit einem Schrägstrich endet, ohne Erfolg. Irgendwelche Ideen?

+1

können Sie bitte Ihre vollständige Implementierung teilen? Ich denke, ich lese widersprüchliche Anweisungen darüber, wie man das aufstellt. – Roger

+0

Ich kann das Guthaben nicht übernehmen, aber das hat mir geholfen: Ersetzen Sie "eng.traineddata" im Ordner "tessdata" mit dieser http://code.google.com/p/testeract-ocr/downloads/detail?name=eng.traineddata. gz – Alex

Antwort

7

Es erschien der Inhalt des tessdata Ordner zu sein, die das Problem verursacht wurde. Erhalten der Tessdata-Ordner von der ersten Verbindung und alles funktioniert jetzt.

2

Ich habe gerade ein Projekt mit Tesseract Engine 3 abgeschlossen. Ich denke, es gibt einen Bug im Motor, der behoben werden muss. Was ich getan habe, um "AccessViolationError" zu entfernen, ist, "\ tessdata" zur echten Tessdata-Verzeichniszeichenfolge hinzuzufügen. Ich weiß nicht warum, aber die Engine scheint das innerste Verzeichnis im Tessdata-Pfad abzukürzen.

einfach gemacht Voll OCR-Paket (Dlls + Tessdata (Englisch)), die mit .NET Framework arbeitet 4.

+0

Wahr! Der Ordner befindet sich in "e: \ tessdata" und die Variablendefinition lautet "const string tessractData = @" e: \ tessdata \ tessdata ";" –

0

Wenn jemand das gleiche Problem hat und Ratschläge mit Schrägstrichen nicht funktionieren, versuchen Sie ... ZWEI endende Schrägstriche! Seriosly. Für mich geht das.

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

Scheint Ihr Problem bezieht sich auf Stabilitätsproblem erwähnt here. Auf der offiziellen site gibt es eine Empfehlung, die vorherige stabile Version 2.4.1 zu verwenden. Sie können es von nuget.org über den Paketmanager-Befehl installieren: Install-Package Tesseract -Version 2.4.1

Verwandte Themen