私はJNIを使ってAndroid用のOCRアプリを開発しています.C++でOpenCVとTesseractを使って開発したコードです。これは、アプリが撮影した写真から英数字のIDのバッジを読み取るために使用されます。tesseractの結果を改善する
Iは、以下の一つとして「可読画像」を得るために、画像の前処理で扱うコードを開発:
を私が「読み取る」ための次の関数を書い画像使用したTesseract:
char* read_text(Mat input_image)
{
tesseract::TessBaseAPI text_recognizer;
text_recognizer.Init("/usr/share/tesseract-ocr/tessdata", "eng", tesseract::OEM_TESSERACT_ONLY);
text_recognizer.SetVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
text_recognizer.SetImage((uchar*)input_image.data, input_image.cols, input_image.rows, input_image.channels(), input_image.step1());
text_recognizer.Recognize(NULL);
return text_recognizer.GetUTF8Text();
}
期待される結果は、 "KQ 978 A3705" ですが、私が取得することは、 "KO 978 H375" です。
https://github.com/tesseract-ocr/tesseract/wiki/ImproveQualityから画像の品質を改善するためのすべての推奨事項を行いました。さらに、https://github.com/tesseract-ocr/docsからドキュメントを読むと、「より良い」機能を得るためにポリゴンを使用してイメージの近似を試しました。私は "KO 978 A3705" を取得し、この画像では
:私が使用した画像は、このようなものです。結果は以前のものより明らかに優れていますが、うまくありません。
私がtesseractに渡した画像は、良い結果を得るには十分で、私はそれを得られないと思います。私は何をすべきか分からないので、この問題を解決するためにアイデアを尋ねます。私は正確な結果が必要であり、私はそれが私が得る処理されたイメージで得ることができると思う。アイデアをお願いします! =)
異なるフォントサイズと解像度を試しましたか?私はその結果に大きな影響を与えることがわかります。 – bradkratky
フォントパラメータを管理できません。私が行ったことは、結果が、私が投稿した最初の画像で、いくつかの拡張を行い、それをtesseract – user3368457