2008-08-27 10 views

Antwort

10

Der Quellcode schien auf eine ausführbare Datei ausgerichtet zu sein, Sie müssen möglicherweise ein paar Sachen neu verdrahten, damit es stattdessen als DLL erstellt wird. Ich habe nicht viel Erfahrung mit Visual C++, aber ich denke, es sollte nicht zu schwer mit etwas Forschung sein. Meine Vermutung ist, dass jemand bereits eine Bibliotheksversion erstellt haben könnte, Sie sollten Google ausprobieren.

Sobald Sie Tesseract-OCR-Code in einer DLL-Datei haben, können Sie die Datei dann über Visual Studio in Ihr C# -Projekt importieren und Wrapper-Klassen erstellen und alle Marshalling-Tools für Sie ausführen. Wenn Sie nicht importieren können, können Sie DllImport die Funktionen in der DLL von C# -Code aufrufen.

Dann können Sie sich die ursprüngliche ausführbare Datei ansehen, um Hinweise darauf zu finden, welche Funktionen aufgerufen werden, um ein TIFF-Bild korrekt zu adressieren.

39

Werfen Sie einen Blick auf tessnet

+0

Dies ist besser als P/Aufruf selbst. –

+2

+1 - Funktioniert ziemlich gut und Sie vergessen DllImports –

0

Haftungsausschluss: Ich arbeite für Atalasoft

Unsere OCR module supports Tesseract und wenn das gut genug, um nicht beweist, können Sie zu einem besseren Motor-Upgrade und nur eine Zeile Code ändern (Wir bieten eine gemeinsame Schnittstelle für mehrere OCR-Engines).

6

C# Programm startet tesseract.exe und liest dann die Ausgabedatei von tesseract.exe.

Process process = Process.Start("tesseract.exe", "out"); 
process.WaitForExit(); 
if (process.ExitCode == 0) 
{ 
    string content = File.ReadAllText("out.txt"); 
} 
6

entdeckte ich heute, dass EMGU jetzt eine Tesseract Wrapper enthält. Während die Anzahl der nicht verwalteten dlls der opencv-lib etwas abschreckend wirken mag, ist es nichts, was eine schnelle Kopie in Ihrem Ausgabeverzeichnis nicht behebt. Von dort ist der eigentliche OCR-Prozess so einfach wie drei Zeilen:

Tesseract ocr = new Tesseract(Path.Combine(Environment.CurrentDirectory, "tessdata"), "eng", Tesseract.OcrEngineMode.OEM_TESSERACT_ONLY); 
this.ocr.Recognize(clip); 
optOCR.Text = this.ocr.GetText(); 

„robomatics“ zusammen a very nice youtube video, die eine einfache, aber effektive Lösung demonstriert.