通过训练Tesseract来实现更好的识别结果

3
我有一个关于如何提高 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个回答

1
我目前正在使用Tesseract开发Sikuli应用程序,从屏幕截图中读取文本(字符串和数字)。我发现,在对其进行OCR之前,最好的方法是处理屏幕截图以提高准确性。然而,我大部分读取的文本都是黑底绿字,这是我首选的解决方案。我使用了Scalr在BufferedImage中的方法来增加图像的大小:
BufferedImage bufImg = Scalr.resize(...)

通过黑色文字和灰色背景,我立即获得了更准确的结果。然后在创建新的BufferedImage处理图像为灰度和黑白时,我使用了BufferedImage选项BufferedImage.TYPE_BYTE_GRAYBufferedImage.TYPE_BYTE_BINARY

按照这些步骤,当处理黑色背景上的绿色文字时,Tesseract的准确度从30%提高到了约85%,而在处理普通黑色文字和白色背景时,准确度接近100%。(有时单词中的字母会被数字误认为是hel10)
希望这能帮到你!


你的链接指向了一些垃圾网站。 - Neil
如在问题如何使用Tesseract OCR获得最准确的结果中所述,您可以在OCR处理之前使用ImageMagik缩放图像。 - Fjor

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