2012-04-17 40 views
8

我希望有人能告訴我爲什麼它是我的Tesseract在識別一些帶有數字的圖像時遇到問題,並且如果有什麼我可以處理的話。 一切都按照測試工作,因爲它只是我需要的數字,我以爲我可以用英文模式來管理,直到我不得不從7分段顯示器開始。在Tesseract中識別數字時遇到問題 - android

儘管我在附加圖像上遇到了很多麻煩,但是我想知道是否應該開始研究自己的識別算法,或者如果我可以爲Tesseract創建自己的數據集,然後工作,任何人都知道Tesseract的侷限性在哪裏?

嘗試過的東西: 試圖將psm設置爲one_line,one_word,one_char(並截取圖片)。使用one_line和one_word時,沒有顯着變化。 與one_char它確實認識到了一點好,但有時,由於間距太大,它附加了一個額外的數字,然後擰它,如果你看看附加的圖像zero.jpg然後它導致04. 我也試過自己進行二值化,這導致了較差的識別並且非常消耗資源。 我試圖倒置圖片,這對tesseract完全沒有任何影響。

我附上了需要處理的圖片等等。

釋有關圖片:

decodethisimage_seven是一個形象的正方體有就認出,雖然它在字已作出建設圍繞工作圖像的應用程序的便利。

decodethisimage_eight是與image_seven匹配的真實生活圖片。但它無法識別這一點。

decodethisimage_four2是我想讓它識別的另一個圖像,是的,我知道它不能被skrewed,而且我做了unskrew(認爲skrew是這裏的術語==「直接」)。

+0

skrew = skew nice :)。此外,圖像工具集可以減少噪音,銳化,而不是。這可能有助於 – 2014-06-05 18:43:53

回答

2

我所知道的一些選項,可以幫助你:

  1. 添加圖片邊框和文字之間的額外空間。如果圖像中的文本位於邊緣,Tesseract將會非常糟糕。
  2. 複製您的圖像。例如,如果您對單詞'foobar'執行OCR,請複製圖像並將'foobar foobar foobar foobar foobar'發送到tesseract,結果會更好。
  3. 谷歌對於font trainingimage binarization tesseract。

請記住,內置攝像頭在移動設備大多是生產低質量的圖像(所迷離,降噪,偏斜等)OCR本身是一種資源comsuming過程,如果你增加一個有價值的圖像預處理到,低端和中端移動設備(可能擁有Android)可能會面臨意外緩慢的性能下降,甚至資源缺乏。這對免費/學習項目來說沒問題,但是如果你正在計劃一個商業應用 - 考慮使用更好的SDK。

看一看這個問題的詳細信息:OCR for android

+0

感謝您的意見,我會毫不猶豫地嘗試。 關於低端中端手機,正常中段imo。有至少3mpix凸輪,這應該就夠了,儘管自動對焦是一個可控的問題。 避免歪斜的圖片我設置了一個非常有限的矩形作爲我的屏幕上的覆蓋,所以這是避免的。 但我同意這可能是沉重的手機,我不會介意它運行在服務器上,我只需要知道它的工作原理,我還沒有得到呢: -/ – 2012-04-17 12:20:56

+0

雖然你有什麼想法如何dublicate和/或添加一個框架圖片? 我開始尋找它,只是如果你有任何經驗,它準備好了:) – 2012-04-17 12:24:46

+0

1和2沒有工作。 林折騰正方體,試圖與javaocr工作,而不是 – 2012-04-19 12:45:11

1

你可以給javaocr一試(http://sourceforge.net/projects/javaocr/,是的,我是開發商)

Therre沒有offocial版本雖然,你將不得不尋找來源(好消息:有工作的Android樣本,包括採樣器,離線教練和識別器應用程序)

如果你只有一種字體,你可以得到相當不錯的結果(我達到了數字識別率99.96相同的字體)

PS:它是純java,使用不變矩執行匹配(所以在縮放和旋轉時沒有問題)。還有非常有效的二值化。

看到它在行動:

https://play.google.com/store/apps/details?id=de.pribluda.android.ocrcall&feature=search_result#?t=W251bGwsMSwxLDEsImRlLnByaWJsdWRhLmFuZHJvaWQub2NyY2FsbCJd

+0

想你的應用程序,那並不承認任何我的號碼/圖片看來: -/ – 2012-04-17 12:18:14

+0

這個程序被訓練在白色背景黑色文本。如果您需要底片,您可以在javaocr過程中嘗試使用Android示例(在二值化過程中只需稍作修改即可使用底片)PS:您可以發佈regcognition結果截圖嗎?然後,我可以給予更多的提示 – 2012-04-17 12:40:12

+0

沒有必要,因爲我的消極:-) – 2012-04-17 13:04:05

2

正方體不會爲你做分割。 Tesseract將在實際的tesseract算法之前對圖像進行閾值處理。閾值之後,可能會有一些邊緣,殘留在圖像中的人工製品。

嘗試手動修改圖片爲黑色和白色兩種顏色,看看正方體的回報作爲輸出。

嘗試閾值(自動),您的圖片,看看正方體的回報作爲輸出。閾值的輸出可能太差導致tesseract產生不良輸出。

你的第4圖像可能會失敗,因爲閾值(你有3種顏色:黑色的背景,灰色的背景和白色字母),閾值可(黑色背景,灰色背景)之間。

通常Tesseract需要漂亮的黑白圖像。預處理您的圖像可能需要更好的結果。

關於第一個圖像(結果是「04」),試圖看到箱子結果(包含公認的字符框的字符+座標)。 「0」可能是一個小的人造物 - 像一個4×4的像素點。