# Reconnaissance de texte dans une image

> Lisez les lettres et les chiffres d'une image avec YesCaptcha. ImageToTextTaskOcrBase et ImageToTextTaskMuggle renvoient le résultat de façon synchrone ; ImageToTextTask et ImageToTextTaskM1 sont asynchrones et gèrent la casse, les chiffres seuls, les opérations et la longueur ; modèles personnalisés disponibles.

Source: https://docs.yescaptcha.com/fr/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/

Envoyez l’image d’un captcha texte en Base64 et récupérez les lettres et chiffres qu’elle contient (`solution.text`). `ImageToTextTaskOcrBase` coûte 2 points (≈ $0.30 / 1k) par image et fonctionne de façon synchrone : une seule requête `createTask` renvoie le résultat. Si vous devez préciser la casse, des chiffres uniquement, une opération à calculer, etc., utilisez le type asynchrone `ImageToTextTask`.

- POST `https://api.yescaptcha.com/createTask` (Endpoint mondial)
- POST `https://cn.yescaptcha.com/createTask` (Endpoint Chine)

Le corps de la requête est du JSON, authentifié avec votre `clientKey`.

## Types et prix

| Type de tâche | Prix | Mode | Remarques |
| --- | --- | --- | --- |
| `ImageToTextTaskOcrBase` | $0.30 / 1k; 2 points/tâche · ¥2 / 1k | Synchrone |  |
| `ImageToTextTaskMuggle` | $0.30 / 1k; 2 points/tâche · ¥2 / 1k | Synchrone | Ne prend pas en charge les options case/numeric ; utilisez project\_name pour choisir un modèle personnalisé |
| `ImageToTextTask` | $0.60 / 1k; 4 points/tâche · ¥4 / 1k | Asynchrone |  |
| `ImageToTextTaskM1` | $2.25 / 1k; 15 points/tâche · ¥15 / 1k | Asynchrone |  |

Les prix en dollars américains sont des estimations avec 1 USD ≈ ¥6.67 ; les tâches sont facturées en points.

| Besoin | Type à utiliser |
| --- | --- |
| Captchas alphanumériques ordinaires, le moins cher et le plus rapide | `ImageToTextTaskOcrBase`, `ImageToTextTaskMuggle` (synchrones) |
| Un modèle personnalisé pour vous | `ImageToTextTaskMuggle` avec `project_name` |
| Respect de la casse, chiffres uniquement, calcul d’une opération, longueur limitée | `ImageToTextTask`, `ImageToTextTaskM1` (asynchrones) |

Les modèles et les routes diffèrent selon les types : le résultat peut varier pour un même type d’image. Testez-les et choisissez le meilleur.

## Paramètres de la requête

| Champ | Type | Obligatoire | Description |
| --- | --- | --- | --- |
| `type` | string | Oui | Type de tâche ; voir « Types de tâches et prix » sur cette page |
| `body` | string | Oui | Image encodée en Base64, sans le préfixe `data:image/...;base64,` et sans saut de ligne |
| `project_name` | string | Non | Nom d'un modèle personnalisé, pris en charge uniquement par `ImageToTextTaskMuggle`. Omettez-le pour utiliser le modèle alphanumérique général. Contactez le support pour obtenir un modèle personnalisé (ImageToTextTaskMuggle uniquement) |
| `phrase` | boolean | Non | true signifie que la réponse contient au moins un espace (ImageToTextTask, ImageToTextTaskM1 uniquement) |
| `case` | boolean | Non | true signifie que la réponse est sensible à la casse (ImageToTextTask, ImageToTextTaskM1 uniquement) |
| `numeric` | integer | Non | 0 aucune contrainte ; 1 chiffres uniquement ; 2 sans chiffres (ImageToTextTask, ImageToTextTaskM1 uniquement) |
| `math` | boolean | Non | true signifie que l'image est une expression mathématique et que la réponse en est le résultat (ImageToTextTask, ImageToTextTaskM1 uniquement) |
| `minLength` | integer | Non | Longueur minimale de la réponse ; 0 signifie aucune limite (ImageToTextTask, ImageToTextTaskM1 uniquement) |
| `maxLength` | integer | Non | Longueur maximale de la réponse ; 0 signifie aucune limite (ImageToTextTask, ImageToTextTaskM1 uniquement) |

`body` est l’encodage Base64 du fichier image. Les images WebP sont converties automatiquement.

> **Attention:** N’incluez ni le préfixe `data:image/...;base64,` ni de saut de ligne dans le Base64.

## Exemple de requête

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

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

Code complet (lit `captcha.png` dans le répertoire courant) :

**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);
```

Tâche asynchrone avec options :

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
  }
}
```

## Résultat

Les types synchrones renvoient le résultat directement dans `createTask` :

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

Les types asynchrones (`ImageToTextTask`, `ImageToTextTaskM1`) renvoient d’abord un `taskId`. Interrogez ensuite `getTaskResult` toutes les 5 secondes ; à la fin de la tâche, `solution` a le même format.

| Champ | Type | Description |
| --- | --- | --- |
| `text` | string | Le texte reconnu |

## Modèle personnalisé

Le modèle générique fonctionne sur tous les captchas alphanumériques, mais sa précision est légèrement inférieure à celle d’un modèle entraîné pour un style précis. Si vos images ont toujours le même style, [contactez le support](https://docs.yescaptcha.com/fr/help/contact.md) pour obtenir un modèle personnalisé, puis sélectionnez-le avec `ImageToTextTaskMuggle` et `project_name`.

## Questions fréquentes

### Les points sont-ils débités si le résultat est faux ?

Pour les types synchrones, les points sont débités dès qu’un résultat est renvoyé, même s’il est faux. Comparez avec un autre type ou demandez un modèle personnalisé.

### J’obtiens `ERROR_ZERO_CAPTCHA_FILESIZE` ou `ERROR_PARSE_IMAGE_FAIL`

Le Base64 de l’image est incomplet, ou il contient le préfixe `data:` ou des sauts de ligne. Vérifiez l’encodage ; voir [Codes d’erreur](https://docs.yescaptcha.com/fr/api/errors.md).

## Voir aussi

-   [Démarrage rapide](https://docs.yescaptcha.com/fr/getting-started/quickstart.md) : première requête avec `ImageToTextTaskOcrBase`
-   [Exemples Python](https://docs.yescaptcha.com/fr/samples/python.md)
