> ## 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.

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

> hCaptcha 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 hCaptcha, qui peut identifier le contenu saisi par l'utilisateur et l'image du captcha hCaptcha, puis renvoyer les coordonnées de la petite image à cliquer pour compléter la vérification.

## Processus de demande

Pour utiliser l'API de reconnaissance d'images hCaptcha, commencez par obtenir votre jeton API sur le [tableau de bord Ace Data Cloud](https://platform.acedata.cloud/console/applications) pour le conserver 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 jeton API suffit pour appeler tous les services de la plateforme, sans avoir besoin de demander un jeton 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 dans le [tableau de bord](https://platform.acedata.cloud/console/coin).

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

## Utilisation de base

Tout d'abord, comprenons la méthode d'utilisation de base, qui consiste à entrer l'image du captcha hCaptcha à traiter pour obtenir le résultat traité. Vous devez d'abord transmettre un champ `queries`, qui est l'image du captcha hCaptcha spécifique. Nous devons capturer cette image de captcha sur un site Web avec captcha hCaptcha, le lien du site d'exemple est : `https://democaptcha.com/demo-form-eng/hcaptcha.html`, cliquez sur la case à cocher pour afficher l'image complète du captcha, comme illustré ci-dessous :

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

Le champ `queries` est la capture d'écran de l'image du captcha mentionnée ci-dessus, la taille de l'image ne doit pas dépasser 100 Ko. Vous devez également capturer la zone indiquée par la flèche rouge sur l'image ci-dessus, et vous devez compresser la taille de l'image vous-même et la convertir en code Base64, comme illustré ci-dessous :

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

Vous devez également entrer le paramètre de contenu de reconnaissance lié à l'image du captcha `question`, qui prend en charge la traduction en chinois et en anglais. Vous pouvez directement transmettre le contenu de reconnaissance pertinent. D'après le contenu exécuté par la flèche jaune dans l'image du site Web ci-dessus, le `question` à entrer devrait être `Please click on the UNIQUE object among the others.`. Le contenu spécifique est comme suit :

<p>
  <img src="https://cdn.acedata.cloud/empncr.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 avec `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 :

* `queries` : liste des images du captcha encodées en Base64.
* `question` : paramètre de contenu de reconnaissance lié à l'image du captcha, prenant en charge l'entrée directe en chinois et en anglais.

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

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

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

```json theme={null}
{
  "solution": {
    "label": "Please click on the UNIQUE object among the others",
    "box": [
      "360",
      "276"
    ],
    "confidences": 0.6354503631591797
  }
}
```

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 hCaptcha.
  * `label`, le contenu reconnu de l'image du captcha hCaptcha.
  * `box`, les informations de position du résultat de reconnaissance de l'image du captcha hCaptcha, qui sont constituées des informations de coordonnées de l'image.
  * `confidences`, le niveau de confiance de la reconnaissance du contenu de l'image du captcha hCaptcha.

Nous pouvons voir que nous avons obtenu le résultat de vérification du traitement de l'image du captcha hCaptcha. Nous devons simplement simuler un clic sur la zone correspondant aux coordonnées de position `box` dans le résultat pour passer la vérification.

Nous allons maintenant expliquer comment cliquer sur la base des informations de position `box` du résultat. Tout d'abord, nous établissons un système de coordonnées rectangulaires pour l'image du captcha téléchargée, où l'origine centrale est dans le coin inférieur gauche de l'image, 360 correspond à l'ordonnée et 276 à l'abscisse. Nous devons simplement simuler un clic sur les coordonnées correspondantes du captcha, comme illustré ci-dessous :

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

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/hcaptcha' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "question": "Please click on the UNIQUE object among the others.",
  "queries": ["iVBORw0KGgoAAAANSU.....eY+85KVlzKHav28uq/WLVhL2kHUlFMKUcZbL31S8bpd0pEPKxNllXAE2wgu3uEfj+BfAzOGelsQNFAAAAAElFTkSuQmCC"]
}'
```

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

```python theme={null}
import requests

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

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

payload = {
    "question": "Please click on the UNIQUE object among the others.",
    "queries": ["iVBORw0KGgoAAAANSU.....eY+85KVlzKHav28uq/WLVhL2kHUlFMKUcZbL31S8bpd0pEPKxNllXAE2wgu3uEfj+BfAzOGelsQNFAAAAAElFTkSuQmCC"]
}

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 requête.

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/hcaptcha' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "question": "Please click on the UNIQUE object among the others.",
  "queries": ["iVBORw0KGgoAAAANSU.....eY+85KVlzKHav28uq/WLVhL2kHUlFMKUcZbL31S8bpd0pEPKxNllXAE2wgu3uEfj+BfAzOGelsQNFAAAAAElFTkSuQmCC"],
  "async": true
}'
```

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

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 la 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": {
    "label": "Veuillez cliquer sur l'objet UNIQUE parmi les autres",
    "box": ["360", "276"],
    "confidences": 0.6354503631591797
  }
}
```

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 ; **la facturation n'a lieu qu'une fois que le résultat de la reconnaissance a été obtenu avec succès** (au même prix que le mode synchrone). Par conséquent, annuler les tâches non terminées pendant la rotation ne générera pas de frais. `/captcha/tasks` est commun à toutes les interfaces de captcha (séries token et 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 requête, probablement en raison de paramètres manquants ou invalides.
* `400 api_not_implemented` : Mauvaise requête, probablement en raison de paramètres manquants ou invalides.
* `401 invalid_token` : Non autorisé, jeton d'autorisation invalide ou manquant.
* `429 too_many_requests` : Trop de requêtes, 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": "échec de la récupération"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## Conclusion

Grâce à ce document, vous avez compris comment utiliser l'API de reconnaissance d'images hCaptcha pour permettre aux utilisateurs d'entrer le contenu reconnu et l'image captcha hCaptcha, puis de renvoyer les coordonnées de la petite image à 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.
