2016-07-12 11 views
2

私はJNIを使​​ってAndroid用のOCRアプリを開発しています.C++でOpenCVとTesseractを使って開発したコードです。これは、アプリが撮影した写真から英数字のIDのバッジを読み取るために使用されます。tesseractの結果を改善する

Iは、以下の一つとして「可読画像」を得るために、画像の前処理で扱うコードを開発:

enter image description here

を私が「読み取る」ための次の関数を書い画像使用した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" を取得し、この画像では

enter image description here

:私が使用した画像は、このようなものです。結果は以前のものより明らかに優れていますが、うまくありません。

私がtesseractに渡した画像は、良い結果を得るには十分で、私はそれを得られないと思います。私は何をすべきか分からないので、この問題を解決するためにアイデアを尋ねます。私は正確な結果が必要であり、私はそれが私が得る処理されたイメージで得ることができると思う。アイデアをお願いします! =)

+0

異なるフォントサイズと解像度を試しましたか?私はその結果に大きな影響を与えることがわかります。 – bradkratky

+0

フォントパラメータを管理できません。私が行ったことは、結果が、私が投稿した最初の画像で、いくつかの拡張を行い、それをtesseract – user3368457

答えて

1

私は、いくつかの拡張で、ORCの結果が非常によく改善されていることに気付きました!私のために、それは解決策でした

+0

に渡していることが大幅に改善されました。 – bradkratky

+0

何ですか? *解決策は何ですか? –

+0

OCRの前にsomo dilationsを作る – user3368457

関連する問題