私は Tesseract を使用して一連の画像内のいくつかの数字を識別しようとしてきましたが、アドバイスを求めて精査した後、多くの改善を行いました。これまでのところ、次の手順を試みました。
- 数値を選択するために適切なしきい値で画像を 2 値化します
- Tesseract を数字のみに制限する
- さまざまなアプローチを使用して画像をアップスケールします (Image.SCALE_SMOOTH を使用した getScaledInstance、AffineTransformOp.TYPE_BICUBIC を使用した AffineTransform)。
- さまざまな Tesseract ページ セグメンテーション モードを調べます。現在モード 6 を使用しています。
数字はすべて同一の形状で、完全に整列していますが、エッジは多少ギザギザになっています。処理された画像の例:
Tesseract はこれらを問題なく処理しますが、8 を 3、6 を 5、9 を 5 と混同することがよくあります。
画像を滑らかにするさまざまな方法を少し調べて、さまざまなスケールを試してみましたが、Tesseract をトレーニングするプロセスを実行する方が理にかなっているのかどうかも疑問に思っています。常にほとんど同じである可能性のある値は 10 個しかないため、それらを認識することを学習するのはそれほど難しくないように思われますが、Tesseract のトレーニングも非常に苦痛のように思えます。
これらの画像で Tesseract から最終的な精度を得る方法について何か提案はありますか?
私は tess4j と Java を使用しているので、Java 固有の提案とライブラリは特に高く評価されます。自分でアルゴリズムを実装したいとは思っていますが、車輪の再発明はしたくありません。