光学字符识别。使用tesseract识别里程表

Posted

技术标签:

【中文标题】光学字符识别。使用tesseract识别里程表【英文标题】:OCR. Using tesseract to recognize odometer 【发布时间】:2016-08-09 03:21:56 【问题描述】:

我想识别里程表中的数字。我找到了适用于 ios 的本教程。 https://www.raywenderlich.com/93276/implementing-tesseract-ocr-ios

我的 tesseract 属性:

func performImageRecognition(image: UIImage) 

    let tesseract = G8Tesseract()
    tesseract.language = "eng"
    tesseract.engineMode = .TesseractCubeCombined
    tesseract.pageSegmentationMode = .Auto
    tesseract.maximumRecognitionTime = 60.0
    tesseract.setVariableValue("0123456789", forKey: "tessedit_char_whitelist")
    tesseract.image = image.g8_blackAndWhite()
    tesseract.recognize()
  

应用成功识别标准文本。 但应用程序无法识别里程表中的数字。 是否可以调整 tesseract 来扫描里程表?

我试过这些图片:

【问题讨论】:

【参考方案1】:

如果我是你,我会尝试从里程表图像中剪下数字,拉直它们,做阈值(一切手动),看看 tesseract 是否正确扫描处理后的图像,结果有多清晰。 如果它确实正确扫描,您应该使用算法以编程方式处理图像(使用 openCV 可能是最好的)。如果它没有,您应该尝试为这些数字训练您的 tesseract,这在里程表上很常见,然后看看 tesseract 是如何工作的(我没有尝试过亲自训练,也许this 会有所帮助)。

您的图像应该看起来像这样,但问题是,例如,最后一个数字肯定不会被识别为 1,即使您将 tesseract 字符白名单减少到“0123456789”,它也会被扫描为 1和 1(因为有两个部分)。如果您想使用 tesseract,我认为在您的情况下必须进行 tesseract 培训。顺便说一句,你前两张图片的情况应该会更好。

【讨论】:

【参考方案2】:

OCR for Seven-segment display numbers in objective C.

【讨论】:

以上是关于光学字符识别。使用tesseract识别里程表的主要内容,如果未能解决你的问题,请参考以下文章

验证码识别 Tesseract的简单使用和总结

Python+OpenCV+Tesseract实现OCR字符识别

非黑即白--谷歌OCR光学字符识别

Java OCR tesseract 图像智能字符识别技术

有用过tesseract OCR字符识别的吗?怎么识别率那么低

Tesseract-OCR 安装中文识别与训练字库