2016-06-13 2 views
3

Ниже представлена ​​моя очень простая программа для тестирования производительности Tesseract. Результат, который я получил, не ожидал, хотя картина была высокого качества и очень четкого снимка экрана (не сложная картина с цветами). Пожалуйста, взгляните на мой код и результат ниже. Я не уверен, что я сделал что-то неправильно или двигатель Tesseract не может справиться с этим?Tesseract OCR: очень неточный результат

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Drawing.Imaging; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using tessnet2; 

namespace ImageProcessTesting 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     int up_lef_x = 1075; 
     int up_lef_y = 0070; 

     int bo_rig_x = 1430; 
     int bo_rig_y = 0095; 

     int width = bo_rig_x - up_lef_x; 
     int height = bo_rig_y - up_lef_y; 

     var bmpScreenshot = new Bitmap(width, height, PixelFormat.Format32bppArgb); 
     var gfxScreenshot = Graphics.FromImage(bmpScreenshot); 

     gfxScreenshot.CopyFromScreen(
            1075, 
            0070, 
            0, 
            0, 
            Screen.PrimaryScreen.Bounds.Size, 
            CopyPixelOperation.SourceCopy); 

     // bmpScreenshot.Save("C:\\Users\\Exa\\Screenshot.png", ImageFormat.Png); 


     var image = bmpScreenshot; 
     var ocr = new Tesseract(); 
     ocr.Init(@"C:\Users\Exa\Desktop\tessdata", "eng", false); 
     var result = ocr.DoOCR(image, Rectangle.Empty); 
     string result_str = ""; 
     foreach (Word word in result) 
      result_str += word.Text; 
     MessageBox.Show(result_str); 

    } 
} 
} 
+0

Если у вас есть только изображение текста, tesseract должен иметь возможность справиться с этим. Я использовал его не как dll, а как внешнюю программу для решения captchas witch, которую я сначала редактировал по коду, и он работал очень хорошо. –

ответ

0

экран 96DPI выстрелы типовое не подходит для OCR. Как указано в Tesseract wiki:

Минимальный размер текста для разумной точности. Вы должны рассмотреть разрешение, а также размер точки. Точность снижается ниже 10pt x 300dpi, быстро ниже 8pt x 300dpi. Быстрая проверка - подсчитать пиксели x-высоты ваших символов. (X-высота - это высота нижнего регистра x.) При 10pt x 300dpi x-высоты обычно составляют около 20 пикселей, хотя это может сильно варьироваться от шрифта до шрифта. Ниже x-height 10 пикселей у вас очень мало шансов получить точные результаты, а ниже примерно 8 пикселей большая часть текста будет «удалена шумом».

Однако, если вы знаете, какой именно шрифт, вы можете попробовать повторно обучить tesseract, чтобы получить лучший результат.

Смежные вопросы