我正在编写一个 Android 应用程序来从图片中提取数独谜题。对于 9x9 数独网格中的每个单元格,我需要确定它是否包含数字 1 到 9 之一或是否为空白。我从这样的数独开始:
我使用 OpenCV 对数独进行预处理,以提取单个数字的黑白图像,然后将它们放入Tesseract中。不过,Tesseract 有一些限制:
- Tesseract 很大,包含很多我不需要的功能(即全文识别),并且需要英语训练数据才能运行,我认为这些数据必须放在设备的 SD 卡上。至少我可以告诉它只使用
tesseract.setVariable("tessedit_char_whitelist", "123456789");
- Tesseract 经常将单个数字误解为一串数字,通常包含换行符。它有时也只是简单地弄错了。以下是上述数独中的一些示例:
我有三个问题:
- 有什么办法可以克服 Tesseract 的限制吗?
- 如果不是,那么在 Android 上可行的检测单个数字(不是 k 最近邻)的有用、准确的方法是什么——这可以是免费库或 DIY 解决方案。
- 如何改进预处理以针对该方法?正如这篇文章所建议的,我考虑过的一种可能性是使用细化算法,但我不会费心去实现它,除非它会有所作为。