Tesseract OCR:字体大小参数(单个字符)

5
我希望使用Tesseract识别一个典型字体(如Times New Roman,Arial等)的单个无噪声字符。输入图像仅包含该字符,因此输入图像大小等于字体大小。
我已经将页面分割模式设置为单个字符,但结果仍然不理想,错误率约为50%。
我认为,如果告诉Tesseract我的字体大小,我可以改善结果。是否有这样的参数?如果存在,Python封装程序python-tesseract是否允许调整此参数?

等一下——你有一个清晰的图像("无噪声")和一个不奇怪的字体,甚至那都没被正确地识别吗?你并不是试图区分 '|' 和 'l' 以及 '1' 和 'I',对吧?或者是 '0' 和 'O' 以及 '×' 和 'x'?这听起来真的很奇怪。 - Alfe
这并不像区分1和l那样具有挑战性。例如,我将B误认为M。尽管图像的大小非常小(约10x10像素),但我认为问题就出在这里... - Min Joon Seo
哦,10x10,是的,那就是原因。没有增加它的机会吗? - Alfe
也许您可以在问题中发布一些示例输入图像(图像可以包含在问题中),以便我们可以看到Tesseract无法识别的“清晰可辨认的图像”是什么?您还可以通过在运行OCR之前应用一些图像处理来改善识别。我想象一下,在运行OCR之前将图像放大5x5倍并平滑边缘。但是我不会期望太多。 - Alfe
1个回答

3

如果您的字体大小太小,可以增加图像的高度和宽度,这样Tesseract就会提供更准确的输出。

        var srcImage1 = System.Drawing.Image.FromFile(@"D:\Image\font_english.jpg");
        var newWidth1 = (int)(srcImage1.Width * 2);
        var newHeight1 = (int)(srcImage1.Height * 2);

        var image  = new Bitmap(srcImage1, new Size(newWidth1, newHeight1));
        var ocr = new Tesseract();

          ocr.Init(@"D:\OCRTEST\tessdata\", "eng", false);
          ocr.SetVariable("tessedit_char_whitelist", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-0123456789'?.;=,()");
          var result = ocr.DoOCR(image, Rectangle.Empty);
          foreach (Word word in result)
          {
              Response.Write(word.Text+" ");

          }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接