目前安卓按鍵常用的文字識別有兩大類,一是從xml提取界面文字,二是ocr圖像識別文字。
兩種方式各有優缺點:
從xml中提取文字:
優點:速度快、「識別」準確
缺點:不是所有的app都支持,遊戲類的也不支持
ocr圖像識別:
優點:所有都支持
缺點:速度慢一些,做不到百分百準確
下面根據這兩大類來梳理一下按鍵中涉及到的命令方法;
這裡只做簡單介紹,具體操作可以在歷史文章中搜索相關資料,先來說說xml提取界面文字的方法
山海插件getuixml命令提取xml文字
山海插件getuixml命令的原理是通過uiautomator dump獲取app上的頁面元素,然後會保存到window_dump.xml文件,再通過讀取window_dump.xml文件裡面xml信息。
xml信息裡面包括界面上元素的文字、元素的位置等信息,提取這些信息就得到我們想要的內容了。
當然由於xml是由大量代碼組成,初學時會覺得有些費勁。
getuixml命令有個明顯的缺點,識別速度不夠快,通常需要幾秒鐘時間才能把讀取到xml文件。
jsd插件獲取xml文字
jsd插件的核心就是對xml文件的提取和處理,這裡我加上了處理兩個字,因為山海插件主要就是提取xml文件,後期對xml中有效內容的提取涉及到的命令很少。
jsd插件獲取xml的方式不再是uiautomator dump了,而是安裝一個jsd.apk文件,通過其獲取xml,這麼做有一個明顯的優勢就是提取xml速度大大提升,做到毫秒級提取。
同時jsd插件針對xml的提取做了很多命令,使得提取xml的後期處理變得容易很多。
element命令
element命令是按鍵自帶界面元素命令,它的優點是提取速度比較快,缺點是只有簡單的提取處理命令。
目前也有基於這個命令開發的elementEx插件。
關於xml提取文字就說這些,下面來說說ocr文字識別的幾種方式。
所有ocr文字識別都是對於圖像的查找。
製作字型檔
製作字型檔的原理是把圖片先變成黑白二值化圖,然後把圖像拆分,每一個拆分後的圖像對應一個或者多個文字內容,如下圖:

製作字型檔的方法我在基礎課21課專門講了,想學習的朋友可以去看看。
這裡面有需要注意的細節:
①圖片上的文字不要求是完整的。

比如這個圖像我們也可以把它當做「按」字處理。
②同一個文字,可以對應多個圖片

兩個圖片都可以對應「按」字。
③基於第②點字型檔在做的時候要多寫幾個,也就同一個文字有多個對應的圖片,保證在發生細微變化後識別的準確性。
這一點對於初學者很容易忽略。
本地光學文字識別
本地光學文字識別是按鍵助手新版本增加的命令Image.OcrText,相對於自己做字型檔,按鍵提供了一個現成的ocrlib字型檔,對於簡單的文字識別來說,還是很好用的。
api雲識別
比較常用的是百度雲識別,對接百度api,每天免費5萬次,對於普通識別還是夠用。
當然還有其他的api雲識別,比如有道識別、優圖識別等等,原理上都差不多。
前段時間我發了一個驗證碼文字識別api的文章,也是一樣的原理。
虹魚圖靈識別
這個插件也是關於圖像處理的插件,借用它介紹中的一句話:這個虹魚圖靈識別工具適用於AI人工智慧機器人、圖形圖像、顏色和文字識別領域的相關行業作為學習參考。
對於這方面感興趣的朋友推薦去學一下。
個人習慣建議
我們遇到需要識別文字的時候,優先考慮用提取xml,如果不支持,再考慮用ocr識別,當然除了學習研究以外,不建議自己做字型檔,直接用雲識別就挺好的。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/276881.html