Solución de Problemas

Errores y soluciones comunes de OCR CAPTCHA

La resolución de Image/text CAPTCHA puede fallar debido a la calidad de la imagen, problemas de formato o parámetros de sugerencias incorrectos. A continuación se explica cómo diagnosticar y corregir los errores más comunes.


Errores de envío

ERROR_WRONG_FILE_EXTENSION

Causa: La imagen no tiene un formato compatible o base64 no es válido.

Arreglo:

import base64

# Ensure proper encoding
with open("captcha.png", "rb") as f:
    b64 = base64.b64encode(f.read()).decode()

# Don't include the data URI prefix
# WRONG: "data:image/png;base64,iVBOR..."
# RIGHT: "iVBOR..."

ERROR_ZERO_CAPTCHA_FILESIZE

Causa: El archivo de imagen está vacío o la descarga falló.

Arreglo:

import os

# Check file size before submitting
if os.path.getsize("captcha.png") == 0:
    print("Image file is empty — re-download")
    # Re-capture the captcha

ERROR_TOO_BIG_CAPTCHA_FILESIZE

Causa: La imagen supera el tamaño máximo (normalmente 600 KB).

Arreglo:

from PIL import Image
import io

img = Image.open("captcha.png")
# Reduce quality without losing text clarity
buffer = io.BytesIO()
img.save(buffer, format="PNG", optimize=True)

Se devolvió texto incorrecto

Los personajes se malinterpretan constantemente

Causa: El solucionador confunde caracteres similares (0/O, 1/l/I, 5/S).

Solución: Utilice parámetros de sugerencia para restringir el conjunto de caracteres:

# If captcha is digits only
response = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY, "method": "base64", "body": b64,
    "numeric": 1,  # 1 = digits only
    "json": 1
})

# If captcha is letters only
response = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY, "method": "base64", "body": b64,
    "numeric": 2,  # 2 = letters only
    "json": 1
})

Caso incorrecto (mayúsculas versus minúsculas)

Causa: El solucionador utiliza minúsculas de forma predeterminada.

Solución: Configure regsense=1 para habilitar la distinción entre mayúsculas y minúsculas:

response = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY, "method": "base64", "body": b64,
    "regsense": 1,  # Case-sensitive
    "json": 1
})

Caracteres extras o faltantes

Causa: El ruido se interpreta como caracteres o los caracteres están fusionados.

Solución: Establecer restricciones de longitud min/max:

# If you know the CAPTCHA is always 6 characters
response = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY, "method": "base64", "body": b64,
    "min_len": 6,
    "max_len": 6,
    "json": 1
})

Expresión matemática no calculada

Causa: El solucionador lee el texto "3+7" en lugar de calcular la respuesta "10".

Solución: Establecer calc=1:

response = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY, "method": "base64", "body": b64,
    "calc": 1,  # Compute the math expression
    "json": 1
})

Problemas de calidad de imagen

CAPTCHA demasiado pequeño

Problema: Las imágenes muy pequeñas (de menos de 50 píxeles de altura) pierden detalles de los caracteres.

Solución: Capture en el tamaño más grande disponible. Si la página muestra el captcha pequeño, busque una URL de origen de mayor resolución:

# Check for higher-res version
img_src = captcha_el.get_attribute("src")
# Some sites use ?size=small — try removing or changing the parameter
high_res_src = img_src.replace("size=small", "size=large")

CAPTCHA está animado

Problema: Algunos CAPTCHA usan GIF animados donde el texto solo es visible en ciertos cuadros.

Solución: Extrae el fotograma correcto:

from PIL import Image

gif = Image.open("captcha.gif")
# Extract each frame and find the one with text
for i in range(gif.n_frames):
    gif.seek(i)
    gif.save(f"frame_{i}.png")

CAPTCHA tiene fondo transparente

Problema: Es posible que PNG con fondo transparente no se reproduzca correctamente para OCR.

Solución: Añade un fondo blanco:

from PIL import Image

img = Image.open("captcha.png").convert("RGBA")
background = Image.new("RGBA", img.size, (255, 255, 255, 255))
background.paste(img, mask=img)
background.convert("RGB").save("captcha_white_bg.png")

Informar soluciones incorrectas

Si CaptchaAI devuelve un texto incorrecto, infórmalo:

# Report bad answer
requests.get("https://ocr.captchaai.com/res.php", params={
    "key": API_KEY,
    "action": "reportbad",
    "id": task_id
})

Esto mejora la precisión del solucionador y puede reembolsar el costo de la resolución.


Lista de verificación de mejora de la precisión

Parámetro Cuándo usar Efecto
numeric=1 Solo dígitos Elimina la confusión letra/dígito
numeric=2 Solo letras Elimina la confusión letra/dígito
min_len / max_len Longitud conocida Previene caracteres extra o faltantes
regsense=1 Diferencia mayúsculas/minúsculas Conserva el caso original
calc=1 Expresión matemática Devuelve la respuesta calculada
phrase=1 Contiene espacios Permite respuestas de varias palabras
language=1 Texto cirílico Usa el juego de caracteres correcto
language=2 Texto latino Usa el juego de caracteres correcto

Preguntas frecuentes

¿Por qué mi CAPTCHA siempre tiene un carácter incorrecto?

Utilice min_len y max_len para limitar la longitud de la respuesta. Verifique también la calidad de la imagen: las imágenes borrosas provocan errores de lectura.

¿Debo usar la carga de archivos o base64?

Ambos funcionan igual de bien. Base64 es conveniente para uso programático; La carga de archivos funciona mejor con herramientas de formularios de varias partes.

¿Cómo resuelvo CAPTCHA en otros idiomas?

Configure el parámetro language: 1 para cirílico, 2 para latín. Para otros scripts, omita el parámetro y deje que el solucionador lo detecte automáticamente.

¿Puedo resolver CAPTCHA de audio con este método?

No. Los CAPTCHA de audio requieren un enfoque de resolución diferente. Consulte la documentación de CaptchaAI para obtener compatibilidad con CAPTCHA de audio.


Guías relacionadas

Los comentarios están deshabilitados para este artículo.