Python 用于数字分类的Tesseract OCR结果不佳

Python 用于数字分类的Tesseract OCR结果不佳,python,opencv,classification,ocr,tesseract,Python,Opencv,Classification,Ocr,Tesseract,我正在做一个图像分类任务,我正在使用Tesseract OCR进行数字分类 我的主要问题是从OCR接收到的单个数字的结果非常差 在网上阅读了大量关于提高Tesseract性能的内容后,我正在使用以下通用方案使用OpenCV对图像进行预处理: 寻找等高线 边界框 剪切到框以获得单个数字 二值图像的阈值化 通过添加白色背景填充图像 模糊 我得到了一些我相当满意的东西,例如: 我以以下方式给Tesseract打电话,强调我期望的是一位数: tesseract input.jpg output.txt

我正在做一个图像分类任务,我正在使用Tesseract OCR进行数字分类

我的主要问题是从OCR接收到的单个数字的结果非常差

在网上阅读了大量关于提高Tesseract性能的内容后,我正在使用以下通用方案使用OpenCV对图像进行预处理:

  • 寻找等高线
  • 边界框
  • 剪切到框以获得单个数字
  • 二值图像的阈值化
  • 通过添加白色背景填充图像
  • 模糊
  • 我得到了一些我相当满意的东西,例如:

    我以以下方式给Tesseract打电话,强调我期望的是一位数:

    tesseract input.jpg output.txt - psm 10 digits
    
    我以为Tesseract肯定会正确识别它,但它返回“”


    有人有进一步改进的想法吗?我猜我可以训练Tesseract使用这种特定的字体,但因为我会处理不同的字体,我希望有更好的方法。

    什么版本的Tesseract?它适合我(注意:在“-”和“psm”之间不应该有空格)


    根据@Mika的评论,我最终做的是将所有单个字符重新组合成一张图像,然后将该图像发送到OCR。由于某些我还不清楚的原因,它确实改善了结果。

    请参阅中的我的答案。在你的图像上使用失败,但是如果你的图像有多个连接的话就可以了(我用“6666”试过了,它成功了)。谢谢你的提示。根据你所说的,我最终做的是把单个字符放回一张图像中,然后将该图像发送到OCR,出于某种原因,它的性能要好得多。
    $ tesseract ~/Downloads/6digit.jpg stdout -psm 10 digits
    6
    
    $ tesseract -v
    tesseract 3.05.00dev
     leptonica-1.71
      libgif 4.2.3 : libjpeg 9a : libpng 1.6.21 : libtiff 4.0.6 : zlib 1.2.8 : libwebp 0.5.0 : libopenjp2 2.1.0