Tipos de tarea
Imagen a texto
Esta página se tradujo automáticamente de la versión en chino y puede contener errores. Prevalece la versión en chino.
Envía la imagen de un captcha de texto en Base64 y recibe las letras y los dígitos que contiene (solution.text). ImageToTextTaskOcrBase cuesta 2 puntos (≈ $0.30 / 1k) por imagen y es síncrono: una sola solicitud createTask devuelve el resultado. Si necesitas opciones como distinguir mayúsculas y minúsculas, solo dígitos u operaciones matemáticas, usa el ImageToTextTask asíncrono.
https://api.yescaptcha.com/createTaskEndpoint globalhttps://cn.yescaptcha.com/createTaskEndpoint ChinaEl cuerpo de la solicitud es JSON y se autentica con tu clientKey.
Tipos y precios
Sección titulada «Tipos y precios»| Tipo de tarea | Precio | Modo | Notas |
|---|---|---|---|
ImageToTextTaskOcrBase | $0.30 / 1k; 2 puntos/tarea · ¥2 / 1k | Síncrono | |
ImageToTextTaskMuggle | $0.30 / 1k; 2 puntos/tarea · ¥2 / 1k | Síncrono | No admite las opciones case/numeric; usa project_name para elegir un modelo personalizado |
ImageToTextTask | $0.60 / 1k; 4 puntos/tarea · ¥4 / 1k | Asíncrono | |
ImageToTextTaskM1 | $2.25 / 1k; 15 puntos/tarea · ¥15 / 1k | Asíncrono |
Los precios en dólares son estimaciones con US$1 ≈ ¥6.67; las tareas se cobran en puntos.
| Necesitas | Usa |
|---|---|
| Captchas alfanuméricos normales, el más barato y rápido | ImageToTextTaskOcrBase, ImageToTextTaskMuggle (síncronos) |
| Un modelo entrenado para ti | ImageToTextTaskMuggle con project_name |
| Distinguir mayúsculas y minúsculas, solo dígitos, operaciones matemáticas, límites de longitud | ImageToTextTask, ImageToTextTaskM1 (asíncronos) |
Cada tipo usa modelos y rutas distintos, así que el resultado con el mismo tipo de imagen puede variar; pruébalos y elige el mejor.
Parámetros de la solicitud
Sección titulada «Parámetros de la solicitud»| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
type | string | Sí | Tipo de tarea; consulta "Tipos de tarea y precios" en esta página |
body | string | Sí | Imagen codificada en Base64, sin el prefijo data:image/...;base64, y sin saltos de línea |
project_name | string | No | Nombre de un modelo personalizado, compatible solo con ImageToTextTaskMuggle. Omítelo para usar el modelo alfanumérico general. Contacta a Soporte para obtener un modelo personalizado (solo ImageToTextTaskMuggle) |
phrase | boolean | No | true significa que la respuesta contiene al menos un espacio (solo ImageToTextTask, ImageToTextTaskM1) |
case | boolean | No | true significa que la respuesta distingue entre mayúsculas y minúsculas (solo ImageToTextTask, ImageToTextTaskM1) |
numeric | integer | No | 0 sin requisito; 1 solo dígitos; 2 sin dígitos (solo ImageToTextTask, ImageToTextTaskM1) |
math | boolean | No | true significa que la imagen es una expresión matemática y la respuesta es su resultado (solo ImageToTextTask, ImageToTextTaskM1) |
minLength | integer | No | Longitud mínima de la respuesta; 0 significa sin límite (solo ImageToTextTask, ImageToTextTaskM1) |
maxLength | integer | No | Longitud máxima de la respuesta; 0 significa sin límite (solo ImageToTextTask, ImageToTextTaskM1) |
body es el Base64 del archivo de imagen. Las imágenes WebP se convierten automáticamente.
Ejemplo de solicitud
Sección titulada «Ejemplo de solicitud»{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "ImageToTextTaskOcrBase", "body": "BASE64_IMAGE" }}Código completo (lee captcha.png del directorio actual):
# 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);Una tarea asíncrona con opciones:
{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "ImageToTextTask", "body": "BASE64_IMAGE", "case": true, "numeric": 0, "minLength": 4, "maxLength": 6 }}Resultado
Sección titulada «Resultado»Los tipos síncronos devuelven el resultado directamente en createTask:
{ "errorId": 0, "status": "ready", "solution": { "text": "LMResm" }, "taskId": "2376919c-1863-11ec-a012-94e6f7355a0b"}Los tipos asíncronos (ImageToTextTask, ImageToTextTaskM1) devuelven primero un taskId; después consulta getTaskResult cada 5 segundos. Al terminar, solution tiene el mismo formato.
| Campo | Tipo | Descripción |
|---|---|---|
text | string | El texto reconocido |
Modelos personalizados
Sección titulada «Modelos personalizados»El modelo general funciona con cualquier captcha alfanumérico, pero es algo menos preciso que un modelo entrenado para un estilo concreto. Si las imágenes que quieres reconocer siempre tienen el mismo estilo, contacta con soporte para pedir un modelo personalizado y luego selecciónalo con ImageToTextTaskMuggle y project_name.
Preguntas frecuentes
Sección titulada «Preguntas frecuentes»¿Se cobran puntos si el texto es incorrecto?
Sección titulada «¿Se cobran puntos si el texto es incorrecto?»En los tipos síncronos se cobran puntos siempre que se devuelve un resultado, aunque sea incorrecto. Prueba otro tipo para comparar o pide un modelo personalizado.
¿Recibo ERROR_ZERO_CAPTCHA_FILESIZE o ERROR_PARSE_IMAGE_FAIL?
Sección titulada «¿Recibo ERROR_ZERO_CAPTCHA_FILESIZE o ERROR_PARSE_IMAGE_FAIL?»El Base64 de la imagen está incompleto o incluye el prefijo data: o saltos de línea. Revisa la codificación; consulta los códigos de error.
Ejemplos relacionados
Sección titulada «Ejemplos relacionados»- Inicio rápido: tu primera solicitud con
ImageToTextTaskOcrBase - Ejemplos en Python