【问题标题】:Digit recognition with Tesseract OCR and c#使用 Tesseract OCR 和 c# 进行数字识别
【发布时间】:2019-09-24 18:48:51
【问题描述】:

我使用 Tesseract 和 C# 来读取数字。除了数字“8”之外,一切都很好。 Tesseract 无法读取“8”位。 这是我发送给 tesseract 的图片:

并且 tesseract 读取“50005550055”。 这是我的方法:

public string Process(Bitmap bitmap, MetaTraderObjects metaObjects, bool isNumber = false)
{
    try
    {
        var graphicLib = new GraphicLib();
        bitmap = graphicLib.PerformReadingTextEffects(bitmap.ToBytes(), metaObjects).ToBitmap();
        var result = "";
        var enginePath = Const.BaseAppPath + "\\tessdata";
        using (var engine = new TesseractEngine(enginePath, "eng", EngineMode.Default))
        {
            var ver = engine.Version;
            using (var img = Pix.LoadTiffFromMemory(graphicLib.ConvertBitMapToByteArray(bitmap.ToBytes())))
            {
                using (var page = engine.Process(img,(PageSegMode)8))
                {
                    var text = page.GetText();
                    result = TextReformer.Reform(text, isNumber);
                    MemoryStream ms = new MemoryStream(bitmap.ToBytes());
                    Image i = Image.FromStream(ms);
                }
            }
        }
        return result;
    }
    catch (Exception ex)
    {
        ExceptionLog.Handel(ex);
        return null;
    }
}

如何告诉 Tesseract 垂直杆是“8”?

【问题讨论】:

  • 您使用的是哪个版本的 Tesseract?
  • 自从我使用 Tesseract 以来已经有很长时间了,但我记得必须将图像扩展为双倍宽度和高度以获得更好的结果,而不是与特定字符相关。不确定这是否会有所帮助。
  • @AbdelAzizAbdelLatef 3.3.0.0
  • @juharr 你知道的任何事情都会有帮助!
  • Tesseract 建议至少 300 DPI 以获得最佳效果。以我的经验,200相当不错。你的角色现在大约 8 像素宽; 20 会更好。

标签: c# ocr tesseract


【解决方案1】:

我建议您使用最新版本的 Tesseract。它可以表现得更好。

Tesseract 4.1.0

【讨论】:

猜你喜欢
  • 2015-12-21
  • 2013-05-11
  • 1970-01-01
  • 2011-07-25
  • 1970-01-01
  • 2021-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多