web-dev-qa-db-ja.com

tesseractが探している制限文字

tesseract が探している文字のセットを制限することは可能ですか?それは私の結果を大いに改善するでしょう。

57
Danilo Bargen

Tessdata/configsディレクトリに設定ファイル(例:「レター」)を作成します-通常は/usr/share/tesseract/tessdata/configs
または
/usr/share/tesseract-ocr/tessdata/configs

そして、次の行を構成ファイルに追加します。

tessedit_char_whitelist abcdefghijklmnopqrstuvwxyz  

...または多分[a-z]が動作します.. dunno :-)
次に、次のようなtesseractを呼び出します。

tesseract input.tif output nobatch letters  

これにより、tesseractが必要な文字のみを認識するように制限されます

76
Blomman

構成ファイルでホワイトリストを使用するか、-c tessedit_char_whitelist=...コマンドラインスイッチを使用するには、最新の4.0バージョンでは、OCRエンジンモードを「オリジナルTesseractのみ」に設定する必要があります。これは、新しい「Neural nets LSTM」モードがホワイトリスト設定を尊重しないためです。 4.0バージョンの適切なコマンドラインの例:

tesseract input_file output_file --oem 0 -c tessedit_char_whitelist = abc123

更新:新しいバージョン(4.0)では、破損したeng.traineddataファイルがWindowsおよび一部のLinuxインストーラーによってデフォルトでインストールされます。一時的な解決策は、tessdata\eng.traineddataファイルを古いバージョンのものに置き換えることです。このファイルは約30MBです。そうしないと、「Tesseractが言語をロードできませんでした!」というエラーが表示されます。または類似。

16

構成ファイルに加えて、-cフラグ:

tesseract stdin stdout -c tessedit_char_whitelist=abcdefghijklmnopqrstuvwxyz -psm 6
15
jmunsch

Androidでtesseractを使用している人にこれを追加するだけです。言語などを設定するreadOCR関数で、次の行を追加します。

tesseract.setVariable("tessedit_char_whitelist","ABCDEFGHIJKLMNOPQRSTUVWXYZ");

除外する文字に対してblackListを実行することもできます。

6
user3244591

Tesseractバージョン4.00では、これを行うことはできません。モデルを微調整するか、正規表現を使用して予測から余分な文字を削除することしかできません。

1
Andrew Ravus