Типы задач
Распознавание текста на изображении
Эта страница переведена с китайской версии машинным переводом и может содержать ошибки. Приоритет имеет китайская версия.
Отправьте изображение с символьной капчей в формате Base64 и получите английские буквы и цифры с изображения (solution.text). ImageToTextTaskOcrBase стоит 2 pts (≈ $0.30 / 1k) за изображение и работает синхронно: результат приходит в ответ на один запрос createTask. Если нужны требования к регистру, только цифры, арифметические выражения и т. п., используйте асинхронный ImageToTextTask.
https://api.yescaptcha.com/createTaskГлобальный endpointhttps://cn.yescaptcha.com/createTaskEndpoint для КитаяТело запроса — JSON, авторизация через clientKey.
Типы и цены
Заголовок раздела «Типы и цены»| Тип задачи | Цена | Режим | Примечания |
|---|---|---|---|
ImageToTextTaskOcrBase | $0.30 / 1k; 2 pts/задача · ¥2 / 1k | Синхронный | |
ImageToTextTaskMuggle | $0.30 / 1k; 2 pts/задача · ¥2 / 1k | Синхронный | Не поддерживает параметры case/numeric; чтобы выбрать пользовательскую модель, используйте project_name |
ImageToTextTask | $0.60 / 1k; 4 pts/задача · ¥4 / 1k | Асинхронный | |
ImageToTextTaskM1 | $2.25 / 1k; 15 pts/задача · ¥15 / 1k | Асинхронный |
Цены в долларах США являются оценочными и рассчитаны по курсу 1 USD ≈ ¥6.67; списание за задачи производится в баллах.
| Что нужно | Что использовать |
|---|---|
| Обычные капчи из букв и цифр, самый дешёвый и быстрый вариант | ImageToTextTaskOcrBase, ImageToTextTaskMuggle (синхронные) |
| Распознавание моделью, обученной специально для вас | ImageToTextTaskMuggle с project_name |
| Учёт регистра, только цифры, вычисление выражения, ограничение длины | ImageToTextTask, ImageToTextTaskM1 (асинхронные) |
У разных типов разные модели и линии, поэтому результат на одинаковых изображениях может отличаться. Протестируйте несколько типов и выберите лучший.
Параметры запроса
Заголовок раздела «Параметры запроса»| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
type | string | Да | Тип задачи; см. «Типы задач и цены» на этой странице |
body | string | Да | Изображение в кодировке Base64 без префикса data:image/...;base64, и без переносов строк |
project_name | string | Нет | Название пользовательской модели, поддерживается только в ImageToTextTaskMuggle. Не передавайте, чтобы использовать общую модель для букв и цифр. Для пользовательской модели обратитесь в поддержку (только ImageToTextTaskMuggle) |
phrase | boolean | Нет | true означает, что ответ содержит хотя бы один пробел (только ImageToTextTask, ImageToTextTaskM1) |
case | boolean | Нет | true означает, что ответ чувствителен к регистру (только ImageToTextTask, ImageToTextTaskM1) |
numeric | integer | Нет | 0 — без требований; 1 — только цифры; 2 — без цифр (только ImageToTextTask, ImageToTextTaskM1) |
math | boolean | Нет | true означает, что на изображении математическое выражение, а ответом будет его результат (только ImageToTextTask, ImageToTextTaskM1) |
minLength | integer | Нет | Минимальная длина ответа; 0 означает без ограничения (только ImageToTextTask, ImageToTextTaskM1) |
maxLength | integer | Нет | Максимальная длина ответа; 0 означает без ограничения (только ImageToTextTask, ImageToTextTaskM1) |
body — это Base64-кодировка файла изображения. Изображения WebP конвертируются автоматически.
Пример запроса
Заголовок раздела «Пример запроса»{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "ImageToTextTaskOcrBase", "body": "BASE64_IMAGE" }}Полный код (читает captcha.png из текущей директории):
# Replace BASE64_IMAGE with the Base64-encoded imagecurl -s https://api.yescaptcha.com/createTask \ -H 'Content-Type: application/json' \ -d '{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "ImageToTextTaskOcrBase", "body": "BASE64_IMAGE" }}'import osimport base64
import requests
API = "https://api.yescaptcha.com"CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"] # Read the clientKey from an environment variable
def call(method, payload): r = requests.post(f"{API}/{method}", json={"clientKey": CLIENT_KEY, **payload}, timeout=30) data = r.json() if data.get("errorId"): raise RuntimeError(f"{data.get('errorCode')}: {data.get('errorDescription')}") return data
def solve(task): return call("createTask", {"task": task})["solution"]
# Base64-encode the image (no data: prefix)with open("captcha.png", "rb") as f: image_b64 = base64.b64encode(f.read()).decode()
solution = solve({ "type": "ImageToTextTaskOcrBase", "body": image_b64,})print(solution["text"])import { readFileSync } from 'node:fs';
const API = 'https://api.yescaptcha.com';const CLIENT_KEY = process.env.YESCAPTCHA_CLIENT_KEY; // Read the clientKey from an environment variable
async function call(method, payload) { const res = await fetch(`${API}/${method}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ clientKey: CLIENT_KEY, ...payload }), }); const data = await res.json(); if (data.errorId) throw new Error(`${data.errorCode}: ${data.errorDescription}`); return data;}
async function solve(task) { const { solution } = await call('createTask', { task }); return solution;}
// Base64-encode the image (no data: prefix)const imageB64 = readFileSync('captcha.png').toString('base64');
const solution = await solve({ type: "ImageToTextTaskOcrBase", body: imageB64,});console.log(solution.text);Асинхронная задача с требованиями:
{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "ImageToTextTask", "body": "BASE64_IMAGE", "case": true, "numeric": 0, "minLength": 4, "maxLength": 6 }}Результат
Заголовок раздела «Результат»Синхронные типы возвращают результат сразу в ответе на createTask:
{ "errorId": 0, "status": "ready", "solution": { "text": "LMResm" }, "taskId": "2376919c-1863-11ec-a012-94e6f7355a0b"}Асинхронные типы (ImageToTextTask, ImageToTextTaskM1) сначала возвращают taskId, после чего каждые 5 секунд опрашивайте getTaskResult. Когда задача выполнена, solution имеет тот же формат.
| Поле | Тип | Описание |
|---|---|---|
text | string | Распознанный текст |
Индивидуальная модель
Заголовок раздела «Индивидуальная модель»Универсальная модель подходит для любых капч из букв и цифр, но её точность немного ниже, чем у модели, обученной специально. Если нужно распознавать изображения одного и того же вида, свяжитесь с поддержкой, чтобы заказать индивидуальную модель, а затем указывайте её через ImageToTextTaskMuggle и project_name.
Частые вопросы
Заголовок раздела «Частые вопросы»Списываются ли баллы, если распознано неверно?
Заголовок раздела «Списываются ли баллы, если распознано неверно?»Для синхронных типов баллы списываются, как только результат получен, даже если он неверный. Попробуйте другой тип для сравнения или закажите индивидуальную модель.
Получаю ERROR_ZERO_CAPTCHA_FILESIZE или ERROR_PARSE_IMAGE_FAIL
Заголовок раздела «Получаю ERROR_ZERO_CAPTCHA_FILESIZE или ERROR_PARSE_IMAGE_FAIL»Base64 изображения неполный, либо содержит префикс data: или переводы строк. Проверьте кодировку, см. Коды ошибок.
Связанные примеры
Заголовок раздела «Связанные примеры»- Быстрый старт: первый запрос с
ImageToTextTaskOcrBase - Примеры на Python