Operaciones de Reconocimiento de Texto

Este capítulo le presenta cómo usar OCR para asistir en las operaciones de la interfaz. En situaciones como aplicaciones de juegos, los selectores de interfaz de usuario convencionales pueden no ser utilizables. En tales casos, puede optar por utilizar métodos de OCR para realizar operaciones. El método de reconocimiento OCR solo admite operaciones como verificar si un elemento existe, hacer clic, tomar capturas de pantalla, etc. La biblioteca de backend de OCR admite el uso de paddleocr, easyocr y interfaces de backend http personalizadas.

Configurar el Backend de OCR

Antes de utilizar el método de reconocimiento OCR, primero debe configurar el backend de OCR. Deberá instalar las bibliotecas de dependencia con antelación por su cuenta.

Atención

Si se trata de un clúster, es decir, si necesita controlar varios dispositivos en el mismo ordenador, asegúrese de encapsularlo usted mismo como una interfaz HTTP de OCR. El uso directo de paddleocr o easyocr consumirá una gran cantidad de memoria local o recursos computacionales, ya que cada proceso se cargará repetidamente.

Usando paddleocr como backend, la calidad de la captura de pantalla para el reconocimiento es de 80, utilizando aceleración por GPU.

d.setup_ocr_backend("paddleocr", quality=80, use_gpu=True, drop_score=0.85, use_space_char=True)

Usando easyocr como backend, la calidad de la captura de pantalla para el reconocimiento es de 80, reconociendo chino simplificado e inglés.

d.setup_ocr_backend("easyocr", ["ch_sim", "en"], quality=80)

Los parámetros adicionales en setup_ocr_backend deben ser los parámetros para inicializar esa instancia. Si no entiende cómo se escriben los parámetros anteriores, consulte los siguientes parámetros de instanciación oficiales y compárelos con los de arriba.

paddleocr.PaddleOCR(use_gpu=True, drop_score=0.85, use_space_char=True)
easyocr.Reader(["ch_sim", "en"])

Backend de OCR personalizado, utilizado principalmente para el control de una gran cantidad de dispositivos o en situaciones donde no hay aceleración por GPU en la máquina local. Puede desplegar el reconocimiento escrito como un servicio HTTP y solicitar el reconocimiento remoto dentro del backend personalizado. Deberá heredar y escribir MyCustomOcrBackend usted mismo y formatear los resultados del reconocimiento según el formato requerido. También puede encontrar la definición del formato de respuesta en el archivo paddle_ocr_http_backend.py que proporcionamos, y puede modificarlo ligeramente para desplegar este servicio directamente.

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()

Luego, simplemente configure el servicio de backend de reconocimiento OCR con la clase de servicio personalizada.

d.setup_ocr_backend(HttpOcrBackend, "http://server/ocr", "Secret")

Selectores OCR

Actualmente, el selector de reconocimiento OCR solo admite los siguientes tipos.

text

Coincide con el text completo.

element = d.ocr(text="我的")

textContains

Coincidencia por texto que contiene.

element = d.ocr(textContains="我的")

textMatches

Coincidencia por expresión regular de texto.

element = d.ocr(textMatches=".*?我的")

Operaciones OCR

Actualmente, el selector de reconocimiento OCR solo admite las siguientes operaciones relacionadas.

click

Hace clic en el elemento seleccionado.

element.click()

click_exists

Si existe, hace clic en el elemento seleccionado.

element.click_exists()

exists

Si el elemento existe.

element = d.ocr(textMatches=".*?我的")

screenshot

Toma una captura de pantalla del elemento coincidente.

element.screenshot(100, ).save("element.png")

info

Obtiene la información OCR coincidente.

element.info()

Consejo

Si el OCR aún no puede resolver su problema, también puede intentar usar la interfaz de coincidencia de características de imagen para la coincidencia de imágenes.