網路城邦
上一篇 回創作列表 下一篇  字體:
如果你要找字元目標,用OCR一定比CNN更快也更準!
2023/01/17 08:11:46瀏覽1770|回應0|推薦4

OCR就是Optical Character Recognition中文是光學字元辨識!這是已有數十年歷史的傳統影像辨識技術,基本上就是辨識可以在影像中被切割分離為獨立目標的辨識方法!它最大的執行困難點,也就是容易發生錯誤辨識的原因,主要來自當影像目標不夠清楚時,字元目標與背景目標或其他字元會互相沾連無法正確切割。

也因此號稱不必切割目標,直接辨識局部特徵的CNN就「似乎」可以取代OCR的技術?即使字元沾連都可以辨識!我是一直使用OCR技術開發辨識軟體的人!當然深知OCR的優缺點,也對於CNN有所期待!但我從實務經驗上得到的結果是:只要善用一些目標特性,調整過的OCR演算法會比CNN快很多也準很多!如上的辨識就是一個很好的例子!

一張約四百萬畫素的高解析度瓦斯表影像,我們估計其中字元的大小,其實不必這高的解析度,長寬縮小為四分之一就足以正確辨識那些字了!所以就直接縮圖為25萬畫素做辨識即可!如果使用CNN的方式,我必須用不同大小的矩陣掃描全圖很多次,才能收集到「各種尺度」的影像特徵,這是CNN解決方案必經的過程,此階段耗時太久就是他們難以克服的原罪了!

我們可以看到CNN演算法在這個問題上花了非常多心力,也鼓吹邊緣運算多用GPU等方式來消化這個過大的計算量!但是該收集的特徵還是必須地毯式掃描,如果不善用已知的目標特徵或大小來減少計算,應該是不可能作到又快又周延的!為了求快必然會讓特徵偵測量減少,最終也會降低模糊辨識的能力,除非你真的相信CNN裡面有大神?

OCRCNN最大的差別是:它不必使用遮罩矩陣掃描的方式來找目標!CNN技術中的所謂YOLO號稱:You Only Live Once! 就是只要掃描一次就可以收集到需要的資料,好像十分先進?但是OCR本來」就是只需要掃描一次的!而且不必用矩陣做卷積(Convolution)運算!先天就比CNN快很多倍!這個你知道嗎?

如上是OCR的處理過程,從全彩→灰階→二值化→輪廓化→目標切割→目標正規化→字模比對!所有程序如果控制得宜,只需要54毫秒就完成了!就是二十分之一秒!想像一下這個影像原圖可是400萬畫素,即使縮圖到25萬畫素,縮圖本身的運算也需時間的!全部都包含在這54毫秒之內!大家可以跟我要原圖用CNN辨識看看!我相信做完之後你一定不會跟我講多少時間的!

使用非機率統計的OCR方法其實還有很多好處!最重要的是它直接蒐集的就是最終要找的字元目標!所以不必先收集特徵碎片再整合為目標,計算量少CNN很多!如果因為某些字元模糊切割不出來,我們也可以用找拼圖片的方式,在目標群組中利用已切割的字元推算漏失的目標位置,強制切割!所以有固定規則的字元組合,如車牌或瓦斯表,通常是不會缺字的!

CNN很確定的運算量遠大於OCR,如果有點優勢只是那些運算多半讓電腦自行處理,設計者好像比較不必傷腦筋?這就是新一代的軟體開發者最喜歡的模式了!只要找到內有「大神」進駐的神奇演算法模組,輕鬆地兜一兜軟體就做出來了!

但是要達到高辨識率,當然必須充分理解也正確處理所有辨識失敗的例外,才能讓辨識率越來越高!就像醫學越發達能正確檢驗並醫治好的病越多,死亡率就會越低!每次都要靠著開發萬靈丹,不肯研究病理個案,只想用大量實驗試(學習)出新藥來,這是不太可能的!

這就是OCR開發的影像辨識軟體可以穩定研發升級,越來越聰明甚至快速,但CNN等統計模式的模組就很艱難了!因為演算邏輯中大部分都是由資料統計獲得,為何如此?連開發者也無法充分掌握的!所以如果有人跟你說OCR是過時的技術,CNN才是影像辨識的未來?這是有極大爭議的說法

( 心情隨筆工作職場 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=yccsonar&aid=178085152