> ## Documentation Index
> Fetch the complete documentation index at: https://docs.acedata.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Recaptcha2 API d'intégration de reconnaissance d'images

> Recaptcha verification code recognition service API guide - Ace Data Cloud

Cet article présentera une méthode d'intégration de l'API de reconnaissance d'images Recaptcha2, qui peut identifier le contenu saisi par l'utilisateur et l'image du captcha Recaptcha2, puis renvoyer les coordonnées des petites images à cliquer pour compléter la vérification.

## Processus de demande

Pour utiliser l'API de reconnaissance d'images Recaptcha2, commencez par obtenir votre token API sur le [tableau de bord Ace Data Cloud](https://platform.acedata.cloud/console/applications) pour le garder en réserve.

![](https://cdn.acedata.cloud/5hmkdg.jpg)

Si vous n'êtes pas encore connecté ou inscrit, vous serez automatiquement redirigé vers la page de connexion pour vous inviter à vous inscrire et à vous connecter, après quoi vous serez automatiquement renvoyé à la page actuelle.

**Un seul token API suffit pour appeler tous les services de la plateforme, il n'est pas nécessaire de demander un token séparé pour chaque service.** La première demande vous donnera un quota gratuit pour une expérience sans frais ; si le quota est insuffisant, vous pouvez recharger le solde général sur le [tableau de bord](https://platform.acedata.cloud/console/coin).

> 📘 Documentation complète : [API de reconnaissance d'images Recaptcha2 →](https://platform.acedata.cloud/documents/captcha-recognition-recaptcha2)

## Utilisation de base

Commençons par comprendre les méthodes d'utilisation de base. Nous devons capturer l'image du captcha Recaptcha2 à partir du site web, l'URL de l'exemple de site est : `https://www.google.com/recaptcha/api2/demo`, la page spécifique est montrée ci-dessous :

<p>
  <img src="https://cdn.acedata.cloud/3mgkjk.png" width="500" className="m-auto" />
</p>

Nous devons cliquer sur la case à cocher du captcha pour que l'image du captcha apparaisse. Dans l'image ci-dessus, la flèche jaune pointe vers un texte, ce texte est la valeur de `question` ci-dessous. Nous devons d'abord transmettre un champ `image`, qui est l'image spécifique du captcha Recaptcha2, cette image est celle pointée par la flèche rouge dans l'image ci-dessus, et elle doit être redimensionnée à la taille standard (100x100, 300x300, 450x450), afin que le service puisse déterminer le type d'image. La compression de l'image doit être effectuée par vos soins, cet article recommande un [site de compression](https://www.photopea.com/), où vous pouvez compresser la taille et les dimensions de l'image, le résultat compressé est montré ci-dessous :

![](https://cdn.acedata.cloud/l7aotl.png)

Il est également nécessaire d'entrer le paramètre de contenu de reconnaissance lié à l'image du captcha `question`, nous avons seulement fourni le tableau de contenu ci-dessous, qui peut servir de référence :

### Tableau de contenu en chinois

```json theme={null}
{
  "/m/0pg52": "出租车",
  "/m/01bjv": "巴士",
  "/m/02yvhj": "校车",
  "/m/04_sv": "摩托车",
  "/m/013xlm": "拖拉机",
  "/m/01jk_4": "烟囱",
  "/m/014xcs": "人行横道",
  "/m/015qff": "红绿灯",
  "/m/0199g": "自行车",
  "/m/015qbp": "停车计价表",
  "/m/0k4j": "汽车",
  "/m/015kr": "桥",
  "/m/019jd": "船",
  "/m/0cdl1": "棕榈树",
  "/m/09d_r": "山",
  "/m/01pns0": "消防栓",
  "/m/01lynh": "楼梯"
}
```

### Tableau de contenu en anglais

```json theme={null}
{
  "/m/0pg52": "taxis",
  "/m/01bjv": "bus",
  "/m/02yvhj": "school bus",
  "/m/04_sv": "motorcycles",
  "/m/013xlm": "tractors",
  "/m/01jk_4": "chimneys",
  "/m/014xcs": "crosswalks", // pedestrian crossings est également valable
  "/m/015qff": "traffic lights",
  "/m/0199g": "bicycles",
  "/m/015qbp": "parking meters",
  "/m/0k4j": "cars",
  "/m/015kr": "bridges",
  "/m/019jd": "boats",
  "/m/0cdl1": "palm trees",
  "/m/09d_r": "mountains or hills",
  "/m/01pns0": "fire hydrant",
  "/m/01lynh": "stairs"
}
```

D'après ce qui précède, nous définissons le paramètre `question` comme correspondant à l'hydrant, soit `/m/01pns0`, le contenu spécifique est comme suit :

<p>
  <img src="https://cdn.acedata.cloud/d53oc3.png" width="500" className="m-auto" />
</p>

Nous pouvons voir ici que nous avons défini les en-têtes de requête, y compris :

* `accept` : le format de réponse souhaité, ici rempli comme `application/json`, c'est-à-dire au format JSON.
* `authorization` : la clé pour appeler l'API, que vous pouvez sélectionner directement après la demande.

De plus, nous avons défini le corps de la requête, y compris :

* `image` : l'image du captcha encodée en Base64.
* `question` : l'ID de la question, veuillez consulter le tableau, commençant par /m/.

Après sélection, vous pouvez voir que le code correspondant a également été généré à droite, comme montré ci-dessous :

<p>
  <img src="https://cdn.acedata.cloud/bsp8g9.png" width="500" className="m-auto" />
</p>

Cliquez sur le bouton « Essayer » pour effectuer le test, comme montré ci-dessus, nous avons obtenu le résultat suivant :

```json theme={null}
{
  "solution": {
    "size": 300,
    "label": "/m/01pns0",
    "confidences": [
      0,
      0.0007,
      1,
      0.0003,
      0.0046,
      1,
      0,
      1,
      0
    ],
    "objects": [
      2,
      5,
      7
    ],
    "type": "multi"
  }
}
```

Le résultat de retour contient plusieurs champs, décrits comme suit :

* `solution`, le résultat de vérification après le traitement de l'image du captcha Recaptcha2.
  * `size`, la taille de l'image du captcha Recaptcha2.
  * `label`, le contenu reconnu de l'image du captcha Recaptcha2.
  * `confidences`, le niveau de confiance des zones de reconnaissance de l'image du captcha Recaptcha2, les zones commencent à 0.
  * `objects`, les zones de l'image du captcha Recaptcha2 qui satisfont le contenu reconnu, les zones commencent à 0.
  * `type`, le type de tâche de l'image du captcha Recaptcha2, lorsque plusieurs zones sont présentes, c'est `multi`.

Nous pouvons voir que nous avons obtenu le résultat de vérification du traitement de l'image du captcha Recaptcha2, nous avons d'abord divisé l'image du captcha en zones, comme montré ci-dessous :

<p>
  <img src="https://cdn.acedata.cloud/2d6qhx.png" width="500" className="m-auto" />
</p>

Nous pouvons voir que les zones commencent toutes à 0, et à partir du résultat `objects`, nous avons obtenu 2, 5, 7, nous n'avons qu'à simuler un clic sur ces trois zones du captcha pour passer la vérification.

De plus, si vous souhaitez générer le code d'intégration correspondant, vous pouvez le copier directement, par exemple, le code CURL est comme suit :

```shell theme={null}
curl -X POST 'https://api.acedata.cloud/captcha/recognition/recaptcha2' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "question": "/m/01pns0",
  "image": "iVBORw0KGgoAAAANSUhEUgAAASoAAAEsCAIAAAD7AWllAAAAAX..."
}'
```

Le code d'intégration en Python est comme suit :

```python theme={null}
import requests

url = "https://api.acedata.cloud/captcha/recognition/recaptcha2"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "question": "/m/01pns0",
    "image": "iVBORw0KGgoAAAANSUhEUgAAASoAAAEsCAIAAAD7AWllAAAAAX..."
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

## Mode asynchrone (async)

Par défaut, l'API est synchrone et bloquante : une demande attendra jusqu'à ce que le traitement du résultat de reconnaissance soit terminé avant de renvoyer. Si vous effectuez une rotation de plusieurs solveurs (multi-solver rotation) et souhaitez « soumettre la tâche et obtenir immédiatement le task\_id, puis planifier d'autres solveurs, et revenir plus tard pour obtenir le résultat », vous pouvez passer `async: true` dans le corps de la demande.

En passant `async: true`, l'interface renverra immédiatement un `task_id` sans bloquer l'attente :

```shell theme={null}
curl -X POST 'https://api.acedata.cloud/captcha/recognition/recaptcha2' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "question": "/m/01pns0",
  "image": "iVBORw0KGgoAAAANSUhEUgAAASoAAAEsCAIAAAD7AWllAAAAAX...",
  "async": true
}'
```

```json theme={null}
{
  "task_id": "61138bb6-19aa-11ec-a9c8-0242ac110002",
  "trace_id": "2efa9340-b21b-4e26-9e14-4aac95f343ab"
}
```

Ensuite, utilisez ce `task_id` pour interroger `POST /captcha/tasks` (il est conseillé de le faire toutes les 3 à 5 secondes) pour obtenir le résultat :

```shell theme={null}
curl -X POST 'https://api.acedata.cloud/captcha/tasks' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "task_id": "61138bb6-19aa-11ec-a9c8-0242ac110002"
}'
```

En cours de traitement, cela renverra `status: processing` :

```json theme={null}
{ "success": true, "task_id": "61138bb6-19aa-11ec-a9c8-0242ac110002", "status": "processing" }
```

Une fois le traitement terminé, cela renverra `status: ready` et le résultat de reconnaissance `solution` (la structure des champs est complètement identique à celle du mode synchrone) :

```json theme={null}
{
  "success": true,
  "task_id": "61138bb6-19aa-11ec-a9c8-0242ac110002",
  "status": "ready",
  "solution": {
    "size": 300,
    "label": "/m/01pns0",
    "objects": [2, 5, 7],
    "type": "multi"
  }
}
```

Explication de la facturation : en mode asynchrone, la création de tâches et l'interrogation « en cours de traitement » ne sont pas facturées ; **seulement lors de la récupération réussie du résultat de reconnaissance, une facturation est effectuée** (au même prix que le mode synchrone). Par conséquent, annuler des tâches non terminées lors de la rotation ne générera pas de frais. `/captcha/tasks` est commun à toutes les interfaces de captcha (token et série de reconnaissance), vous pouvez interroger avec le même `task_id`.

## Gestion des erreurs

Lors de l'appel de l'API, si une erreur se produit, l'API renverra le code d'erreur et les informations correspondantes. Par exemple :

* `400 token_mismatched` : Mauvaise demande, probablement en raison de paramètres manquants ou invalides.
* `400 api_not_implemented` : Mauvaise demande, probablement en raison de paramètres manquants ou invalides.
* `401 invalid_token` : Non autorisé, token d'autorisation invalide ou manquant.
* `429 too_many_requests` : Trop de demandes, vous avez dépassé la limite de taux.
* `500 api_error` : Erreur interne du serveur, quelque chose s'est mal passé sur le serveur.

### Exemple de réponse d'erreur

```json theme={null}
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## Conclusion

Grâce à ce document, vous avez compris comment utiliser l'API de reconnaissance d'image Recaptcha2 pour permettre aux utilisateurs d'entrer le contenu reconnu et l'image du captcha Recaptcha2, puis de renvoyer les coordonnées des petites images à cliquer pour compléter la vérification. Nous espérons que ce document vous aidera à mieux intégrer et utiliser cette API. Si vous avez des questions, n'hésitez pas à contacter notre équipe de support technique.
