我希望您的問題的答案是「當然,這裏是」與黑盒程序的鏈接 - 任何OCR工具,但涉及幾個方面,最好單獨考慮。
首先,在你考慮任何OCR之前,還有一些關於圖像預處理的工作。您的圖片樣本非常不同,並且包含全部問題。
樣品1具有低對比度,所以當它被二值化爲黑白層時,大多數OCR將在某個階段內部執行,沒有要處理的字符。它在二進制化後看起來像這樣:
請參閱此OCR博客文章,瞭解有關圖像預處理的其他詳細信息:http://www.ocr-it.com/guide-to-better-mobile-images-from-cell-phone-camera-for-higher-quality-ocr。
其次,圖像頭中沒有dpi信息,一些OCR技術用於確定圖像的適當縮放。如果沒有標題信息,某些OCR程序可能會設置一些默認dpi,這可能會或可能不會匹配您的圖像,從而影響OCR結果。這並不重要,但如果可以在創建照片時執行此操作,則首選。
樣本2具有足夠的對比度,自適應公證可以返回清晰的圖像。它在標題中也缺少dpi分辨率值。
樣品3具有非常明顯的對比度,但它在標題中也沒有分辨率dpi。
一旦您的圖像針對OCR處理進行了優化,下一步就是查看OCR技術。
我沒有測試一次你提到,假設你有正確的實施,但沒有成功與他們。我測試了過去使用過的其他OCR工具。
一般來說,沒有我知道的7段OCR。但是,我能夠爲其專門的任務調整其他通用OCR。我每次使用「開箱即用」或使用默認設置的OCR都無法處理此識別。這是合乎邏輯和預期的。爲什麼?因爲大多數通用的OCR都是爲識別每個字符不可分的像素模式而編寫的。這與用於將單詞分隔成單獨字符的「字符可分性」原理有關。換句話說,內部OCR算法會查找構成每個字符的連接筆劃。功能更強大的商業OCR允許在像素圖案中出現一些中斷,但是它們預計會很少或不會出現,如打印或掃描中的缺陷,這可能會導致字符片段丟失。
自然界中的七段顯示將在每個字符中有多箇中斷,與字符可分性原則相沖突。
功能更強大的OCR技術具有a)更好的像素圖案中斷能力和/或b)具有特殊設置來處理這些情況。
我將使用OCR-IT基於Web的OCR API平臺進行進一步測試,這是我所熟知的。我在OCR功能上擔任開發人員。我也在我自己的iOS和Android應用中廣泛使用它。 OCR-IT API基於強大的商業OCR引擎,因此它具有良好的容忍性格缺陷以及一些控制功能,以幫助解決這種情況。
樣品3.這是最容易處理的樣品,所以我首先進行了測試。使用OCR-IT API,並且與默認設置的請求,請求輸出爲TXT格式,我得到如下:
看來,OCR是)分割字符轉換成兩個獨立的線路,和b)嘗試儘可能接近有效字符地讀取結果圖案。
在此基礎上快速分析,做出一個調整,OCR設置結果如下認識:
是取得了OCR結果顯着差異的設置是從默認的打印開關鍵入使用「DotMatrix」,它位於整個OCR-IT API設置XML的中間:
<Job>
<InputURL>http://i.stack.imgur.com/wOtFx.jpg</InputURL>
<CleanupSettings>
<Deskew>false</Deskew>
<RemoveGarbage>false</RemoveGarbage>
<RemoveTexture>false</RemoveTexture>
<RotationType>NoRotation</RotationType>
</CleanupSettings>
<OCRSettings>
<PrintType>DotMatrix</PrintType>
<OCRLanguage>English</OCRLanguage>
<SpeedOCR>false</SpeedOCR>
<AnalysisMode>MixedDocument</AnalysisMode>
<LookForBarcodes>false</LookForBarcodes>
</OCRSettings>
<OutputSettings>
<ExportFormat>Text</ExportFormat>
</OutputSettings>
</Job>
使用DOTMATRIX打印類型的導通必要的算法,以增加在字符結構,它通常是通過在點陣打印點陣打印機的性質發生斷裂的耐受性。或者,可以使用「打字機」打印類型,因爲預期打字字體也會出現字符中斷,因此可以通過OCR自動處理。
可能有一個更變化到API設定使用「數字」字符集(語言),有效地消除誤讀數1作爲我的任何可能性來運行OCR等
樣品2。在該樣本中,每個角色結構中的差距要大得多。即使是處理DotMatrix或Typerwriter打印類型的標準算法也無法適應這些廣泛的差距。使用所有可能的設置變體返回如下所示:
字符分割似乎是問題。一個技術解決方案可以回到圖像預處理。可以實現簡單的算法來填補7段字符的每個段之間的間隙。它沒有非常精確,是這樣的:
但是,這是足以產生一個完美的OCR結果。
由於可能是未知的預先其中7段LCD顯示器將需要填充間隙,並且其不,我建議此算法適用於所有LCD 7段的圖像,具有小或差距很大。我會將間隙的大小限制爲不超過分段的寬度。鑑於這些屏幕具有不同的背景和分段顏色,如果在二值化(黑色&白色)圖像上執行該預處理算法,則可以大大簡化該算法。
總體而言,假設進行了一些圖像預處理,該任務可以通過OCR和接近開箱功能來實現。總的來說,我認爲任何與OCR相關的項目都需要進行圖像預處理,特定於該項目。
如果您有任何關於OCR或圖像預處理的其他問題,請下載我。