# Bilder mit Buchstaben und Ziffern erkennen

> Erkennen Sie Buchstaben und Ziffern in Bildern mit YesCaptcha. ImageToTextTaskOcrBase und ImageToTextTaskMuggle liefern synchron; ImageToTextTask und ImageToTextTaskM1 arbeiten asynchron und unterstützen Groß-/Kleinschreibung, reine Ziffern, Rechenaufgaben und Längenvorgaben. Eigene Modelle sind möglich.

Source: https://docs.yescaptcha.com/de/tasks/image-to-text/ · Last verified: 2026-10-15

> This page was machine-translated from the Chinese version. If anything differs, the Chinese version prevails: https://docs.yescaptcha.com/zh/tasks/image-to-text/

Senden Sie ein Captcha-Bild mit Buchstaben und Ziffern als Base64, und Sie erhalten den darin enthaltenen Text zurück (`solution.text`). `ImageToTextTaskOcrBase` kostet 2 Punkte (≈ $0.30 / 1k) pro Bild und arbeitet synchron: Ein einziger `createTask`\-Request liefert das Ergebnis. Wenn Sie Vorgaben wie Groß-/Kleinschreibung, reine Ziffern oder Rechenaufgaben angeben müssen, verwenden Sie das asynchrone `ImageToTextTask`.

- POST `https://api.yescaptcha.com/createTask` (Globaler Endpoint)
- POST `https://cn.yescaptcha.com/createTask` (China-Endpoint)

Der Request-Body ist JSON und wird mit `clientKey` authentifiziert.

## Typen und Preise

| Aufgabentyp | Preis | Modus | Hinweise |
| --- | --- | --- | --- |
| `ImageToTextTaskOcrBase` | $0.30 / 1k; 2 Punkte/Aufgabe · ¥2 / 1k | Synchron |  |
| `ImageToTextTaskMuggle` | $0.30 / 1k; 2 Punkte/Aufgabe · ¥2 / 1k | Synchron | Unterstützt keine case-/numeric-Optionen; mit project\_name wählen Sie ein individuelles Modell aus |
| `ImageToTextTask` | $0.60 / 1k; 4 Punkte/Aufgabe · ¥4 / 1k | Asynchron |  |
| `ImageToTextTaskM1` | $2.25 / 1k; 15 Punkte/Aufgabe · ¥15 / 1k | Asynchron |  |

Die Preise in US-Dollar sind Schätzwerte bei 1 US$ ≈ ¥6.67; Aufgaben werden in Punkten berechnet.

| Sie benötigen | Verwenden Sie |
| --- | --- |
| Gewöhnliche Captchas mit Buchstaben und Ziffern, am günstigsten und schnellsten | `ImageToTextTaskOcrBase`, `ImageToTextTaskMuggle` (synchron) |
| Erkennung mit einem für Sie angepassten Modell | `ImageToTextTaskMuggle` mit `project_name` |
| Unterscheidung von Groß-/Kleinschreibung, nur Ziffern, Rechenaufgaben, begrenzte Länge | `ImageToTextTask`, `ImageToTextTaskM1` (asynchron) |

Die Typen verwenden unterschiedliche Modelle und Routen, daher kann das Ergebnis bei gleichen Bildern abweichen. Testen Sie mehrere Typen und wählen Sie den besten.

## Request-Parameter

| Feld | Typ | Erforderlich | Beschreibung |
| --- | --- | --- | --- |
| `type` | string | Ja | Aufgabentyp; siehe „Aufgabentypen und Preise“ auf dieser Seite |
| `body` | string | Ja | Base64-kodiertes Bild ohne das Präfix `data:image/...;base64,` und ohne Zeilenumbrüche |
| `project_name` | string | Nein | Name eines individuellen Modells, nur von `ImageToTextTaskMuggle` unterstützt. Weglassen, um das allgemeine Modell für Buchstaben und Ziffern zu verwenden. Für ein individuelles Modell wenden Sie sich an den Support (nur ImageToTextTaskMuggle) |
| `phrase` | boolean | Nein | true bedeutet, dass die Antwort mindestens ein Leerzeichen enthält (nur ImageToTextTask, ImageToTextTaskM1) |
| `case` | boolean | Nein | true bedeutet, dass die Antwort zwischen Groß- und Kleinschreibung unterscheidet (nur ImageToTextTask, ImageToTextTaskM1) |
| `numeric` | integer | Nein | 0 keine Vorgabe; 1 nur Ziffern; 2 keine Ziffern (nur ImageToTextTask, ImageToTextTaskM1) |
| `math` | boolean | Nein | true bedeutet, dass das Bild eine Rechenaufgabe ist und die Antwort deren Ergebnis ist (nur ImageToTextTask, ImageToTextTaskM1) |
| `minLength` | integer | Nein | Minimale Länge der Antwort; 0 bedeutet kein Limit (nur ImageToTextTask, ImageToTextTaskM1) |
| `maxLength` | integer | Nein | Maximale Länge der Antwort; 0 bedeutet kein Limit (nur ImageToTextTask, ImageToTextTaskM1) |

`body` ist die Base64-Kodierung der Bilddatei. WebP-Bilder werden automatisch konvertiert.

> **Achtung:** Verwenden Sie im Base64-String weder das Präfix `data:image/...;base64,` noch Zeilenumbrüche.

## Request-Beispiel

POST https://api.yescaptcha.com/createTask

```json
{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "ImageToTextTaskOcrBase",
    "body": "BASE64_IMAGE"
  }
}
```

Vollständiger Code (liest `captcha.png` aus dem aktuellen Verzeichnis):

**curl**

```bash
# Replace BASE64_IMAGE with the Base64-encoded image
curl -s https://api.yescaptcha.com/createTask \
  -H 'Content-Type: application/json' \
  -d '{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "ImageToTextTaskOcrBase",
    "body": "BASE64_IMAGE"
  }
}'
```

**Python**

solve.py

```python
import os
import base64

import requests

API = "https://api.yescaptcha.com"
CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"]  # Read the clientKey from an environment variable

def call(method, payload):
    r = requests.post(f"{API}/{method}", json={"clientKey": CLIENT_KEY, **payload}, timeout=30)
    data = r.json()
    if data.get("errorId"):
        raise RuntimeError(f"{data.get('errorCode')}: {data.get('errorDescription')}")
    return data

def solve(task):
    return call("createTask", {"task": task})["solution"]

# Base64-encode the image (no data: prefix)
with open("captcha.png", "rb") as f:
    image_b64 = base64.b64encode(f.read()).decode()

solution = solve({
    "type": "ImageToTextTaskOcrBase",
    "body": image_b64,
})
print(solution["text"])
```

**Node.js**

solve.mjs

```js
import { readFileSync } from 'node:fs';

const API = 'https://api.yescaptcha.com';
const CLIENT_KEY = process.env.YESCAPTCHA_CLIENT_KEY; // Read the clientKey from an environment variable

async function call(method, payload) {
  const res = await fetch(`${API}/${method}`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ clientKey: CLIENT_KEY, ...payload }),
  });
  const data = await res.json();
  if (data.errorId) throw new Error(`${data.errorCode}: ${data.errorDescription}`);
  return data;
}

async function solve(task) {
  const { solution } = await call('createTask', { task });
  return solution;
}

// Base64-encode the image (no data: prefix)
const imageB64 = readFileSync('captcha.png').toString('base64');

const solution = await solve({
  type: "ImageToTextTaskOcrBase",
  body: imageB64,
});
console.log(solution.text);
```

Asynchrone Aufgabe mit Vorgaben:

POST https://api.yescaptcha.com/createTask

```json
{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "ImageToTextTask",
    "body": "BASE64_IMAGE",
    "case": true,
    "numeric": 0,
    "minLength": 4,
    "maxLength": 6
  }
}
```

## Ergebnis

Synchrone Typen liefern das Ergebnis direkt in `createTask`:

```json
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "text": "LMResm"
  },
  "taskId": "2376919c-1863-11ec-a012-94e6f7355a0b"
}
```

Asynchrone Typen (`ImageToTextTask`, `ImageToTextTaskM1`) liefern zunächst eine `taskId`. Fragen Sie danach alle 5 Sekunden mit `getTaskResult` ab (Polling); bei Abschluss hat `solution` dasselbe Format.

| Feld | Typ | Beschreibung |
| --- | --- | --- |
| `text` | string | Der erkannte Text |

## Eigene Modelle

Das allgemeine Modell funktioniert bei allen Captchas mit Buchstaben und Ziffern, ist aber etwas weniger genau als ein speziell trainiertes Modell. Wenn die Bilder, die Sie erkennen möchten, immer im gleichen Stil gehalten sind, können Sie den [Support kontaktieren](https://docs.yescaptcha.com/de/help/contact.md), um ein eigenes Modell zu erhalten, und es anschließend mit `ImageToTextTaskMuggle` und `project_name` auswählen.

## FAQ

### Wird bei falscher Erkennung ein Punkteabzug berechnet?

Bei synchronen Typen werden Punkte abgezogen, sobald ein Ergebnis zurückgegeben wird, auch wenn es falsch ist. Vergleichen Sie andere Typen oder lassen Sie ein eigenes Modell erstellen.

### Ich erhalte `ERROR_ZERO_CAPTCHA_FILESIZE` oder `ERROR_PARSE_IMAGE_FAIL`

Das Base64 des Bildes ist unvollständig oder enthält das Präfix `data:` bzw. Zeilenumbrüche. Prüfen Sie die Kodierung, siehe [Fehlercodes](https://docs.yescaptcha.com/de/api/errors.md).

## Verwandte Beispiele

-   [Schnellstart](https://docs.yescaptcha.com/de/getting-started/quickstart.md): erster Request mit `ImageToTextTaskOcrBase`
-   [Python-Beispiele](https://docs.yescaptcha.com/de/samples/python.md)
