tesseract が探している文字のセットを制限することは可能ですか?それは私の結果を大いに改善するでしょう。
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が必要な文字のみを認識するように制限されます
構成ファイルでホワイトリストを使用するか、-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が言語をロードできませんでした!」というエラーが表示されます。または類似。
構成ファイルに加えて、-c
フラグ:
tesseract stdin stdout -c tessedit_char_whitelist=abcdefghijklmnopqrstuvwxyz -psm 6
Androidでtesseractを使用している人にこれを追加するだけです。言語などを設定するreadOCR関数で、次の行を追加します。
tesseract.setVariable("tessedit_char_whitelist","ABCDEFGHIJKLMNOPQRSTUVWXYZ");
除外する文字に対してblackListを実行することもできます。
Tesseractバージョン4.00では、これを行うことはできません。モデルを微調整するか、正規表現を使用して予測から余分な文字を削除することしかできません。