【发布时间】:2012-10-30 11:03:51
【问题描述】:
我正在编写一个 Android 应用程序来从图片中提取数独谜题。对于 9x9 数独网格中的每个单元格,我需要确定它是否包含数字 1 到 9 之一或为空白。我从这样的数独开始:
我使用 OpenCV 对数独进行预处理,以提取单个数字的黑白图像,然后将它们放入 Tesseract。不过,Tesseract 有一些限制:
- Tesseract 很大,包含很多我不需要的功能(即全文识别),并且需要英语训练数据才能发挥作用,我认为必须进入设备的 SD 卡。至少我可以告诉它只使用
tesseract.setVariable("tessedit_char_whitelist", "123456789");查找数字 - Tesseract 经常将单个数字误解为一串数字,通常包含换行符。它有时也只是简单地弄错了。以下是上述数独中的一些示例:
我有三个问题:
- 有什么方法可以克服 Tesseract 的限制吗?
- 如果不是,什么是一种有用、准确的方法来检测在 Android 上可行的单个数字(不是 k 最近邻) - 这可以是免费库或 DIY 解决方案.
- 如何改进预处理以针对该方法?我考虑过的一种可能性是使用细化算法,正如this post 所建议的那样,但我不会费心去实现它,除非它会有所作为。
【问题讨论】:
-
这对于应用程序来说是一个很棒的想法。如果你已经完成了,你能把它的链接放上去吗?顺便说一句,我认为在您的数字图像周围设置边界会有所帮助。只需制作一个在高度和宽度维度上都增加 2 个像素的图像,将外部用作黑色边界,并将原始图像放在中间。
标签: android image-processing opencv ocr tesseract