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

Ocr 通过训练tesseract获得更好的识别结果,ocr,tesseract,training-data,Ocr,Tesseract,Training Data,我有一个关于使用tesseract获得更好的识别结果的问题。我正在使用tesseract识别序列号。序列号仅由一种字体类型(字符A-Z、0-9)组成,并以不同的大小和长度出现 目前,我能够正确识别大约40%的序列号图像。图像是通过手机摄像头拍摄的。因此图像质量不是最好的 特殊问题字符为8/B、5/6。因为我只识别序列号,所以我没有使用任何字典改进,每个字符都是独立识别的 我的问题是:是否有人已经有了通过培训tesseract获得更好识别结果的经验?需要多少图像才能获得好的结果 对于培训tesse

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

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

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

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

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

也许有人已经在这方面有经验了

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

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

实际上,我只对其中3幅图像进行了字符B8 6 5的训练,与原始英语(eng)tesseract数据库相比,这并没有产生更好的识别效果

致以最良好的祝愿,
Christoph

我目前正在开发一个Sikuli应用程序,使用Tesseract从屏幕截图中读取文本(字符串和数字)。我发现实现准确度的最佳方法是在对屏幕截图执行OCR之前对其进行处理。然而,我读的大多数文本都是黑色背景下的绿色文本,这是我首选的解决方案。我使用BuffereImage中的方法来增加图像的大小:

BufferedImage bufImg = Scalr.resize(...)
使用灰色背景上的黑色文本,即时生成更准确的结果。然后,在创建新的BuffereImage时,我使用了BuffereImage的选项
BuffereImage.TYPE_BYTE_GRAY
BuffereImage.TYPE_BYTE_BINARY
,分别将图像处理为灰度和黑白

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