光学字符识别。使用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识别里程表的主要内容,如果未能解决你的问题,请参考以下文章
Python+OpenCV+Tesseract实现OCR字符识别