2012-06-05 2 views
3

Я запускаю OCR на движке tesseract с Tessnet в качестве оболочки C#. Я получил координаты изображения распознанных слов, и я хотел бы использовать эти координаты для отображения только той части страницы. Меня не волнует, сохранена ли эта часть страницы как отдельное изображение или если она как-то выделяет раздел tif-изображения.Как показать изображение tif-координат, полученных из Tessnet (Tesseract)

Вот мой текущий код:

TextWriter tw = new StreamWriter(@"U:\user files\bwalker\ocrTesting.txt"); 
      Bitmap image = new Bitmap(@"u:\user files\bwalker\2849257.tif"); 
      tessnet2.Tesseract ocr = new tessnet2.Tesseract(); 
      ocr.SetVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.,$-/#&=()\"':?"); // If digit only 
      ocr.Init(@"C:\Users\bwalker\Documents\Visual Studio 2010\Projects\tessnetWinForms\tessnetWinForms\bin\Release\", "eng", false); // To use correct tessdata 
      List<tessnet2.Word> result = ocr.DoOCR(image, System.Drawing.Rectangle.Empty); 
      string Results = ""; 
      foreach (tessnet2.Word word in result) 
      { 
       Results += word.Confidence + ", " + word.Text + ", " +word.Top+", "+word.Bottom+", "+word.Left+", "+word.Right+"\n"; 
      } 
      using (StreamWriter writer = new StreamWriter(@"U:\user files\bwalker\ocrTesting2.txt", true)) 
      { 
       writer.WriteLine(Results); 
       writer.Close(); 
      } 
      MessageBox.Show("Completed"); 

А вот часть полученного файла .txt:

14, Due, 105, 136, 1886, 1962 
89, Date, 105, 136, 1978, 2064 
50, 06/16/2009, 105, 136, 2298, 2504 

ответ

2

Я решил эту проблему. Получив координаты для слов, я делаю это для отображения связанных изображений:

System.Drawing.Rectangle dueDateRectangle = new System.Drawing.Rectangle(dueDateRect1, dueDateRect2, dueDateRect4 - dueDateRect1, dueDateRect3 - dueDateRect2); 
System.Drawing.Imaging.PixelFormat format = image.PixelFormat; 
Bitmap cloneBitmap = image.Clone(dueDateRectangle, format); 
MemoryStream ms = new MemoryStream(); 
cloneBitmap.Save(ms, ImageFormat.Png); 
ms.Position = 0; 
BitmapImage dueDateImage = new BitmapImage(); 
dueDateImage.BeginInit(); 
dueDateImage.StreamSource = ms; 
dueDateImage.EndInit(); 
dueDateImageBox.Source = dueDateImage;