2016-07-12 116 views
2

我正在使用JNI和使用OpenCV和Tesseract在C++下開發的代碼爲Android開發OCR應用程序。它將用於從應用拍攝的照片中讀取帶有字母數字標識的徽章。提高tesseract ocr結果的質量

我開發了與所述圖像的預處理處理一個碼,爲了得到「可讀的圖像」,如下所述一個:

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閱讀文檔,我嘗試使用多邊形近似圖像以獲得「更好」的特徵。我使用的圖像是一個這樣的:

enter image description here

有了這個形象,我得到 「KO 978 A3705」。結果顯然比前一個好,但不好。

我認爲經過處理的圖像我傳遞給tesseract足以得到一個好的結果,我不明白。我不知道還有什麼要做,所以我問你想法,以解決這個問題。我需要一個確切的結果,我想我可以得到它與我得到的處理後的圖像。想法請! =)

+0

你有沒有嘗試不同的字體大小和分辨率?我發現這會顯着影響結果。 – bradkratky

+0

我無法管理字體參數。我所做的一切都大大改善了結果,在我發佈的第一張圖片中,做了一些擴張,然後將其傳遞到tesseract – user3368457

回答

1

我注意到有了一些擴張,結果ORC結果提高了不可思議的好!對我來說,這是解決方案

+0

這尤其如此? – bradkratky

+0

什麼? *什麼是解決方案? –

+0

在OCR之前進行somo擴張 – user3368457