私が実行している問題は、画像からテキストを抽出することです。このために、Tesseractv3.02を使用しました。テキストを抽出する必要があるサンプル画像は、メーターの読み取り値に関連しています。それらのいくつかは無地のシート背景であり、それらのいくつかはLEDディスプレイを備えています。ソリッドシートの背景用にデータセットをトレーニングしましたが、結果はある程度効果的です。
私が今抱えている主な問題は、Tesseractによって認識されないLED/LCD背景のテキスト画像であり、これが原因でトレーニングセットが生成されません。
セブンセグメントディスプレイ(LCD/LEDバックグラウンド)でTesseractを使用する方法について、誰かが私を正しい方向に導くことができますか、またはTesseractの代わりに使用できる他の代替手段はありますか?.
https://github.com/upupnaway/digital-display-character-rec/blob/master/digital_display_ocr.py
OpenCVとtesseract、および「letsgodigital」トレーニング済みデータを使用してこれを行いました
-ステップには、エッジ検出と最大の輪郭を使用した表示の抽出が含まれます。次に、otsuまたは2値化を使用して画像をしきい値設定し、pytesseractsimage_to_string関数に渡します。
これは画像の前処理タスクのようです。 Tesseractは、画像がすべてビットマップ形式の黒地に白のテキストであることを本当に望んでいます。それ以外のものを与えると、そのフォーマットに変換するために最善を尽くします。これを行う方法についてはあまり賢くありません。いくつかの画像操作ツール(私はimagemagickが好きです)を使用して、tesseractが満足するように画像をより作成する必要があります。簡単な最初のパスは、小さな半径のガウスぼかし、かなり低い値でのしきい値(黒だけを維持しようとしているため、15%が正しいように見える)を実行してから、画像を反転することです。
次に難しい部分は、どの前処理タスクを実行するかを知ることです。扱っているディスプレイの種類を示すメタデータがある場合は、すばらしいです。そうでない場合は、画像の色のヒストグラムを見て、少なくともテキストが白地に黒か黒地に色かを判断できると思います。これらが唯一のシナリオである場合、白地に黒は常に無地の背景であり、黒地に色は常に7セグメントディスプレイであり、これで完了です。そうでない場合は、賢くする必要があります。頑張って、あなたが思いついたものを私たちに知らせてください。
このプロジェクトを見てください:
https://github.com/arturaugusto/display_ocr
そこで、7セグメントフォントのトレーニング済みデータと、いくつかの前処理機能を備えたpythonスクリプトをダウンロードできます。