光學字元識別OCR 4

2022-07-31 11:18:10 字數 1485 閱讀 9967

經過第一部分,我們已經較好地提取了影象的文字特徵,下面進行文字定位。 主要過程分兩步: 

1、鄰近搜尋,目的是圈出單行文字; 

2、文字切割,目的是將單行文字切割為單字。 

鄰近搜尋

我們可以對提取的特徵圖進行連通區域搜尋,得到的每個連通區域視為乙個漢字。 這對於大多數漢字來說是適用,但是對於一些比較簡單的漢字卻不適用,比如「小」、「旦」、「八」、「元」這些字,由於不具有連通性,所以就被分拆開了,如圖13。 因此,我們需要通過鄰近搜尋演算法,來整合可能成字的區域,得到單行的文字區域。

鄰近搜尋的目的是進行膨脹,以把可能成字的區域「粘合」起來。如果不進行搜尋就膨脹,那麼膨脹是各個方向同時進行的,這樣有可能把上下行都粘合起來了。因此,我們只允許區域向單一的乙個方向膨脹。我們正是要通過搜尋鄰近區域來確定膨脹方向(上、下、左、右):

鄰近搜尋* 從乙個連通區域出發,可以找到該連通區域的水平外切矩形,將連通區域擴充套件到整個矩形。 當該區域與最鄰近區域的距離小於一定範圍時,考慮這個矩形的膨脹,膨脹的方向是最鄰近區域的所在方向。 

既然涉及到了鄰近,那麼就需要有距離的概念。下面給出乙個比較合理的距離的定義

距離

如上圖,通過左上角座標(x,y)和右下角座標(z,w)就可以確定乙個矩形區域,這裡的座標是以左上角為原點來算的。 這個區域的中心是( (x+z)/2, (y+w)/2 )。對於圖中的兩個區域s和s′,可以計算它們的中心向量差

如果直接使用

作為距離是不合理的,因為這裡的鄰近應該是按邊界來算,而不是中心點。因此,需要減去區域的長度: 

距離定義為 

至於方向,由

的幅角進行判斷即可。

然而,按照前面的「鄰近搜尋*」方法,容易把上下兩行文字粘合起來,因此,基於我們的橫向排版假設,更好的方法是只允許橫向膨脹:  

鄰近搜尋從乙個連通區域出發,可以找到該連通區域的水平外切矩形,將連通區域擴充套件到整個矩形。 當該區域與最鄰近區域的距離小於一定範圍時,考慮這個矩形的膨脹,膨脹的方向是最鄰近區域的所在方向,當且僅當所在方向是水平的,才執行膨脹操作

結果 有了距離之後,我們就可以計算每兩個連通區域之間的距離,然後找出最鄰近的區域。 我們將每個區域向它最鄰近的區域所在的方向擴大4分之一,這樣鄰近的區域就有可能融合為乙個新的區域,從而把碎片整合。 

實驗表明,鄰近搜尋的思路能夠有效地整合文字碎片,結果如圖15。 

OCR光學字元識別

沒搞過計算機視覺,只好拿來主義了 根據網上的推薦 1.google vision,識別效果還不錯,收費,而且對於複雜文字也不是很理想,所以繼續尋找開源 2.tesseract,最負盛名的開源識別軟體,據說google vision內部也是基於此。就我們公司的需求來說 提取中嵌入的文字 tessera...

開源OCR光學字元識別

優秀的開源ocr軟體包括 tesseract 原本由惠普開發的影象識別類庫tesseract ocr已經更新到2.04,就是最近google支援的那個ocr。原先是惠普寫的,現在open source了。ocropus ocropus的 tm 是乙個先進的檔案分析和ocr系統,採用可插入的布局分析,...

開源OCR光學字元識別

優秀的開源ocr軟體包括 tesseract 原本由惠普開發的影象識別類庫tesseract ocr已經更新到2.04,就是最近google支援的那個ocr。原先是惠普寫的,現在open source了。ocropus ocropus的 tm 是乙個先進的檔案分析和ocr系統,採用可插入的布局分析,...