私は現在、オープンソースのOCRライブラリ「Tesseract」を利用して領収書認識用のアプリを作成するAndroidアプリに取り組んでいます。Tesseract の "Tess-two" フォークでライブラリが動作するようになりました。私が抱えている問題は、認識が非常に一貫していないことです。適切にトリミングされた良好な画像が提供されたとしても、認識は良くありません。私が理想的な状況だと考えると、認識は約 90% 正確です。最適ではない条件 (薄暗い照明、ぼやけた画像、トリミングされていないなど) がいくらでも与えられると、事実上 0% の精度が得られることがよくあります。
私のアプリの目的としては、90% の精度であっても、レシートから正確な情報と数字を「完全に」取得できるようにする必要があるため、情報の読み間違いを心配する必要はありません。
私の質問: Tess-two を構成して可能な限り最高の精度を得るための最良の方法は何ですか?
一言で言えば、これは私がライブラリをセットアップするために行ったことです:
//prior to running this code, I create the directory for /tessdata and copy my eng.traineddata file in there from the app's assets folder.
baseApi.setVariable("save_best_choices", "T");
baseApi = new TessBaseAPI();
baseApi.init(DATA_PATH, "eng");
baseApi.setVariable("tessedit_char_whitelist", "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$.!?/,+=-*\"'<:&"); //I was experimenting with this to try and improve accuracy, it didn't seem to help tremendously.
baseApi.setImage(photo);//photo is a bitmap that is selected from the phone's gallery.
String tmp = baseApi.getUTF8Text();
ここで私が間違っていること、またはもっとうまくやれることはありますか? eng.traineddata 以外に含めるべきファイルはありますか? 言語ごとに複数のファイルがあることは知っていますが、正直なところ、何が何なのか、実際に何を含める必要があるのか わかりませんでした。私が集めたものから、必要な唯一のファイルを手に入れました。「setVariable」関数で変更できる/変更する必要がある他の設定はありますか?
さらに、Tess-two には、画像の「傾き補正」、または提供された画像のコントラストの調整のサポートが組み込まれていますか? 私はまだこれらのテクニックのいずれかをいじっていませんが、これはおそらく役に立ちますよね?
どんな助けでも大歓迎です!