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