2012-07-02 470 views
3

我創建了一個使用Google的Tesseract API識別文本的基本應用程序,並將其與我的相機應用程序集成。它的工作正常,但唯一的問題是準確性,因爲有時文本被識別爲一組隨機字符,我猜準確率大約是50%。如何提高Tesseract的OCR文本的準確性?

此外,當它嘗試掃描圖像中的四個以上單詞時,應用程序崩潰。

String ocrText = baseApi.getUTF8Text(); 
baseApi.end(); 

其中baseApi是超正方體API類的對象。

我是否需要使用不同的數據結構來保存識別的文本,或者是否有其他一些原因導致四個以上的單詞無法識別?

+2

所有你需要的是更好的OCR引擎 – Tomato

回答

1

Tesseract API類提供了一個isValidWord方法來檢查字符串是否是有效的單詞。您可以使用它來檢查識別的字符。這將增加輸出的準確性。

我正在開發使用Tess4j這是一個適用於tesseract-ocr的Java JNA包裝,它在檢查後給出相當好的結果。

結果不準確可能是由於文字大小造成的,請檢查this。它說「精度下降到10pt x 300dpi以下,迅速低於8pt x 300dpi」。

此外,不能夠檢測到超過4個字上很多因素決定,什麼樣的(有多少功能)的測試圖像時,圖像的大小,平臺等的

+0

謝謝,但我想知道我們如何提高識別? 例如,如果您看到由Robert Theis在https://github.com/rmtheis/android-ocr上傳的項目,那麼您可以看到他使用了圖像增強算法,即使他使用相同的Tesseract API作爲我的識別速度更快 – Android2390

+1

哦,當然,圖像預處理會提高OCR引擎的精確度,但會帶來額外的時間成本。 用於預處理,您可以:增加圖像的DPI,調整圖像大小,還可以檢查Bluring /銳化。高對比度的文字和背景被認爲更好。之後嘗試對其進行去噪和二值化圖像。它提高了相當好的準確性。 – nexus