写真から数独パズルを抽出するAndroidアプリを書いています。9x9数独グリッドの各セルについて、1から9までの数字のいずれかが含まれているか、空白であるかを判別する必要があります。私はこのような数独から始めます:
OpenCVを使用して数独を前処理し、個々の数字の白黒画像を抽出してから、それらをTesseractに通します。ただし、Tesseractにはいくつかの制限があります。
- Tesseractは大きく、私が必要としない多くの機能(つまり、全文認識)が含まれており、機能するには英語のトレーニングデータが必要です。これは、デバイスのSDカードに保存する必要があると思います。少なくとも、を使用して数字のみを検索するように指示できます
tesseract.setVariable("tessedit_char_whitelist", "123456789");
- Tesseractは、多くの場合、1桁を数字の文字列と誤解し、多くの場合、改行を含みます。それは時々単にそれを間違えるだけです。上記の数独の例をいくつか示します。
私は3つの質問があります:
- Tesseractの制限を克服する方法はありますか?
- そうでない場合は、 Androidに実装できる個々の数字(k最近傍ではない)を検出するための便利で正確な方法は何ですか?これは無料のライブラリまたはDIYソリューションである可能性があります。
- そのメソッドを対象とする前処理をどのように改善できますか?私が検討した1つの可能性は、この投稿で提案されているように、間引きアルゴリズムを使用することですが、違いが生じない限り、わざわざ実装するつもりはありません。