文字辨識操作

本章節為您介紹如何使用 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 仍然無法解決您的問題,您還可以嘗試使用影像特徵匹配的介面進行影像匹配。