Solve image/text CAPTCHA bisa gagal karena kualitas gambar, masalah format, atau parameter hint yang salah. Berikut cara mendiagnosis dan memperbaiki error paling umum.
Error Pengiriman
ERROR_WRONG_FILE_EXTENSION
Penyebab: Gambar tidak dalam format yang didukung atau base64 tidak valid. Perbaikan:
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
Penyebab: File gambar kosong atau download gagal. Perbaikan:
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
Penyebab: Gambar melebihi ukuran maksimum (biasanya 600KB). Perbaikan:
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)
Teks yang Salah Dikembalikan
Karakter Secara Konsisten Salah Terbaca
Penyebab: Solver membingungkan karakter serupa (0/O, 1/l/I, 5/S).
Perbaikan: Gunakan parameter hint untuk membatasi character set:
# 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
})
Salah Huruf Besar/Kecil
Penyebab: Default solver adalah huruf kecil.
Perbaikan: Atur regsense=1 untuk mengaktifkan case sensitivity:
response = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY, "method": "base64", "body": b64,
"regsense": 1, # Case-sensitive
"json": 1
})
Karakter Tambahan atau Hilang
Penyebab: Noise diartikan sebagai karakter, atau karakter digabungkan.
Perbaikan: Tetapkan batasan panjang 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
})
Ekspresi Matematika Tidak Dihitung
Penyebab: Solver membaca teks "3+7" daripada menghitung jawaban "10".
Perbaikan: Setel 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
})
Masalah Kualitas Gambar
CAPTCHA Terlalu Kecil
Masalah: Gambar yang sangat kecil (tinggi di bawah 50 piksel) kehilangan detail karakter.
Perbaikan: Ambil gambar dengan ukuran terbesar yang tersedia. Jika halaman menampilkan captcha kecil, periksa URL sumber dengan resolusi lebih tinggi:
# 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 Animasi
Masalah: Beberapa CAPTCHA menggunakan GIF animasi di mana teks hanya terlihat di frame tertentu.
Perbaikan: Ekstrak frame yang benar:
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 dengan Background Transparan
Masalah: PNG dengan background transparan mungkin tidak ditampilkan dengan benar untuk OCR.
Perbaikan: Tambahkan background putih:
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")
Melaporkan Solusi yang Salah
Jika CaptchaAI mengembalikan teks yang salah, laporkan:
# Report bad answer
requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY,
"action": "reportbad",
"id": task_id
})
Ini meningkatkan akurasi solver dan dapat mengembalikan biaya solve.
Checklist Peningkatan Akurasi
| Parameter | Kapan digunakan | Efek |
|---|---|---|
numeric=1 |
Hanya angka | Menghilangkan kebingungan huruf/digit |
numeric=2 |
Hanya huruf | Menghilangkan kebingungan huruf/digit |
min_len / max_len |
Panjang diketahui | Mencegah karakter ekstra/hilang |
regsense=1 |
Case penting | Mempertahankan huruf besar/kecil |
calc=1 |
Ekspresi matematika | Mengembalikan jawaban yang dihitung |
phrase=1 |
Berisi spasi | Mengizinkan jawaban multi-kata |
language=1 |
Teks Cyrillic | Menggunakan character set yang benar |
language=2 |
Teks Latin | Menggunakan character set yang benar |
Pertanyaan Umum
Mengapa CAPTCHA saya selalu salah satu karakter?
Gunakan min_len dan max_len untuk membatasi panjang jawaban. Verifikasi juga kualitas gambar — gambar buram menyebabkan misread.
Haruskah saya menggunakan upload file atau base64?
Keduanya bekerja sama baiknya. Base64 lebih praktis untuk penggunaan programatik; upload file lebih cocok untuk alat form multipart.
Bagaimana cara solve CAPTCHA dalam bahasa lain?
Atur parameter language: 1 untuk Cyrillic, 2 untuk Latin. Untuk script lain, hilangkan parameter dan biarkan solver mendeteksi secara otomatis.
Bisakah saya solve audio CAPTCHA dengan metode ini?
Tidak. Audio CAPTCHA memerlukan pendekatan solve yang berbeda. Periksa dokumentasi CaptchaAI untuk dukungan audio CAPTCHA.
Panduan Terkait
- Cara Solve Image CAPTCHA dengan API
- Referensi Kode Error CaptchaAI
- CaptchaAI Quickstart