通过培训tesseract获得更好的识别结果

时间:2015-06-30 17:59:45

标签: ocr tesseract training-data

我对使用tesseract获得更好的识别结果有疑问。我正在使用tesseract来识别序列号。串行麻木只包含一种字体类型,字符A-Z,0-9,并且以不同的大小和长度出现。

目前,我能够识别出大约40%的序列号图像是正确的。图像通过手机摄像头拍摄。因此图像质量不是最好的。

特殊问题字符为8 / B,5/6。由于我只识别序列号,因此我没有使用任何字典改进,并且每个字符都是独立识别的。

我的问题是:是否有人已经通过培训tesseract获得更好的识别结果?需要多少图像才能获得良好的效果。

对于培训tesseract我应该使用打印和后续拍摄的序列号,还是应该使用原始数字序列号,而不打印和拍摄?

也许有人已经在这方面经历过。

关于培训tesseract:我已经用一些图像训练了tesseract。因此,我打印了不同尺寸的所有字符,拍摄并正确标记。角色5的训练照片示例

enter image description here

这是一个好/坏训练的例子吗?因为我只想识别没有任何依赖性的单个字符,我虽然不必使用单词进行训练。

实际上我只训练了其中3个图像用于 B 8 6 5 这些字符,与原始的英语(eng)tesseract数据库相比,这不会得到更好的识别。

最好的问候, 克里斯托弗

1 个答案:

答案 0 :(得分:1)

我目前正在使用Tesseract从Sikuli应用程序中读取屏幕截图中的文本(字符串和数字)。我发现实现准确性的最佳方法是在对其执行OCR之前处理屏幕截图。但是,我正在阅读的大部分文字都是绿色文字 - 黑色背景,这是我的首选解决方案。我在BufferedImage中使用了Scalr's方法来增加图像的大小:

BufferedImage bufImg = Scalr.resize(...)

立即在灰色背景上使用黑色文字产生更准确的结果。然后我在创建新的BufferedImage时使用了BufferedImage的选项BufferedImage.TYPE_BYTE_GRAYBufferedImage.TYPE_BYTE_BINARY,分别将图像处理为灰度和黑/白。

按照这些步骤,在黑色背景上处理绿色文本时,Tesseract的准确度从30%提高到85%左右,在白色背景上处理正常的黑色文本时,准确率接近100%。 (有时单词中的字母会被数字弄错,即hel10) 我希望这有帮助!