Tesseract OCR 上的数字数字
Posted
技术标签:
【中文标题】Tesseract OCR 上的数字数字【英文标题】:Digital Numbers on Tesseract OCR 【发布时间】:2015-08-09 08:01:58 【问题描述】:解决方案:
我必须训练自己的数据才能使用 OCR 进行尝试。看起来效果不错,但我不知道为什么来自 arturaugusto 的训练数据对我不起作用 =(
https://github.com/adri1992/Tesseract_sevenSegmentsLetsGoDigital.git
使用我训练过的数据,为了获得良好的 OCR 结果,我已经完成了这个阶段(我已经使用 OpenCV 完成了):
首先,将图像转换为黑白 其次,对图像应用高斯模糊 第三,对图像应用阈值滤镜这样,七段数字就被识别出来了。
问题:
我正在尝试通过 android 上的 Tesseract 获取 OCR,并且正在使用此图像测试应用程序(通过 Text detection on Seven Segment Display via Tesseract OCR):
我正在使用由 arturaugusto (https://github.com/arturaugusto/display_ocr) 训练的数据,但 OCR 的错误结果是:
884288
零被识别为八,我不知道为什么。
我正在通过 OpenCV 对图像应用高斯模糊和阈值过滤器,处理后的图像是这样的:
是否有任何其他数据经过训练或您知道解决问题的任何方法?
【问题讨论】:
嗨,阿德里,您的解决方案有什么更新吗? :-) 嗨菲利普!我已经训练了自己的数据...试试github.com/adri1992/Tesseract_sevenSegmentsLetsGoDigital 并检查我是否适合您。请记住执行我在帖子的“解决方案”部分中评论的所有阶段 我设法使用 python 枕头处理您的测试图像并达到与您的相似的 bw 图像,但是当我使用您训练的数据运行 tesseract 时,它返回一个空页面(!)。我不确定我是否正确安装了训练数据...我将所有内容复制到文件夹 /opt/local/share/tessdata (我在 Mac OS X 上)。当我运行 tesseract --list-langs 时,会显示“lets”语言。你有什么建议吗?顺便说一句,您的训练数据不再将“0”误认为“8”(正如您在问题中所说)? 感谢 adri1992 提供经过训练的数据。 嗨泽山!我训练了自己的数据。它应该使用具体字体github.com/adri1992/Tesseract_sevenSegmentsLetsGoDigital 【参考方案1】:尝试使用 erode 来填补片段之间的空隙。 我认为问题在于 tesseract 无法处理良好的分段字体。
使用OpenCV-python,我使用cv2.erode(display,kernel, iterations = erosion_iters)
来解决这个问题。
【讨论】:
是的,我试图填补段之间的空白,但它对我也不起作用:(我已经用相同的字体训练了我自己的数据,现在,我不知道究竟为什么,OCR 可以很好地处理这些经过训练的新数据。几分钟后,我将使用解决方案和存储库方向更新问题。非常感谢! 你能澄清一下你在代码前面声明的display
和kernel
吗? (例如,它是某种进口吗?)
@takanuva15,举个例子:import cv2;将 numpy 导入为 np; display = cv2.imread('display.png',0);内核 = np.ones((6,6),np.uint8); eroded_img = cv2.erode(显示, 内核, 迭代次数 = 1);以上是关于Tesseract OCR 上的数字数字的主要内容,如果未能解决你的问题,请参考以下文章
Tess-Two(Android 中的 Tesseract OCR)显示非常不准确的结果
Android OCR 仅使用流行的 tessercat fork tess-two 检测数字
如何训练 tesseract 只识别 20 到 30 位数字?