五分鐘技術(shù)趣談 | OCR在游戲加速效果上的應(yīng)用
Labs 導(dǎo)讀
OCR(Optical Character Recognition,光學(xué)字符識(shí)別)技術(shù)已廣泛應(yīng)用于日常的文字識(shí)別、圖像識(shí)別、身份認(rèn)證等場(chǎng)景當(dāng)中。在面對(duì)海量的需要進(jìn)行加工處理的信息數(shù)據(jù)時(shí),傳統(tǒng)的人工識(shí)別工作量大且繁瑣,而且由于大部分工作都是機(jī)械重復(fù)性勞動(dòng),對(duì)于工作人員來(lái)說(shuō)可能顯得枯燥。從圖像中獲取有用信息,考慮使用識(shí)別技術(shù),實(shí)現(xiàn)文字識(shí)別自動(dòng)化,提升工作效率。
Part 01● 圖片預(yù)處理 ●
完整的一張游戲運(yùn)行截圖中除了我們所需要的時(shí)延值外,還會(huì)有上下行數(shù)據(jù)、位置坐標(biāo)、生存人數(shù)等數(shù)據(jù)(不同游戲的數(shù)據(jù)存在差異),考慮到OCR識(shí)別會(huì)把圖片上的所有值都解析出來(lái),我們需要進(jìn)一步對(duì)多個(gè)數(shù)據(jù)進(jìn)行分析篩選,在一定程度上加大獲取時(shí)延值的難度,因此先把圖片進(jìn)行預(yù)處理,只截取有用的時(shí)延部分。同一款游戲的時(shí)延值在畫面上的位置一定,針對(duì)不同游戲只要改變截取位置。
Part 02● OCR識(shí)別分析 ●
拿到截取的游戲圖片后,接下來(lái)就要對(duì)其進(jìn)行識(shí)別,獲取其中的時(shí)延數(shù)據(jù),這里將運(yùn)用到OCR識(shí)別技術(shù)。它是利用光學(xué)技術(shù)和計(jì)算機(jī)技術(shù)把紙上或圖片中的文字讀取出來(lái),轉(zhuǎn)換成計(jì)算機(jī)能夠接受的格式,加工處理識(shí)別出其中有用的信息。OCR的識(shí)別過(guò)程一般包括圖像處理(二值化、降噪、校正等)、特征提取、對(duì)比檢測(cè)、內(nèi)容識(shí)別。而近年來(lái)隨著人工智能的不斷發(fā)展,基于深度學(xué)習(xí)的OCR表現(xiàn)相較于傳統(tǒng)方法在識(shí)別率和效率上更加出色。目前百度、騰訊、華為等公司都提供了OCR服務(wù),不需要了解具體的識(shí)別技術(shù)細(xì)節(jié),通過(guò)調(diào)用API接口即可完成圖片文字的識(shí)別。我們選擇使用百度的OCR文字識(shí)別接口服務(wù),根據(jù)官方提供的API文檔完成方法的調(diào)用。具體使用方法如下:
1.安裝aip識(shí)別包,引入相應(yīng)的lib
- pip install baidu aip
 - from aip import AipOcr
 
2.初始化OCR
- def initOcr(ocrAuth):
 - client = AipOcr(ocrAuth['appid'],
 - ocrAuth['appkey'], ocrAuth['secretkey'])
 - return client
 
這里需要使用百度賬號(hào)申請(qǐng)appkid、appkey和secretkey信息。
3.調(diào)用具體識(shí)別方法
- result = client.webImage(image)
 
接口服務(wù)返回?cái)?shù)據(jù):
- [{‘words’: ’ping: 77ms’}]
 
通過(guò)查看不同游戲我們發(fā)現(xiàn),部分游戲的時(shí)延值前面帶有“Ping”,有些是直接一個(gè)數(shù)值,還有的則是中文的“延遲”,因此需要對(duì)返回的識(shí)別結(jié)果做進(jìn)一步的處理,用于區(qū)分不同游戲。最后通過(guò)正則表達(dá)獲取到其中的時(shí)延值。
- re_obj = re.compile(r"\d+\.?\d*")
 - res_list = re_obj.findall(words)
 
Part 03● 工具實(shí)現(xiàn) ●
完成了圖片的處理和識(shí)別,接下來(lái)就是把結(jié)果友好地進(jìn)行展示,我們實(shí)現(xiàn)一個(gè)簡(jiǎn)單的可執(zhí)行界面工具,將識(shí)別流程串聯(lián)起來(lái)。整體的流程:
工具內(nèi)容主要包括游戲選擇、圖片路徑選擇、游戲截圖。為了減少識(shí)別調(diào)用次數(shù),提高識(shí)別效率,可以將圖片合并處理。
最終的工具界面長(zhǎng)這樣:
Part 04● 游戲圖片識(shí)別 ●
接下來(lái)就是具體的使用了,首先需要選擇具體的游戲,獲取游戲圖片的保存路徑用于讀取,然后針對(duì)游戲圖片進(jìn)行截圖獲取坐標(biāo)。將圖片經(jīng)過(guò)OCR識(shí)別顯示結(jié)果,并根據(jù)識(shí)別的結(jié)果和圖片時(shí)間畫出曲線圖。我們使用一款游戲圖片進(jìn)行測(cè)試:
識(shí)別結(jié)果如下,5個(gè)數(shù)據(jù)為1組,55張圖片一共耗時(shí)9.28s。曲線圖直觀地展示了游戲時(shí)延值隨時(shí)間的變化情況。
通過(guò)人工查看圖片與識(shí)別結(jié)果進(jìn)行對(duì)比,兩者的時(shí)延值一致。針對(duì)不同游戲,只要改變圖片的讀取路徑以及截取坐標(biāo)位置即可。
Part 05● 結(jié)語(yǔ) ●
結(jié)合OCR技術(shù),可以對(duì)不同類型的圖片信息進(jìn)行快速有效地識(shí)別,減少人工的工作量,滿足項(xiàng)目測(cè)試及數(shù)據(jù)比對(duì)的需求。隨著信息技術(shù)的不斷發(fā)展,各式各樣的OCR技術(shù)也將會(huì)更多地應(yīng)用在日常生活中,給人們帶來(lái)高效和便利。
作者:馮旭超,單位:中國(guó)移動(dòng)智慧家庭運(yùn)營(yíng)中心
【本文為51CTO專欄作者“移動(dòng)Labs”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】





















 
 
 



















 
 
 
 