国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于學(xué)習(xí)的OCR字符識別

2018-09-17 05:20肖堅
計算機(jī)時代 2018年7期

肖堅

摘 要: OCR(Optical CharacterRecognition)是通過檢測字符每個像素亮度的模式確定其形狀,然后用字符識別方法將形狀翻譯成計算機(jī)文字的過程。文章利用Java語言實(shí)現(xiàn)OCR步驟,包括像素二值化,圖像分割,訓(xùn)練識別和輸出等。測試開發(fā)是在web驗(yàn)證碼識別場景中進(jìn)行的,web驗(yàn)證碼是將一串隨機(jī)產(chǎn)生的符號,生成為圖片,再加上一些干擾線,使之能有效防止惡意注冊和灌水。通過測試表明,該方法可行、有效;拒識率、誤識率低;識別速度快,具有一定的實(shí)用意義。

關(guān)鍵詞: OCR; 驗(yàn)證碼; 文字識別; 干擾線; 拒識率; 誤識率

中圖分類號:TP3 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2018)07-48-04

Abstract: OCR (Optical Character Recognition) is the process of translating the shape, which is determined by detecting the pattern of the brightness of each pixel of the character, into computer text by character recognition method. In this paper, OCR procedure is implemented in Java language, including pixel binarization, image segmentation, recognition training and output. The test development is carried out in the Web verification code identification scene. The Web verification code is a string of randomly generated symbols, generated as a picture, and a number of interference lines added on it, so that it can effectively prevent malicious registration and irrigation. The test shows that the method is feasible and effective, with low rejection rate and error rate, fast recognition speed, and has practical significance.

Key words: OCR; verification code; character recognition; interfering line; rejection rate; error rate

0 引言

識別原理及實(shí)現(xiàn)方法:OCR采用光學(xué)的方式,將紙質(zhì)或圖片文檔中的文字轉(zhuǎn)換成為黑白點(diǎn)陣的圖像文件,并通過識別軟件將圖像中的文字轉(zhuǎn)換成文本格式,供文字處理軟件進(jìn)一步編輯加工的技術(shù)。

識別過程一般分以下幾個步驟:

首先訓(xùn)練學(xué)習(xí)過程,分成圖像生成,預(yù)處理,圖像分割三個步驟,圖像分割不是簡單的將圖片等份分割,常常需要程序員像素級微調(diào),才能最終生成合適的樣本。

其次才是識別過程,識別前3個步驟和訓(xùn)練學(xué)習(xí)是一致的,而且各個步驟處理的參數(shù)必須和訓(xùn)練完全一樣,否則獲取的單字符圖片完全沒有可比性,識別步驟是把單字符圖片和樣本數(shù)據(jù)一一比較,獲得最為接近的作為結(jié)果。識別流程如圖1所示。

以下是各個步驟詳細(xì)內(nèi)容及代碼實(shí)例。

1 圖像預(yù)處理

預(yù)處理過程就是用閾值分割法把圖片上每個像素二值化,像素紅綠藍(lán)在一定范圍內(nèi)置成白色,反之黑色。這里常見的問題是背景和字符亮度接近,需要手工試探,才能找到合適的閾值。以下是java預(yù)處理函數(shù),函數(shù)根據(jù)圖片高和寬遍歷每個像素點(diǎn),通過ISWHITE函數(shù)來判斷當(dāng)前像素取值。

INT WIDTH=IMG.GETWIDTH();

INT HEIGHT=IMG.GETHEIGHT();

FOR (INT X=0; X

FOR (INT Y=0; Y

IF (ISWHITE(IMG.GETRGB(X, Y))==1) {

IMG.SETRGB(X, Y, COLOR.WHITE.GETRGB());

} ELSE {

IMG.SETRGB(X, Y, COLOR.BLACK.GETRGB());

}

2 分割

最常見的驗(yàn)證碼字符,一般是四位數(shù)字,為了識別字符串,需要將圖片分割成四個單字符圖片,以下方法適用于位置固定的驗(yàn)證碼。SPLITIMAGE函數(shù)按照固定寬高分別生成1.JPEG,2.JPEG,3.JPEG,4.JPEG四張圖片。

PUBLIC STATIC LIST

SPLITIMAGE(BUFFEREDIMAGE IMG)

THROWS EXCEPTION {

IMAGEIO.WRITE(IMG, "JPEG", NEW FILE

(WORKPATH+"RESULT\\ALL.JPEG"));

LIST SUBIMGS=NEW

ARRAYLIST();

SUBIMGS.ADD(IMG.GETSUBIMAGE(4, 1, 15, 18));

SUBIMGS.ADD(IMG.GETSUBIMAGE(19, 1, 15, 18));

SUBIMGS.ADD(IMG.GETSUBIMAGE(34, 1, 15, 18));

SUBIMGS.ADD(IMG.GETSUBIMAGE(49, 1, 15, 18));

IMAGEIO.WRITE(IMG.GETSUBIMAGE(4, 1, 15, 18),

"JPEG",NEW FILE(WORKPATH+"RESULT\\1.JPEG"));

IMAGEIO.WRITE(IMG.GETSUBIMAGE(19,1, 15, 18),

"JPEG",NEW FILE(WORKPATH+"RESULT\\2.JPEG"));

IMAGEIO.WRITE(IMG.GETSUBIMAGE(34,1, 15, 18),

"JPEG",NEW FILE(WORKPATH+"RESULT\\3.JPEG"));

IMAGEIO.WRITE(IMG.GETSUBIMAGE(49,1, 15, 18),

"JPEG",NEW FILE(WORKPATH+"RESULT\\4.JPEG"));

RETURN SUBIMGS;

}

3 訓(xùn)練

訓(xùn)練是指按照步驟1,2,窮舉單字符樣式圖片,并將文件名設(shè)置成實(shí)際字符值。-1,-2,-3則是字符多種變形時不同的樣本序號。

4 識別

相對前面三個步驟,識別則相對簡單,算法只是機(jī)械地將分割圖片和樣本對象對比,獲取相似度最高的樣本圖片,該圖片的結(jié)果就是樣本的文件名(“-”前面部分)。代碼為冒泡排序算法。

PUBLIC STATIC STRING GETSINGLECHAROCR

(BUFFEREDIMAGE IMG,

MAPMAP) {

STRING RESULT="";

INT WIDTH=IMG.GETWIDTH();

INT HEIGHT=IMG.GETHEIGHT();

INT MIN=WIDTH * HEIGHT;

FOR (BUFFEREDIMAGE BI : MAP.KEYSET()) {

INT COUNT=0;

LABEL1: FOR (INT X=0; X

FOR (INT Y=0; Y

IF (ISWHITE(IMG.GETRGB(X,Y))!=ISWHITE

(BI.GETRGB(X, Y))) {

COUNT++;

IF (COUNT>=MIN)

BREAK LABEL1;

}

}

}

IF (COUNT < MIN) {

MIN=COUNT;

RESULT=MAP.GET(BI);

}

}

RETURN RESULT;

}

為了防止暴力破解,網(wǎng)站開發(fā)方通常會增加驗(yàn)證碼復(fù)雜度,常用的方法有以下幾種:

4.1 干擾線

增加干擾線會大大增加誤識率。對不同的干擾線,也有不同的方法處理,a干擾線和字符亮度差別大。

如圖3所示,X軸代表亮度,Y軸代表像素數(shù)量,此類情況干擾線亮度較集中,可以直接根據(jù)三原色重新調(diào)整閾值,從閾值1改至閾值2,這樣背景色和干擾線設(shè)置在閾值之外,預(yù)處理之后的圖片就已經(jīng)不含干擾線了。

b對于干擾線和驗(yàn)證碼亮度接近,無法用閾值二值化處理的,可以用算法剔除干擾。譬如對點(diǎn)Color[I][J],如果Color[I+1][J],Color[I-1][J],Color[I][J+1],Color[I][J-1]都是純黑色或者純白色的,就認(rèn)為Color[I][J]是干擾,將Color[I][J]置為白色。

4.2 字符變形

字符變形也是常用的防識別手段,字符變形多種多樣,有些扭曲的非常嚴(yán)重,這樣的識別還是有些難度的,而常見的變形往往是幾個固定方向的傾斜,這樣情況處理起來非常簡單,只要窮舉各個角度各個字符的樣本圖片,依然能識別成功。

4.3 位置不固定的字符

有些驗(yàn)證碼并不固定的圖片的某個位置上,而是在一定區(qū)間范圍內(nèi);x,y方向隨機(jī)偏移,這種情況處理分兩種。

直接在圖片分割的時候,采用先縱后橫的算法,直接獲取單個字符圖片,其算法如下:

PUBLIC STATIC LIST

SPLITIMAGE(BUFFEREDIMAGE IMG)

THROWS EXCEPTION {

LIST SUBIMGS=NEW

ARRAYLIST();

INT WIDTH=IMG.GETWIDTH();

INT HEIGHT=IMG.GETHEIGHT();

LIST WEIGHTLIST=NEW ARRAYLIST

();

FOR (INT X=0; X

INT COUNT=0;

FOR (INT Y=0; Y

IF (ISWHITE(IMG.GETRGB(X, Y))==1) {

COUNT++;

}

}

WEIGHTLIST.ADD(COUNT);

}

FOR (INT I=0; I

INT LENGTH=0;

WHILE (WEIGHTLIST.GET(I++)>1) {

LENGTH++;

}

IF (LENGTH > 12) {

SUBIMGS.ADD(REMOVEBLANK(IMG

.GETSUBIMAGE(I-LENGTH-1, 0,

LENGTH/2, HEIGHT)));

SUBIMGS.ADD(REMOVEBLANK(IMG

.GETSUBIMAGE(I-LENGTH/2-1, 0,

LENGTH/2, HEIGHT)));

} ELSE IF (LENGTH>3) {

SUBIMGS.ADD(REMOVEBLANK(IMG

.GETSUBIMAGE(I-LENGTH-1, 0,

LENGTH, HEIGHT)));

}

}

RETURN SUBIMGS;

}

第二種方法,在識別過程中遍歷整個區(qū)間和樣本圖片比較識別。

圖4中所示案例情況:樣本為4*3像素,實(shí)際圖片范圍為7*6像素,XY坐標(biāo)區(qū)間[11,21][16,28],函數(shù)方法從原點(diǎn)向右下角遍歷所有的4*3圖片,再與樣本作比較。函數(shù)在[13,24][15,27]處獲得比較結(jié)果字符7。

5 結(jié)束語

文章介紹OCR字符識別四個步驟的函數(shù)方法,并描述了簡單干擾下的應(yīng)對措施。通過代碼測試,證實(shí)該方法穩(wěn)定、有效。OCR識別一直是模式識別領(lǐng)域極具代表性的課題,隨著互聯(lián)網(wǎng)的發(fā)展,產(chǎn)生出許多以光學(xué)字符識別作為入口的文字信息錄入及查詢類應(yīng)用。由于能力和時間所限,上述方法依然比較粗淺,研究中發(fā)現(xiàn)幾乎每個步驟都有大量優(yōu)化算法的空間。在OCR領(lǐng)域,新的算法思路不斷涌現(xiàn),在一個高效的OCR系統(tǒng)中僅僅采用一種識別方式是無法滿足現(xiàn)實(shí)要求的。單個識別策略的能力有限,因此采用多種策略實(shí)現(xiàn)優(yōu)勢互補(bǔ),多角度利用字符的特征信息是OCR發(fā)展的方向。在這個方向上經(jīng)常采用的集成策略有投票法、概率法、Dempster-Shafer法以及行為知識空間法等多種綜合方法[4]。目前,在漢字圖像識別中拒識率、誤識率較高,是一個有待解決的問題。由于漢字是非字母化、非拼音化的文字,且漢字信息量很大,有不同的字形、字體,而且結(jié)構(gòu)復(fù)雜,因此漢字識別的過程比一般英文字符識別更加復(fù)雜[5] 。

參考文獻(xiàn)(References):

[1] 霍強(qiáng).光學(xué)字符識別技術(shù):讓電腦像人一樣閱讀[A].China Academic Journal Electronic Publishing House [C].科學(xué)與現(xiàn)代化,2016.14.

[2] 楊淑瑩.圖像識別與項(xiàng)目實(shí)踐VC++、MATLAB技術(shù)實(shí)現(xiàn)[M].電子工業(yè)出版社,2014.

[3] 田媛美.基于深度學(xué)習(xí)的車牌檢測[D].西安電子科技大學(xué)碩士學(xué)位論文,2017.

[4] 荊濤,王仲.光學(xué)字符識別技術(shù)與展望[J].計算機(jī)工程,2003.29(2):2

[5] 李南.光學(xué)字符識別技術(shù)與圖書館信息資源的數(shù)字化[J].激光雜志,2012.33(5):3