# OCR-Operationen

Dieses Kapitel beschreibt, wie Sie OCR zur Unterstützung von UI-Operationen verwenden können. In Situationen wie bei Spieleanwendungen sind herkömmliche UI-Selektoren möglicherweise nicht verwendbar. In solchen Fällen können Sie OCR-Methoden für Operationen wählen. Die OCR-Erkennungsmethode unterstützt nur Operationen wie die Überprüfung der Existenz eines Elements, Klicks, Screenshots usw. Die OCR-Backend-Bibliothek unterstützt die Verwendung von paddleocr, easyocr sowie benutzerdefinierten HTTP-Backend-Schnittstellen.

## OCR-Backend einrichten

Bevor Sie die OCR-Erkennungsmethode verwenden, müssen Sie zuerst das OCR-Backend einrichten. Sie müssen die **Abhängigkeitsbibliotheken im Voraus selbst installieren**.

```{attention}
Wenn Sie einen Cluster betreiben, d.h. mehrere Geräte auf demselben Computer steuern müssen, stellen Sie sicher, dass Sie dies selbst als OCR-HTTP-Schnittstelle kapseln. Die direkte Verwendung von paddleocr oder easyocr verbraucht eine große Menge an lokalem Speicher oder Rechenressourcen, da jeder Prozess die Bibliotheken wiederholt lädt.
```

Verwenden Sie paddleocr als Backend, mit einer Screenshot-Qualität von 80 für die Erkennung und GPU-Beschleunigung.

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

Verwenden Sie easyocr als Backend, mit einer Screenshot-Qualität von 80 für die Erkennung von vereinfachtem Chinesisch und Englisch.

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

Die zusätzlichen Parameter in `setup_ocr_backend` sollten die Parameter zur Initialisierung der Instanz sein. Wenn Sie nicht verstehen, wie die obigen Parameter geschrieben werden, sehen Sie sich bitte die folgenden offiziellen Instanziierungsparameter an und vergleichen Sie sie mit den obigen.

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

Ein benutzerdefiniertes OCR-Backend wird hauptsächlich für die Steuerung einer großen Anzahl von Geräten oder in Situationen ohne GPU-Beschleunigung auf dem lokalen Rechner verwendet. Sie können die geschriebene Erkennung als HTTP-Dienst bereitstellen und innerhalb des benutzerdefinierten Backends eine Fern-Erkennung anfordern. Sie müssen `MyCustomOcrBackend` selbst erben und schreiben und die Erkennungsergebnisse gemäß dem erforderlichen Format formatieren. Die Definition des Antwortformats finden Sie auch in der von uns bereitgestellten Datei `paddle_ocr_http_backend.py`. Sie können diesen Dienst auch mit geringfügigen Änderungen direkt bereitstellen.

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

Anschließend setzen Sie den OCR-Erkennungs-Backend-Dienst einfach auf die benutzerdefinierte Dienstklasse.

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

## OCR-Selektoren

Derzeit unterstützt der OCR-Erkennungs-Selektor nur die folgenden Typen.

### text

Stimmt mit dem vollständigen Text überein.

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

### textContains

Übereinstimmung, wenn der Text den Wert enthält.

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

### textMatches

Übereinstimmung mit regulärem Ausdruck im Text.

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

## OCR-Operationen

Derzeit unterstützt der OCR-Erkennungs-Selektor nur die folgenden zugehörigen Operationen.

### click

Klickt auf das ausgewählte Element.

```python
element.click()
```

### click_exists

Klickt auf das ausgewählte Element, falls es existiert.

```python
element.click_exists()
```

### exists

Prüft, ob das Element existiert.

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

### screenshot

Erstellt einen Screenshot des übereinstimmenden Elements.

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

### info

Ruft die Informationen der übereinstimmenden OCR-Erkennung ab.

```python
element.info()
```

```{tip}
Wenn OCR Ihr Problem immer noch nicht lösen kann, können Sie auch versuchen, die Schnittstelle für den Bildmerkmalsabgleich zu verwenden.
```