Solução de Problemas

Erros e correções comuns de OCR CAPTCHA

A resolução de Image/text CAPTCHA pode falhar devido à qualidade da imagem, problemas de formato ou parâmetros de dica incorretos. Veja como diagnosticar e corrigir os erros mais comuns.


Erros de envio

ERROR_WRONG_FILE_EXTENSION

Causa: A imagem não está em um formato compatível ou o base64 é inválido.

Correção:

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: O arquivo de imagem está vazio ou o download falhou.

Correção:

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: A imagem excede o tamanho máximo (normalmente 600 KB).

Correção:

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)

Texto errado retornado

Personagens consistentemente mal interpretados

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

Correção: Use parâmetros de dica para restringir o 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
})

Caixa errada (maiúsculas versus minúsculas)

Causa: O padrão do solucionador é letras minúsculas.

Correção: Defina regsense=1 para ativar a distinção entre maiúsculas e 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 ou ausentes

Causa: O ruído é interpretado como caracteres ou os caracteres são mesclados.

Correção: Definir restrições de comprimento 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
})

Expressão matemática não calculada

Causa: O solucionador lê o texto "3+7" em vez de calcular a resposta "10".

Correção: Definir 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 qualidade de imagem

CAPTCHA muito pequeno

Problema: Imagens muito pequenas (com menos de 50 px de altura) perdem detalhes dos caracteres.

Correção: Capture no maior tamanho disponível. Se a página renderizar o captcha pequeno, verifique se há um URL de origem de resolução mais alta:

# 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 é animado

Problema: alguns CAPTCHAs usam GIFs animados onde o texto só é visível em determinados quadros.

Correção: Extraia o quadro correto:

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 tem fundo transparente

Problema: PNG com fundo transparente pode não ser renderizado corretamente para OCR.

Correção: Adicione um fundo branco:

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

Relatando soluções incorretas

Se CaptchaAI retornar o texto errado, informe:

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

Isso aprimora a precisão do solucionador e pode reembolsar o custo da solução.


Lista de verificação de aprimoramento de precisão

Parâmetro Quando usar Efeito
numeric=1 Apenas dígitos Elimina a confusão da letra/digit
numeric=2 Somente letras Elimina a confusão da letra/digit
min_len / max_len Comprimento conhecido Evita caracteres extras/missing
regsense=1 O caso é importante Preserva maiúsculas/lowercase
calc=1 Expressão matemática Retorna resposta computada
phrase=1 Contém espaços Permite respostas com várias palavras
language=1 Texto cirílico Usa conjunto de caracteres correto
language=2 Texto latino Usa conjunto de caracteres correto

Perguntas frequentes

Por que meu CAPTCHA está sempre errado em um caractere?

Use min_len e max_len para restringir o comprimento da resposta. Verifique também a qualidade da imagem – imagens borradas causam erros de leitura.

Devo usar upload de arquivo ou base64?

Ambos funcionam igualmente bem. Base64 é conveniente para uso programático; o upload de arquivos funciona mais adequado com ferramentas de formulário multipartes.

Como resolvo CAPTCHAs em outros idiomas?

Defina o parâmetro language: 1 para cirílico, 2 para latim. Para outros scripts, omita o parâmetro e deixe o solucionador detectar automaticamente.

Posso resolver CAPTCHAs de áudio com este método?

Não. CAPTCHAs de áudio exigem uma abordagem de resolução diferente. Verifique a documentação do CaptchaAI para suporte de áudio CAPTCHA.


Guias relacionados

Os comentários estão desativados para este artigo.