從傳統圖像算法到深度學習,文字識別技術經歷了這些變化
文字識別的發展大致可以分為兩個階段,分別是傳統圖像算法階段和深度學習算法階段。
傳統圖像算法
2012年之前,文字識別的主流算法都依賴于傳統圖像處理技術和統計機器學習方法實現,利用光學技術和計算機技術把印在或寫在紙上的文字讀取出來,并轉換成一種計算機能夠接受、人又可以理解的格式。傳統的文字識別方法可以分為圖像預處理、文字識別、后處理三個階段:
圖像預處理:完成文字區域定位,文字矯正,字符切割等處理,預處理一般包括灰度化、二值化,傾斜檢測與校正,行、字切分,平滑,規范化等等,核心技術包括連通域分析,MSER,仿射變換,圖像二值化,投影分析等。
文字識別:對切割出的文字進行識別,一般采用提取人工設計特征(如HOG特征等)或者CNN提取特征,再通過機器學習分類器(如SVM等)進行識別;
后處理:利用規則,語言模型等對識別結果進行矯正。
傳統的文字識別方法,在簡單的場景下能達到不錯的效果,但是不同場景下都需要獨立設計各個模塊的參數,工作繁瑣,遇到復雜的場景,難以設計出泛化性能好的模型。
深度學習算法
2012年之后,隨著深度學習在計算機視覺領域應用的不斷擴大,工業場景下的圖像文本識別更為復雜,它會出現在許多不同的情景下,如醫藥包裝上的文字、各類鋼制零部件上的字符、集裝箱表面噴印的字符、商鋪Logo上的個性化字符等等。
文字識別逐漸拋棄了原有方法,過渡到深度學習算法方案。在深度學習時代,文字識別框架也逐漸簡化,目前主流的方案主要有兩種,一種是文本行檢測與文字識別的兩階段方案,另一種是端到端的文字識別方案。
1)兩階段文字識別方案
主要思路是先定位文本行位置,然后再對已經定位的文本行內容進行識別。文本行檢測從方法角度主要分為基于文本框回歸的方法,基于分割或實例分割的方法,以及基于回歸、分割混合的方法,從檢測能力上也由開始的多向矩形框發展到多邊形文本,現在的熱點在于解決任意形狀的文本行檢測問題。文本識別從單字檢測識別發展到文本序列識別,目前序列識別主要又分為基于CTC的方法和基于Attention的方法。
2)端到端文字識別方案
使用文字檢測加文字識別兩步法雖然可以實現場景文字的識別,但融合兩個步驟的結果時仍需使用大量的手工知識,且會增加時間的消耗。
而端對端文字識別能夠同時完成檢測和識別任務,極大地提高了文字識別的實時性。通過一個模型同時完成文本行檢測和文本識別的任務,既可以提高文本識別的實時性,同時因為兩個任務在同一個模型中聯合訓練,兩部分任務可以互相促進效果。