# Nhận dạng hình ảnh hCaptcha

> Dùng YesCaptcha để nhận dạng câu hỏi hình ảnh của hCaptcha (HCaptchaClassification): chọn trong lưới 3×3, nhấp vào vị trí chỉ định, kéo đến vị trí chỉ định, câu hỏi động; trả kết quả đồng bộ, không trừ điểm khi không nhận ra mục tiêu.

Source: https://docs.yescaptcha.com/vi/tasks/hcaptcha-classification/ · 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/hcaptcha-classification/

`HCaptchaClassification` nhận dạng các câu hỏi hình ảnh mà hCaptcha hiển thị: bạn gửi câu hỏi và hình ảnh, kết quả trả về cho biết nên chọn những ảnh nào, nhấp vào vị trí nào hoặc kéo từ đâu đến đâu, chương trình của bạn sẽ thao tác trong trình duyệt. Loại này **không trả về token**. Kết quả trả về đồng bộ, mỗi lần 8 điểm (≈ $1.20 / 1k), không trừ điểm khi không nhận ra mục tiêu (kết quả rỗng).

> **Mẹo:** Nếu không muốn tự viết logic nhấp chuột, bạn có thể dùng trực tiếp [tiện ích trình duyệt](https://docs.yescaptcha.com/vi/extension.md), tiện ích hỗ trợ tất cả các dạng câu hỏi này. Nếu cần token thay vì vị trí nhấp, hãy dùng [hCaptcha](https://docs.yescaptcha.com/vi/tasks/hcaptcha.md).

- POST `https://api.yescaptcha.com/createTask` (Endpoint quốc tế)
- POST `https://cn.yescaptcha.com/createTask` (Endpoint Trung Quốc)

## Loại tác vụ và giá

| Loại tác vụ | Giá | Cách trả kết quả | Ghi chú |
| --- | --- | --- | --- |
| `HCaptchaClassification` | $1.20 / 1k; 8 điểm/tác vụ · ¥8 / 1k | Đồng bộ | Không trừ điểm khi không tìm thấy mục tiêu |

Giá bằng đô la Mỹ chỉ là ước tính theo US$1 ≈ ¥6.67; tác vụ được trừ điểm.

## Tham số yêu cầu

| Trường | Kiểu | Bắt buộc | Mô tả |
| --- | --- | --- | --- |
| `type` | string | Có | Loại tác vụ; xem "Loại tác vụ và giá" trên trang này |
| `queries` | array | Có | Danh sách ảnh câu hỏi được mã hóa Base64, theo thứ tự trên trang (lưới 3×3 có 9 ảnh nhỏ) |
| `question` | string | Không | Toàn bộ câu hỏi như hiển thị trên trang (khuyến nghị tiếng Trung giản thể hoặc tiếng Anh), ví dụ `Please click each image containing a bicycle`. Gửi ít nhất một trong `question` và `anchors`; khuyến nghị gửi cả hai |
| `anchors` | array | Không | Danh sách ảnh mẫu (ảnh nhỏ hiển thị cạnh câu hỏi) được mã hóa Base64; bắt buộc với các câu hỏi có ảnh mẫu |

-   `question` lấy nguyên câu hỏi hiển thị trên trang, không cần dịch; nên chuyển hCaptcha sang tiếng Trung giản thể hoặc tiếng Anh. Các câu hỏi mới thường được hỗ trợ rất nhanh, các loại hoàn toàn mới được hỗ trợ trong vòng 3 ngày làm việc.

> **Chú ý:** Nếu góc trên bên phải của câu hỏi có ảnh mẫu nhỏ, bạn phải đưa ảnh đó vào `anchors`. Những câu hỏi bắt buộc phải xem ảnh mẫu mới trả lời được sẽ không nhận dạng được nếu thiếu `anchors`.

## Chọn trong lưới 3×3

Câu hỏi có dạng “Hãy nhấp vào mọi hình ảnh chứa …”, bên dưới có 9 ảnh nhỏ. `queries` chứa Base64 của 9 ảnh nhỏ theo thứ tự:

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

```json
{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "HCaptchaClassification",
    "question": "Please click each image containing a bicycle",
    "queries": ["BASE64_IMAGE_1", "BASE64_IMAGE_2"]
  }
}
```

Kết quả trả về:

```json
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "objects": [true, false, false, true, true, false, true, true, false],
    "top_k": [0, 3, 4, 6, 7],
    "confidences": [1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0]
  }
}
```

`objects` và `top_k` mang cùng ý nghĩa: `objects` cho biết từng ảnh có phải mục tiêu hay không, `top_k` là thứ tự của các ảnh mục tiêu (bắt đầu từ 0). Chỉ cần nhấp vào các ảnh đó.

## Nhấp vào vị trí chỉ định

Câu hỏi có dạng “Hãy nhấp vào …”, bên dưới là một ảnh lớn, bạn cần nhấp vào một (hoặc vài) vị trí trên ảnh.

1.  `question` lấy từ câu hỏi trên trang; nếu có ảnh mẫu nhỏ thì đưa vào `anchors`.
2.  `queries` chứa một ảnh: tốt nhất dùng ảnh gốc xuất trực tiếp từ canvas (nên chuyển sang JPG); nếu chỉ chụp màn hình được thì chụp vùng ảnh lớn trong khung đỏ bên dưới, không thừa không thiếu.
3.  `box` trả về là các tọa độ cần nhấp, lần lượt là x1, y1, x2, y2…, lấy góc trên bên trái của ảnh đã tải lên làm gốc.
4.  Khi kích thước ảnh tải lên khác với kích thước hiển thị trên trang thì phải quy đổi: x trên trang = x trả về × chiều rộng hiển thị ÷ chiều rộng ảnh tải lên (y tương tự). Ví dụ trả về x = 769, canvas hiển thị rộng 350, ảnh tải lên rộng 1000, thì trên trang cần nhấp 769 × 350 ÷ 1000 ≈ 269.

![Phạm vi chụp cho câu hỏi dạng nhấp: chữ của câu hỏi là question, ba ảnh mẫu nhỏ là anchors, ảnh lớn bên dưới là queries](https://docs.yescaptcha.com/_astro/hcaptcha-click-areas.DCBFUFPf_Z123RnJ.webp)

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

```json
{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "HCaptchaClassification",
    "question": "Please click on the entity present in the sample image.",
    "anchors": ["BASE64_ANCHOR_1", "BASE64_ANCHOR_2", "BASE64_ANCHOR_3"],
    "queries": ["BASE64_OF_THE_BIG_IMAGE"]
  }
}
```

Kết quả trả về:

```json
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "box": ["221", "213"]
  }
}
```

Khi cần nhấp nhiều mục tiêu, `box` chứa lần lượt nhiều cặp tọa độ: `["221", "213", "340", "118", ...]`.

## Kéo đến vị trí chỉ định

Câu hỏi có dạng “Kéo … đến …”, bạn cần kéo mảnh nhỏ bên phải đến vị trí tương ứng trong ảnh.

1.  `question` lấy từ câu hỏi trên trang.
2.  Chụp một ảnh đưa vào `queries`, trong ảnh phải có **đồng thời** mảnh cần kéo và vị trí đích, mỗi cạnh của ảnh không nhỏ hơn 260 pixel.
3.  Mỗi phần tử trong `box` trả về là một lần kéo: `start` là vị trí của mảnh, `end` là vị trí cần kéo đến. Nếu có nhiều mảnh thì kéo lần lượt từng mảnh.

```json
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "type": "drag",
    "box": [
      {
        "start": [644, 218],
        "end": [239, 315]
      }
    ]
  }
}
```

![Minh họa kết quả nhận dạng câu hỏi kéo: Start là mảnh cần kéo, End là vị trí đích](https://docs.yescaptcha.com/_astro/hcaptcha-drag-result.vEj4iyUz_1Ou9zz.webp)

Nếu bạn lấy được dữ liệu giao thức (ảnh của mảnh, tọa độ của mảnh và ảnh nền lớn) thay vì ảnh chụp màn hình, trước hết hãy ghép các mảnh vào ảnh lớn theo tọa độ, tạo ra ảnh giống với ảnh chụp màn hình của trang rồi mới gửi.

## Câu hỏi động

Khi ảnh của câu hỏi là ảnh động, hãy đưa Base64 của ảnh động (GIF hoặc định dạng tương tự) vào `queries`. Nên dùng ảnh động dài ít nhất 3 giây, tốt nhất 5 đến 6 giây, tốc độ khung hình khoảng 12 FPS.

## Báo cáo và hoàn điểm

Nếu sau khi nhấp mà xác minh thất bại, bạn có thể báo cáo bằng [report](https://docs.yescaptcha.com/vi/api/report.md) trong vòng 1 giờ, khoảng 24 giờ sau sẽ quyết toán hoàn điểm, quy tắc xem tại [Tính phí và hoàn điểm](https://docs.yescaptcha.com/vi/getting-started/billing.md).

## Hướng dẫn liên quan

-   [Nhận dạng hình ảnh hCaptcha và mô phỏng nhấp chuột (Selenium)](https://docs.yescaptcha.com/vi/guides/hcaptcha-click-selenium.md)
