> ## 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 bildigenkänning API integration instruktion

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

Denna artikel kommer att introducera en hCaptcha bildigenkänning API integration instruktion, som kan identifiera innehållet genom användarens inmatning och hCaptcha verifieringsbild, och slutligen returnera koordinaterna för den lilla bild som behöver klickas på för att slutföra verifieringen.

## Ansökningsprocess

För att använda hCaptcha bildigenkänning API, börja med att gå till [Ace Data Cloud-konsolen](https://platform.acedata.cloud/console/applications) för att få din API-token, som du ska spara.

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

Om du inte har loggat in eller registrerat dig, kommer du automatiskt att omdirigeras till inloggningssidan som bjuder in dig att registrera dig och logga in, och efter att ha slutfört detta kommer du automatiskt att återvända till den aktuella sidan.

**En API-token kan användas för att anropa alla tjänster på plattformen, det behövs ingen separat ansökan för varje tjänst.** Första ansökan ger en gratis kvot, så att du kan prova gratis; om kvoten är otillräcklig kan du ladda på allmän balans i [konsolen](https://platform.acedata.cloud/console/coin).

> 📘 Fullständig dokumentation: [hCaptcha bildigenkänning API →](https://platform.acedata.cloud/documents/recognition-hcaptcha-integration)

## Grundläggande användning

Först bör du förstå den grundläggande användningen, vilket är att mata in den hCaptcha verifieringsbild som behöver behandlas för att få det bearbetade resultatet. Först behöver du enkelt överföra ett `queries`-fält, vilket är den specifika hCaptcha verifieringsbilden. Vi behöver ta en skärmdump av denna verifieringsbild från en webbplats med hCaptcha-verifiering, exempel på webbplatslänk är: `https://democaptcha.com/demo-form-eng/hcaptcha.html`, klicka på kryssrutan för att visa den fullständiga verifieringsbilden, som visas nedan:

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

Där `queries`-fältet är skärmdumpen av verifieringsbilden ovan, bildstorleken bör inte överstiga 100 kb, och du behöver också ta en skärmdump av området som den röda pilen pekar på, samt komprimera bildstorleken och konvertera den till Base64-kodning, som visas nedan:

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

Samtidigt behöver du ange den identifieringsinnehållsparameter som är relaterad till verifieringsbilden `question`, vilket stöder översättning mellan kinesiska och engelska, och du kan direkt ange relevant identifieringsinnehåll. Från den ovan nämnda webbplatsbilden kan vi se att `question` som ska anges är `Please click on the UNIQUE object among the others.`. Det specifika innehållet är som följer:

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

Vi kan se att vi har ställt in Request Headers, inklusive:

* `accept`: vilken format av svar du vill ta emot, här anges som `application/json`, det vill säga JSON-format.
* `authorization`: nyckeln för att anropa API:et, efter ansökan kan du direkt välja från rullgardinsmenyn.

Dessutom har vi ställt in Request Body, inklusive:

* `queries`: lista över Base64-kodade verifieringsbilder.
* `question`: parameter för identifieringsinnehåll relaterat till verifieringsbilden, stöder direkt inmatning på kinesiska och engelska.

När du har valt kan du se att motsvarande kod också har genererats till höger, som visas i bilden:

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

Klicka på "Try" knappen för att testa, som visas i bilden ovan, här får vi följande resultat:

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

Det returnerade resultatet har flera fält, som beskrivs nedan:

* `solution`, resultatet av hCaptcha verifieringsbildens uppgift efter bearbetning.
  * `label`, innehållet som identifierades av hCaptcha verifieringsbilden.
  * `box`, positionsinformationen för hCaptcha verifieringsbildens identifieringsresultat, som består av bildens koordinatinformation.
  * `confidences`, förtroendet för att identifieringsinnehållet uppfylls efter att hCaptcha verifieringsbilden har identifierats.

Vi kan se att vi har fått verifieringsresultatet för hCaptcha verifieringsbilden, vi behöver bara simulera ett klick på det område som anges av koordinatinformationen i `box` för att klara verifieringen.

Nedan kommer vi att introducera hur man klickar på basen av resultatets `box` positionsinformation. Först är det att skapa ett rätvinkligt koordinatsystem för den uppladdade verifieringsbilden, där centrum är i bildens nedre vänstra hörn, 360 är den horisontella koordinaten och 276 är den vertikala koordinaten. Vi behöver bara simulera ett klick på den motsvarande koordinaten för verifieringsbilden, den specifika bildinformationen visas nedan:

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

Om du vill generera motsvarande integrationskod kan du direkt kopiera den, till exempel CURL-koden är som följer:

```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"]
}'
```

Python integrationskoden är som följer:

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

## Asynkront läge (async)

Som standard är API:et synkront blockerande: en begäran kommer att vänta tills identifieringsresultatet har bearbetats klart innan det returneras. Om du gör en multipel kodare rotation och vill "få task\_id omedelbart efter att ha skickat uppgiften, först schemalägga andra kodare och sedan återkomma för att hämta resultatet", kan du skicka in `async: true` i begärningskroppen.

Genom att skicka in `async: true` kommer gränssnittet omedelbart att returnera ett `task_id`, utan att blockera och vänta:

```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": "bearbetar"
}
```

Sedan använd `task_id` för att pollera `POST /captcha/tasks` (rekommenderas var 3\~5 sekund) för att hämta resultat:

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

Under bearbetning kommer `status: bearbetar` att returneras:

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

När bearbetningen är klar kommer `status: redo` och igenkänningsresultatet `solution` (fältstrukturen är helt identisk med synkron läge):

```json theme={null}
{
  "success": true,
  "task_id": "61138bb6-19aa-11ec-a9c8-0242ac110002",
  "status": "redo",
  "solution": {
    "label": "Vänligen klicka på det UNIKA objektet bland de andra",
    "box": ["360", "276"],
    "confidences": 0.6354503631591797
  }
}
```

Avgiftsbeskrivning: I asynkront läge debiteras varken skapande av uppgifter eller polling "bearbetar"; **debiteras endast en gång när igenkänningsresultatet har hämtats framgångsrikt** (samma pris som i synkront läge). Därför kommer avbokning av ännu inte slutförda uppgifter under rotationen inte att medföra kostnader. `/captcha/tasks` är gemensam för alla captcha-gränssnitt (token och recognition-serier), använd samma `task_id` för polling.

## Felhantering

Vid anrop av API:et, om ett fel uppstår, kommer API:et att returnera motsvarande felkod och information. Till exempel:

* `400 token_mismatched`: Felaktig begäran, möjligtvis på grund av saknade eller ogiltiga parametrar.
* `400 api_not_implemented`: Felaktig begäran, möjligtvis på grund av saknade eller ogiltiga parametrar.
* `401 invalid_token`: Obefogad, ogiltig eller saknad auktoriseringstoken.
* `429 too_many_requests`: För många begärningar, du har överskridit hastighetsgränsen.
* `500 api_error`: Internt serverfel, något gick fel på servern.

### Exempel på felrespons

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

## Slutsats

Genom detta dokument har du fått en förståelse för hur man använder hCaptcha bildigenkänning API för att låta användare ange det igenkända innehållet och hCaptcha captcha-bilden, och slutligen returnera koordinaterna för den lilla bild som behöver klickas på för att slutföra verifieringen. Vi hoppas att detta dokument kan hjälpa dig att bättre integrera och använda API:et. Om du har några frågor, tveka inte att kontakta vårt tekniska supportteam.
