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

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

Denna artikel kommer att introducera en Recaptcha2 bildigenkänning API integration instruktion, som kan identifiera innehållet som användaren anger och Recaptcha2 verifieringsbilden, och slutligen returnera koordinaterna för de små bilder som behöver klickas på för att slutföra verifieringen.

## Ansökningsprocess

För att använda Recaptcha2 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 kan spara för framtida bruk.

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

Om du inte har loggat in eller registrerat dig, kommer du automatiskt att omdirigeras till inloggningssidan för 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änna saldot i [konsolen](https://platform.acedata.cloud/console/coin).

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

## Grundläggande användning

Först, låt oss förstå den grundläggande användningen. Vi behöver fånga Recaptcha2 verifieringsbilden från webbplatsen, här är exempelwebbplatsens URL: `https://www.google.com/recaptcha/api2/demo`, den specifika sidan visas nedan:

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

Vi behöver klicka på verifieringsrutan för att få verifieringsbilden, i bilden ovan pekar den gula pilen på en text, och detta innehåll är värdet för `question` nedan. Först behöver vi enkelt skicka ett `image`-fält, vilket är den specifika Recaptcha2 verifieringsbilden, bilden är den som den röda pilen pekar på i bilden ovan, och den måste skalas till standardstorlek (100x100, 300x300, 450x450), så att tjänsten kan avgöra bildtypen. Bildkomprimeringen måste du göra själv, och vi rekommenderar en [komprimeringswebbplats](https://www.photopea.com/), där du kan komprimera bildens storlek och dimensioner, resultatet efter komprimering visas nedan:

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

Du behöver också ange den identifieringsinnehållsparameter som är relaterad till verifieringsbilden `question`, vi har bara tillhandahållit följande innehållstabell som referens:

### Kinesisk innehållstabell

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

### Engelsk innehållstabell

```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 är också detsamma
  "/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"
}
```

Från ovanstående kan vi se att vi sätter parametern `question` till brandpostens motsvarande `/m/01pns0`, det specifika innehållet visas nedan:

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

Här kan vi se att vi har ställt in begärningshuvuden, inklusive:

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

Dessutom ställdes begärningskroppen in, inklusive:

* `image`: Base64-kodad verifieringsbild.
* `question`: Fråge-ID, vänligen kontrollera tabellen, som börjar med /m/.

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

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

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

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

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

* `solution`, resultatet av verifieringen efter att Recaptcha2 verifieringsbilden har behandlats.
  * `size`, storleken på Recaptcha2 verifieringsbilden.
  * `label`, det innehåll som identifierades av Recaptcha2 verifieringsbilden.
  * `confidences`, förtroendet för identifieringsområdet av Recaptcha2 verifieringsbilden, området börjar från 0.
  * `objects`, områden som uppfyller identifieringsinnehållet efter identifiering av Recaptcha2 verifieringsbilden, området börjar från 0.
  * `type`, typen av uppgift för Recaptcha2 verifieringsbilden, om det finns flera områden är det `multi`.

Vi kan se att vi har fått verifieringsresultatet för Recaptcha2 verifieringsbilden, vi börjar med att dela upp verifieringsbilden i områden, som visas i bilden nedan:

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

Vi kan se att områdena börjar från 0, från resultatet `objects` fick vi 2,5,7, vi behöver bara simulera klick på dessa tre områden för att klara verifieringen.

Om du vill generera motsvarande integrationskod kan du direkt kopiera den som genererats, till exempel CURL-koden nedan:

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

Python integrationskoden ser ut som följer:

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

## Asynkron läge (async)

Som standard är API:et synkront och blockerande: en begäran väntar tills igenkänningsresultatet har behandlats innan det returneras. Om du gör en rotation av flera lösare (multi-solver rotation) och vill "skicka uppgiften och omedelbart få task\_id, först schemalägga andra lösare och senare återkomma för att hämta resultatet", kan du skicka `async: true` i begärningskroppen.

När du skickar `async: true` kommer gränssnittet omedelbart att returnera ett `task_id` utan att blockera väntan:

```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}
{
  "success": true,
  "task_id": "61138bb6-19aa-11ec-a9c8-0242ac110002",
  "trace_id": "2efa9340-b21b-4e26-9e14-4aac95f343ab",
  "status": "processing"
}
```

Använd sedan det `task_id` för att pollera `POST /captcha/tasks` (rekommenderas var 3-5 sekund) för att hämta resultatet:

```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 det att returnera `status: processing`:

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

När bearbetningen är klar kommer det att returnera `status: ready` och igenkänningsresultatet `solution` (fältstrukturen är helt identisk med det synkrona läget):

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

Avgiftsbeskrivning: I asynkront läge debiteras inte skapandet av uppgifter och polling "under bearbetning"; **debiteras endast en gång när igenkänningsresultatet har hämtats framgångsrikt** (samma pris som det synkrona läget). Därför kommer avbokning av uppgifter som inte har slutförts under rotationen inte att medföra kostnader. `/captcha/tasks` är gemensamt för alla captcha-gränssnitt (token och recognition-serien), och du kan pollera med samma `task_id`.

## Felhantering

När du anropar API:et, om du stöter på ett fel, kommer API:et att returnera motsvarande felkod och information. Till exempel:

* `400 token_mismatched`: Bad request, möjligtvis på grund av saknade eller ogiltiga parametrar.
* `400 api_not_implemented`: Bad request, möjligtvis på grund av saknade eller ogiltiga parametrar.
* `401 invalid_token`: Obehörig, 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": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## Slutsats

Genom detta dokument har du fått en förståelse för hur du använder Recaptcha2 bildigenkännings-API:et för att låta användare ange det som ska kännas igen och Recaptcha2 captcha-bilden, och slutligen returnera koordinaterna för de små bilder 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 detta API. Om du har några frågor, tveka inte att kontakta vårt tekniska supportteam.
