web-dev-qa-db-ja.com

tesseractに文字が混在している場合に、数字のみを認識させる方法は?

tesseractを使用して数字のみを認識したい。問題は、数字と文字が混在しており、SetVariable("tessedit_char_whitelist", "0123456789")を使用すると
すべてのシンボルに対して、tesseractは間違った数字を返します。

tesseractが類似性の低いシンボルを省略するようにしきい値を設定できますか?

注:数字のみを認識するようにtesseractを設定しているため、Oと0の間に混乱はありません。

52
zkunov

tesseract FAQ ページで、数字のみを認識する方法が実際に回答されています。詳細についてはそのページを参照してください。ただし、バージョン3パッケージを使用している場合、構成ファイルは既にセットアップされています。コマンドラインで指定するだけです:

tesseract image.tif outputbase nobatch digits

しきい値については、どちらの意味かわかりません。入力が通常とは異なるフォントである場合は、入力のサンプルを使用して再トレーニングする可能性があります。別の方法は、tesseractのプルーニングしきい値を変更することです。両方のオプションはFAQにも記載されています。

38
Jerry

Tesseract 3の場合、コマンドはより簡単ですtesseract imagename outputbase digitsによる [〜#〜] faq [〜#〜] 。しかし、私にはあまりうまくいきません。

別のpsmオプションを試して、-psm 6は私の場合に最適です。

man tesseract 詳細については。

12
michaelliu

Tesseract 3の場合、FAQに従って構成ファイルを作成しようとします。

Init関数を呼び出す前、またはtessdata/configs/digitsというテキストファイルにこれを配置する前に:

tessedit_char_whitelist 0123456789                 

次に、コマンドtesseract imagename outputbase digitsを使用して動作します

10
user3852208

0-9に一致させたい場合

tesseract myimage.png stdout -c tessedit_char_whitelist=0123456789

または、0-9にほぼ一致したいが、1つ以上の異なる文字を使用したい場合

tesseract myimage.png stdout -c tessedit_char_whitelist=01234ABCDE
9
neoneye

私はそれを少し変えました(テスツーで)。たぶんそれは誰かに役立つでしょう。

したがって、最初にAPIを初期化する必要があります。

TessBaseAPI baseApi = new TessBaseAPI();
baseApi.init(datapath, language, ocrEngineMode);

次に、以下の変数を設定します

baseApi.setPageSegMode(TessBaseAPI.PageSegMode.PSM_SINGLE_LINE);
baseApi.setVariable(TessBaseAPI.VAR_CHAR_BLACKLIST, "[email protected]#$%&*()<>_-+=/:;'\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
baseApi.setVariable(TessBaseAPI.VAR_CHAR_WHITELIST, ".,0123456789");
baseApi.setVariable("classify_bln_numeric_mode", "1");

このようにして、エンジンは数字のみをチェックします。

7
Blehi

Tesseractに数字のみを使用するように指示することができます。それが十分に正確でない場合、より良い結果を得るための最良のチャンスはトレーニングプロセスをトラフすることです: http://www.resolveradiologic.com/blog/2013/01/ 15/training-tesseract /

3
valentt

この機能はバージョン4ではサポートされていません。「-oem 0」を指定して-c tessedit_char_whitelist = 0123456789を使用すると、古いモデルに戻ります。

この問題を解決するための報奨金があります。

考えられる回避策:

@ amitdo で述べられているように

1
user123959