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

?

OCR文字識別技術(shù)的研究

2020-04-30 04:36張婷婷馬明棟王得玉
關(guān)鍵詞:灰度閾值百度

張婷婷,馬明棟,王得玉

(南京郵電大學(xué),江蘇 南京 210003)

0 引 言

OCR的概念于1929年由德國科學(xué)家Tausheck最先提出。最早對印刷體漢字識別進(jìn)行研究的是IBM公司的Casey和Nagy[1]。在20世紀(jì)的60、70年代,世界各個國家對OCR的研究主要集中在對文字的識別方法上,并且僅是對0到9的數(shù)字進(jìn)行識別。而國內(nèi)在OCR技術(shù)的研究相對較晚。在20世紀(jì)70年代,國內(nèi)學(xué)者起初研究的是數(shù)字、英文字母及符號的識別,70年代末開始研究漢字的識別。

OCR[2]技術(shù)在目前互聯(lián)網(wǎng)及人工智能迅速發(fā)展的趨勢下,也有了飛速的發(fā)展。到目前為止,結(jié)合其他方向的技術(shù),特別是人工智能方向,OCR技術(shù)已經(jīng)發(fā)展到可以識別帶有地理位置信息的圖紙,可以對文字進(jìn)行高精度的識別,包括生僻字在內(nèi)的情況[3]。

OCR技術(shù)也普遍應(yīng)用在日常生活,最為熟悉的是百度網(wǎng)頁可以拍照識別圖紙上的題目文字,另外還有百度AI輸入法中的一系列文字識別功能,包括:身份證識別、名片識別、表格識別等等[4]。

1 圖像輸入預(yù)處理

圖像輸入,對其進(jìn)行預(yù)處理操作。對于不同格式的圖像,有著不同的存儲格式和壓縮方式[5]。文中的圖像輸入,上傳圖片方法是實(shí)現(xiàn)客戶端上傳一張本地圖片或者使用抓包工具postman向百度服務(wù)器發(fā)送url請求[6]時設(shè)置參數(shù)添加一張本地帶漢字的圖片。

預(yù)處理過程,是使用閾值分割法把圖片上每個像素二值化[7]。以下是用Java語言實(shí)現(xiàn)的預(yù)處理函數(shù),函數(shù)是根據(jù)圖片高度和寬度遍歷圖片上的每個像素點(diǎn),通過ISWHITE來判斷當(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());

//像素紅綠藍(lán)在一定范圍置成白色

} else {

Img.setRGB(x,y,color.WHITE.getRGB());

//反之置成黑色

}

}

}

灰度化處理,在RGB模型中,如果R=G=B時,則彩色表示一種灰度顏色,其中R=G=B的值叫灰度值。灰度圖每個像素只需一個字節(jié)存放灰度值[8],其范圍是0~255。將彩色圖像中的三分量的亮度作為三個灰度圖像的灰度值[9]。其中fk(i,j)(k=1,2,3)為轉(zhuǎn)換后的灰度圖像在(i,j)處的灰度值。采用分量方法[10]:

f1(i,j)=R(i,j)

(1)

f2(i,j)=G(i,j)

(2)

f3(i,j)=B(i,j)

(3)

二值化過程[11],根據(jù)灰度圖像中像素的灰度級值的取值范圍為c0[12],希望能夠更加顯現(xiàn)出圖像中的文字部分,一般圖像中的文字為黑色,在灰度圖像中灰度值較小。二值化過程使用Otsu算法實(shí)現(xiàn),Otsu算法又稱為最大類間方差法[13]。

設(shè)一幅圖像大小為(M*N),f(x,y)是該圖像中點(diǎn)(x,y)處像素的灰度值,灰度級為L,則f(x,y)∈[0,L-1]。若灰度級i的所有像素個數(shù)為fi,則第i級灰度出現(xiàn)的概率為:

(4)

(5)

將圖像中的像素按灰度級用閾值t劃分為兩類,即背景c0和目標(biāo)c1[14]。背景c0的灰度級為0~t-1,目標(biāo)的灰度級為t~L-1。背景c0和目標(biāo)c1對應(yīng)的像素分別為f(i,j)。背景c0部分出現(xiàn)的概率和目標(biāo)c1部分出現(xiàn)的概率分別為:

(6)

(7)

其中,w0+w1=1。

背景c0部分和目標(biāo)c1部分的平均灰度值分別為:

(8)

(9)

圖像的總平均灰度值為:

(10)

圖像中背景和目標(biāo)的類間方差為:

δ2(k)=w0(u-u0)2+w1(u-u1)2

(11)

令k的取值從0~L-1變化,計(jì)算不同k值下的類間方差δ2(k),使得類間方差δ2(k)最大時的那個值就是所要的最佳閾值。

2 圖像分割

圖像分割就是把圖像分成若干個特定的、具有獨(dú)特性質(zhì)的區(qū)域并提出感興趣目標(biāo)的技術(shù)和過程。圖像分割方法近年來又有新型神經(jīng)網(wǎng)絡(luò)圖像分割法,文中使用閾值分割法進(jìn)行圖像分割。

閾值分割方法實(shí)際上是輸入圖像f到輸出圖像g的變換[15],公式如下:

(12)

其中,T為閾值,對于物體的圖像元素g(i,j)=1,對于背景的圖像元素g(i,j)=0。

如果能確定一個合適的閾值就可準(zhǔn)確地將圖像分割開來。閾值確定后,將閾值與像素點(diǎn)的灰度值逐個進(jìn)行比較,而且像素分割可對各像素并行地進(jìn)行,分割的結(jié)果直接給出圖像區(qū)域[16]。

3 漢字識別

前邊的圖像處理都是為此步驟做鋪墊。二值化和圖像分割已經(jīng)將字符提取出來,但是以單個漢字為基礎(chǔ)的識別要將每個字從圖像中提取出來[17]。文中的漢字識別,主要借助百度的OCR識別技術(shù),識別出通用字。

此測試環(huán)境需要的配置如下:

(1)百度官方的Java SDK壓縮包;

(2)Jdk需要1.7以上;

(3)IDE使用Eclipse新建工程,導(dǎo)入下載的工具包;

(4)配置通用文字識別的客服端,以及服務(wù)器代理設(shè)置,代碼如下:

Public class test {

Public static void main(string[] args) {

AipOcr Client=new AipOcr(app_id,api_key,secret_key);

//網(wǎng)絡(luò)設(shè)置

Client.setConnectionTimeoutInMillis(2000);

Client.setSocketTimeoutInMillis(60000);

//代理設(shè)置,http代理

Client.setHttpProxy(“proxy_host”,proxy_port);

//接口調(diào)用

String path=“test.jpg”;

JSONObject res=client.basicGeneral(path,new HashMap());

System.out.println(res.toString(2));

}

}

上述代碼中接口說明如表1所示。

表1 測試代碼接口說明

向服務(wù)器請求識別某張圖片中的所有文字。Java語言的配置代碼如下:

public void sample(AipOcr client) {

//傳入可選參數(shù)調(diào)用接口

HashMap options=new HashMap();

options.put(“l(fā)anguage_type”,“CHN_ENG”);

options.put(“detect_direction”,“true”);

options.put(“detect_language”,“true”);

options.put(“probability”,“true”);

//參數(shù)為本地路徑

String image=“test.jpg”;

JSONObject res=client.basicGeneral(image,options);

System.out.println(res.toString(2));

//參數(shù)為二進(jìn)制數(shù)組

byte[] file=readFile(“test.jpg”);

res=client.basicGeneral(file,options);

System.out.println(res.toString(2));

//通用文字識別, 圖片參數(shù)為遠(yuǎn)程url圖片

JSONObject res = client.basicGeneralUrl(url, options);

System.out.println(res.toString(2));

}

Postman使用post方法請求識別圖片文字,請求參數(shù)設(shè)置如表2所示。

表2 url請求參數(shù)設(shè)置

請求返回結(jié)果參數(shù)說明如表3所示。

表3 請求結(jié)果參數(shù)說明

4 結(jié)束語

介紹了OCR識別的過程和相應(yīng)模塊的代碼實(shí)現(xiàn),理論公式推導(dǎo)。國內(nèi)在OCR方向上的發(fā)展是很迅速的,尤其是國內(nèi)公司在其上的應(yīng)用,這種技術(shù)已經(jīng)滲透到日常手機(jī)打字的軟件百度輸入法中。文中的二值化方法只是平常方法中的一個,還有其他很多方法未涉及,圖像分割也是如此。

OCR大體可以分為兩類:手寫體識別和印刷體識別。文中使用Java語言基于百度OCR的API實(shí)現(xiàn)OCR掃描識別印刷體圖片上文字的一個客戶端(普通文字識別),操作可以借助百度公司OCR的API利用抓包工具postman向其服務(wù)器發(fā)送post請求,在請求參數(shù)中帶上一張帶有文字的圖片或者使用實(shí)現(xiàn)的客戶端進(jìn)行圖片上傳識別。還介紹了圖像文字識別剛開始的圖像處理,其中圖像分割步驟至關(guān)重要,是識別率高的關(guān)鍵點(diǎn)。文中默認(rèn)識別通用文字中文,高精度的識別或者帶位置信息的識別,生僻字的識別,此處不做研究。Post請求提交時,請求頭Header設(shè)置為x-wwww-form-urlencoded形式。

猜你喜歡
灰度閾值百度
航空濾光片陣列多光譜圖像條帶灰度調(diào)整算法
采用改進(jìn)導(dǎo)重法的拓?fù)浣Y(jié)構(gòu)灰度單元過濾技術(shù)
改進(jìn)的軟硬閾值法及其在地震數(shù)據(jù)降噪中的研究
土石壩壩體失穩(wěn)破壞降水閾值的確定方法
基于小波變換閾值去噪算法的改進(jìn)
天津港智慧工作平臺灰度發(fā)布系統(tǒng)和流程設(shè)計(jì)
改進(jìn)小波閾值對熱泵電機(jī)振動信號的去噪研究
Arduino小車巡線程序的灰度閾值優(yōu)化方案
百度年度熱搜榜
不懂就百度