Hamibot 中 OCR 識字的使用示例
用途
它是在游戲或者某些層級復雜的頁面中,無法 get 控件下的方法。 本文將示例本地識別和調(diào)用百度云的兩種識別方式。 本地識別的優(yōu)點是速度快且穩(wěn)定,免費;云識別的優(yōu)點是識圖能力強大。
兩種方式
1)使用 hamibot 自帶的本地識別
效果圖:

這里新建了一個函數(shù) ocr_find() 它的功能是:如果找到括號內(nèi)字符,就返回其在屏幕上的坐標,反之,則提示。 大致流程如下

所以 res["results"][index_right]["bounds"]["left"] 就可以定位到原始分析數(shù)據(jù)中某一組的左邊框坐標,使用 for/in 遍歷,即可匹配出要找的字符串。再之后就可以拿到它的詳細信息,怎么使用它就自由發(fā)揮了。
2)調(diào)用百度云 OCR 模塊

這里是你的 AK 和 SK,百度云內(nèi)的操作不再細說。
先看第二個函數(shù)?function Baidu_ocr,簡單說就是 1)將圖片 轉為 base64 2)填好自己的賬號信息,選擇圖片參數(shù)(詳細見官網(wǎng)文檔) 3)將這些信息 post 給百度云 4)拿到百度云返回的數(shù)據(jù)
看第一個函數(shù)?function ocr_click?1.截屏,圖片傳給?function Baidu_ocr?拿到百度云的識別結果 2.用 for 去一個個比對,匹配成功則返回,無結果就提示 3.拿到坐標,點擊其左上角 這里百度云返回的數(shù)據(jù)和上面 hamibot 自帶識別的數(shù)據(jù)都是層層堆疊的,需要一層一層剝開,我這里比對的都是文字,你可以比對坐標。
或者自定義些別的功能,比如:記錄某字符串在屏幕上出現(xiàn)的次數(shù)和位置
注意
1.有時,屏幕上有“星期一”,但是搜索“星期一”卻搜不到,大概率是被識別成“星期”和“一”兩組,所以匹配不到, 可以 減少關鍵字 或者是拆分成單字去搜索,識別結果以組合數(shù)最多的為最高優(yōu)先...方法自選。