2008-08-27 15 views
28

Comment OCR un fichier tiff en utilisant l'interface de Tesseract dans C#?
Actuellement, je ne sais comment le faire en utilisant l'exécutable.OCR avec l'interface Tesseract

+3

pouvez-vous s'il vous plaît me guider comment vous avez réussi à utiliser Tesseract en C#? – mouthpiec

+0

un exemple de code? – Kiquenet

Répondre

10

Le code source semble être adapté à un exécutable, vous devrez peut-être recâbler un peu les données afin qu'elles soient construites en tant que DLL à la place. Je n'ai pas beaucoup d'expérience avec Visual C++ mais je pense que ça ne devrait pas être trop dur avec quelques recherches. Je suppose que quelqu'un aurait déjà fait une version de la bibliothèque, vous devriez essayer Google. Une fois que vous avez le code tesseract-ocr dans un fichier DLL, vous pouvez ensuite importer le fichier dans votre projet C# via Visual Studio et lui créer des classes wrapper et faire tous les trucs de marshaling pour vous. Si vous ne pouvez pas importer, alors DllImport vous permettra d'appeler les fonctions de la DLL à partir du code C#.

Ensuite, vous pouvez jeter un oeil à l'exécutable d'origine pour trouver des indices sur les fonctions à appeler pour OCR correctement une image tiff.

39

Jetez un oeil à tessnet

+0

C'est mieux que P/L'invoquer soi-même. –

+2

+1 - Fonctionne très bien et vous oubliez DllImports –

0

Disclaimer: Je travaille pour Atalasoft

Notre OCR module supports Tesseract et si cela se révèle ne pas être assez bon, vous pouvez passer à un meilleur moteur et il suffit de changer une ligne de code (nous fournissons une interface commune à plusieurs moteurs OCR).

6

Le programme C# lance tesseract.exe, puis lit le fichier de sortie de tesseract.exe.

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

J'ai découvert aujourd'hui que EMGU comprend maintenant une enveloppe Tesseract. Alors que le nombre de dlls non gérées de la bibliothèque opencv peut sembler un peu décourageant, il n'y a rien qu'une copie rapide dans votre répertoire de sortie ne guérira pas. De là, le processus OCR réel est aussi simple que trois lignes:

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 » mis ensemble a very nice youtube video qui démontre une solution simple mais efficace.

Questions connexes