Tesseract OCR:非常不准确的结果

时间:2016-06-13 05:14:59

标签: c# tesseract

以下是我测试Tesseract性能的非常简单的程序。我得到的结果并不像预期的那样,虽然图片是高质量和非常清晰的截图(不是带有颜色的复杂图片)。请查看我的代码和结果如下。我不确定我是做错了还是Tesseract引擎无法解决这个问题?

this

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

    }
}
}

1 个答案:

答案 0 :(得分:0)

96DPI屏幕截图通常不适合OCR。正如Tesseract wiki所述:

  

有一个最小的文字大小,以确保合理的准确性。你必须考虑分辨率和点大小。精度降至10pt x 300dpi以下,迅速低于8pt x 300dpi。快速检查是计算角色x高度的像素。 (X高度是小写字母x的高度。)在10pt x 300dpi时,x高度通常约为20像素,尽管这可能因字体而异。低于10个像素的x高度,您获得准确结果的可能性很小,低于约8个像素,大部分文本将被“去除噪声”。

但是,如果您知道它的确切字体,您可以尝试重新训练tesseract以获得更好的结果。