2012-07-30 79 views
3

我正在尝试做一些简单的OCR任务,而且我仍在搜索免费的图书馆。由于每个人似乎都使用tesseract,有人可以提供一个简单但实​​用的例子,用C#或VB.NET使用tesseractengine3.dll吗?搜索几个小时后,我无法找到任何文件或在VS2010和.Net编译4.tesseractengine3 .net包装的简单示例

回答

0

没有为正方体3.01 .NET包装的例子:tesseract-ocr-dotnet

+2

不工作=(无法加载程序集 – 2012-11-02 15:32:46

1

试试这个

Ocr ocr = new Ocr(); 
    private void button1_Click(object sender, EventArgs e) 
    { 


     using (Bitmap bmp = new Bitmap(@"C:\OCR\ocr-test.jpg")) 
     { 
      tessnet2.Tesseract tessocr = new tessnet2.Tesseract(); 
      tessocr.Init(null, "eng", false); 
      tessocr.GetThresholdedImage(bmp, Rectangle.Empty).Save("c:\\temp\\" + Guid.NewGuid().ToString() + ".bmp"); 
      // Tessdata directory must be in the directory than this exe 
      Console.WriteLine("Multithread version"); 
      ocr.DoOCRMultiThred(bmp, "eng"); 
      Console.WriteLine("Normal version"); 
      ocr.DoOCRNormal(bmp, "eng"); 
     } 
    } 
    public class Ocr 
    { 
     public void DumpResult(List<tessnet2.Word> result) 
     { 
      foreach (tessnet2.Word word in result) 
       Console.WriteLine("{0} : {1}", word.Confidence, word.Text); 
     } 

     public List<tessnet2.Word> DoOCRNormal(Bitmap image, string lang) 
     { 
      tessnet2.Tesseract ocr = new tessnet2.Tesseract(); 
      ocr.Init(null, lang, false); 
      List<tessnet2.Word> result = ocr.DoOCR(image, Rectangle.Empty); 
      DumpResult(result); 
      return result; 
     } 

     ManualResetEvent m_event; 

     public void DoOCRMultiThred(Bitmap image, string lang) 
     { 
      tessnet2.Tesseract ocr = new tessnet2.Tesseract(); 
      ocr.Init(null, lang, false); 
      // If the OcrDone delegate is not null then this'll be the multithreaded version 
      ocr.OcrDone = new tessnet2.Tesseract.OcrDoneHandler(Finished); 
      // For event to work, must use the multithreaded version 
      ocr.ProgressEvent += new tessnet2.Tesseract.ProgressHandler(ocr_ProgressEvent); 
      m_event = new ManualResetEvent(false); 
      ocr.DoOCR(image, Rectangle.Empty); 
      // Wait here it's finished 
      m_event.WaitOne(); 
     } 

     public void Finished(List<tessnet2.Word> result) 
     { 
      DumpResult(result); 
      m_event.Set(); 
     } 

     void ocr_ProgressEvent(int percent) 
     { 
      Console.WriteLine("{0}% progression", percent); 
     } 
    }