2012-04-08 21 views
20

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

Sto avendo un problema ottenere Tesseract a lavorare nel mio Visual Studio 2010 progetti. Ho provato console e winform ed entrambi hanno lo stesso risultato. Mi sono imbattuto in una DLL da qualcun altro che sostiene di averlo lavorare in VS2010:

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

sto aggiungendo un riferimento al dll che può essere trovato in allegato per pubblicare 64 dal sito web di cui sopra. Ogni volta che costruisco il mio progetto ottengo un AccessViolationException che dice che è stato fatto un tentativo di leggere o scrivere memoria protetta.

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

L'eccezione di violazione di accesso punta sempre a if (processor.Init(TessractData, language, (int)eOcrEngineMode.OEM_DEFAULT)). Ho visto alcuni suggerimenti per assicurarsi che la piattaforma della soluzione sia impostata su x86 nel Configuration Manager e che la posizione della cartella tessdata sia terminata con la barra finale, senza alcun risultato. Qualche idea?

+1

puoi condividere la tua implementazione completa? Penso di leggere istruzioni contrastanti su come impostare questo. – Roger

+0

Impossibile prendere il merito ma questo ha funzionato per me: Sostituisci 'eng.traineddata' nella cartella tessdata con questo http://code.google.com/p/tesseract-ocr/downloads/detail?name=eng.traineddata. gz – Alex

risposta

7

Sembrava essere il contenuto della cartella tessdata che stava causando il problema. Ottenuto la cartella tessdata dal primo link e ora tutto funziona.

2

Ho appena completato un progetto con il motore di tesseract 3. Penso che ci sia un errore nel motore, che deve essere corretto. Quello che ho rimosso "AccessViolationError" è, aggiungi "\ tessdata" alla vera stringa di directory di tessdata. Non so perché, ma il motore sembra troncare la directory più interna nel percorso Tessdata.

Appena fatto Pacchetto completo OCR (DLL + Tessdata (inglese)) che funziona con NET Framework 4.

+0

Vero! La cartella si trova in "e: \ tessdata" e la definizione della variabile è 'const string tessractData = @" e: \ tessdata \ tessdata ";' –

0

Se qualcuno ha lo stesso problema e il consiglio con la barra finale non funziona, prova ... DUE barre finali! Seriosly. Per me funziona.

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

Sembra il problema si riferisce al problema di stabilità menzionato here. Sul numero ufficiale site si consiglia di utilizzare la precedente versione stabile 2.4.1. Puoi installarlo da nuget.org tramite il comando package manager: Install-Package Tesseract -Version 2.4.1