文字辨識操作¶
本章節為您介紹如何使用 OCR 來輔助進行介面操作,在遊戲應用等情況下,常規的介面選擇器可能無法使用,此時您可以選擇使用 OCR 的方法進行操作。OCR 辨識方式僅支援檢查元素是否存在、點擊、截圖等操作。OCR 後端函式庫支援使用 paddleocr、easyocr 以及自訂 http 後端介面。
設定 OCR 後端¶
使用 OCR 辨識方式前,需要先設定 OCR 後端,您需要自行提前安裝依賴套件。
注意
如果是叢集,即需要在同一台電腦上對多個裝置進行控制操作,請務必自行封裝為 OCR HTTP 介面,直接使用 paddleocr 或 easyocr 會佔用大量本機記憶體或運算資源,因為每個程序會重複載入。
使用 paddleocr 作為後端,用於辨識的截圖品質為 80,使用 GPU 加速。
d.setup_ocr_backend("paddleocr", quality=80, use_gpu=True, drop_score=0.85, use_space_char=True)
使用 easyocr 作為後端,用於辨識的截圖品質為 80,辨識簡體中文及英文。
d.setup_ocr_backend("easyocr", ["ch_sim", "en"], quality=80)
setup_ocr_backend 中的額外參數應為初始化該實例的參數,如果您不明白上述參數是如何拼寫的,請看如下官方的實例化參數並將其與上面的進行比較。
paddleocr.PaddleOCR(use_gpu=True, drop_score=0.85, use_space_char=True)
easyocr.Reader(["ch_sim", "en"])
自訂 OCR 後端,主要用於大量裝置控制或本機無 GPU 加速等情況,可以將編寫的辨識部署為 HTTP 服務,並在自訂後端內請求進行遠端辨識,您需要自行繼承編寫 MyCustomOcrBackend 並按照要求格式進行辨識結果的格式化。您也可以在我們提供的 paddle_ocr_http_backend.py 中找到回應格式的定義,您也可以稍作修改直接部署這個服務。
class HttpOcrBackend(CustomOcrBackend):
def __init__(self, url, auth):
self.auth = auth
self.url = url
def ocr(self, image: bytes):
r = requests.post(url, headers={"X-Auth": self.auth},
data=image)
return r.json()
隨後設定 OCR 辨識的後端服務為自訂的服務類別即可。
d.setup_ocr_backend(HttpOcrBackend, "http://server/ocr", "Secret")
OCR 選擇器¶
目前 OCR 辨識的選擇器僅支援以下幾種類型。
text¶
匹配完整的 text。
element = d.ocr(text="我的")
textContains¶
文本包含匹配。
element = d.ocr(textContains="我的")
textMatches¶
文本正規表示式匹配。
element = d.ocr(textMatches=".*?我的")
OCR 操作¶
目前 OCR 辨識的選擇器僅支援以下幾種相關操作。
click¶
點擊選中的元素。
element.click()
click_exists¶
如果存在則點擊選中的元素。
element.click_exists()
exists¶
元素是否存在。
element = d.ocr(textMatches=".*?我的")
screenshot¶
為匹配的元素截圖。
element.screenshot(100, ).save("element.png")
info¶
獲取匹配到的 OCR 資訊。
element.info()
小撇步
如果 OCR 仍然無法解決您的問題,您還可以嘗試使用影像特徵匹配的介面進行影像匹配。