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

Posted

技术标签:

【中文标题】通过训练 tesseract 获得更好的识别结果【英文标题】:achieve better recognition results via training tesseract 【发布时间】:2015-09-17 15:48:48 【问题描述】:

我有一个关于使用 tesseract 获得更好识别结果的问题。我正在使用 tesseract 来识别序列号。序列号仅由一种字体类型、字符 A-Z、0-9 组成,并且以不同的大小和长度出现。

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

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

我的问题是:是否有人已经的经验?需要多少张图片才能获得好的结果。

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

也许有人已经在这种领域有经验。

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

这是一个好/坏的训练示例吗?由于我只想识别单个字符而没有任何依赖关系,因此我不必使用单词进行训练。

实际上,我只用其中 3 张图像对字符 B 8 6 5 进行了训练,与原始英语 (eng) tesseract 数据库相比,这并没有带来更好的识别。

最好的问候, 克里斯托夫

【问题讨论】:

【参考方案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) 我希望这会有所帮助!

【讨论】:

您的链接转到了一些垃圾网站

以上是关于通过训练 tesseract 获得更好的识别结果的主要内容,如果未能解决你的问题,请参考以下文章

tesseract 安装与训练(图像识别)

Tesseract 检测线

Windows下Tesseract训练音符识别

Windows下Tesseract训练音符识别

Windows下Tesseract训练音符识别

如何提高 tesseract 识别数字的结果