文字識別¶
本章節為您介紹如何使用 OCR 輔助介面操作。在遊戲等應用中,常規介面選擇器可能無法使用,此時可選擇 OCR 方式。OCR 識別方式僅支援檢查元素是否存在、點擊、螢幕截圖等操作。OCR 後端函式庫支援 paddleocr、easyocr 以及自訂 HTTP 後端介面。
設定 OCR 後端¶
使用 OCR 識別方式前,需先設定 OCR 後端,您需要自行提前安裝相依套件。
注意
如果是叢集,即需要在同一台電腦上控制多個裝置,請務必自行封裝為 OCR HTTP 介面。直接使用 paddleocr 或 easyocr 會佔用大量本機記憶體或計算資源,因為每個行程會重複載入。
使用 paddleocr 作為後端,用於識別的截圖品質為 80,並啟用 GPU 加速。
# 使用 paddleocr 作為後端,用於識別的截圖品質為 80,並啟用 GPU 加速。
d.setup_ocr_backend("paddleocr", quality=80, use_gpu=True, drop_score=0.85, use_space_char=True)
使用 easyocr 作為後端,用於識別的截圖品質為 80,識別簡體中文及英文。
# 使用 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 服務,並在自訂後端中請求進行遠端識別。您需要繼承並編寫 CustomOcrBackend,並按照要求的格式進行識別結果的格式化。您也可以在我們提供的 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(self.url, headers={"X-Auth": self.auth},
data=image)
return r.json()
隨後將 OCR 識別後端服務設定為自訂的服務類別即可。
d.setup_ocr_backend(HttpOcrBackend, "http://server/ocr", "Secret")
OCR 選擇器¶
目前 OCR 識別的選擇器支援以下幾種。
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.exists()
screenshot¶
擷取配對元素的螢幕截圖。
element.screenshot(100).save("element.png")
info¶
獲取配對到的 OCR 資訊。
element.info()
小撇步
如果 OCR 仍然無法解決您的問題,您還可以嘗試使用圖像特徵配對介面進行圖像比對。