Task OCR CAPTCHA yang gagal atau balik dengan teks salah nyaris selalu disebabkan satu dari tiga hal: format file yang tidak sesuai, karakter yang mirip bentuknya tertukar, atau parameter hint yang belum diatur — jarang karena solver-nya lemah. Panduan ini memetakan setiap pesan error dan gejala paling umum ke perbaikan konkret, lengkap parameter API yang perlu Anda kirim ke in.php.
Ini pola yang sering ditemui tim automation dan scraping lepas di Indonesia: baru sadar parameter hint belum diatur setelah ratusan task OCR gagal semalaman, padahal thread di plan BASIC ($15/bulan, 5 thread) sudah habis terpakai untuk task yang salah konfigurasi. Cek tabel referensi cepat di bawah dulu sebelum menjalankan batch besar, baru lanjut ke bagian detail kalau solusi cepatnya belum menyelesaikan masalah.
Tabel Referensi Cepat: Error dan Perbaikannya
| Gejala / Error | Tahap | Kemungkinan Penyebab | Solusi Cepat |
|---|---|---|---|
ERROR_WRONG_FILE_EXTENSION |
Submit | Format gambar tidak didukung, atau prefix data URI ikut terkirim | Encode base64 murni tanpa header data:image/... |
ERROR_ZERO_CAPTCHA_FILESIZE |
Submit | File gambar kosong, download captcha gagal di tengah jalan | Cek ukuran file sebelum submit, capture ulang kalau 0 byte |
ERROR_TOO_BIG_CAPTCHA_FILESIZE |
Submit | Gambar melebihi kurang lebih 600KB | Kompres dengan optimize=True, jaga kejelasan teks |
| Karakter mirip bentuknya tertukar (0/O, 1/l/I, 5/S) | Hasil | Solver tidak tahu batas character set | Set numeric=1 (angka) atau numeric=2 (huruf) |
| Huruf besar/kecil salah | Hasil | Default solver mengembalikan huruf kecil | Set regsense=1 |
| Karakter kurang atau lebih | Hasil | Noise terbaca sebagai karakter, atau karakter berdempet | Set min_len dan max_len |
| CAPTCHA matematika balik sebagai teks | Hasil | Solver membaca simbolnya, bukan menghitung | Set calc=1 |
| Gambar kecil, animasi, atau background transparan | Kualitas gambar | Detail karakter hilang, frame salah, atau alpha channel salah baca | Ambil resolusi tertinggi, ekstrak frame tepat, tambahkan background putih |
Kalau error Anda tidak ada di tabel ini, atau solusi cepatnya belum menyelesaikan masalah, lanjut ke penjelasan detail di bawah.
Error Submission: Kenapa API Menolak Gambar Anda
Tiga error ini muncul saat gambar dikirim ke https://ocr.captchaai.com/in.php, sebelum solver sempat membaca satu karakter pun.
ERROR_WRONG_FILE_EXTENSION
Penyebab: Format gambar tidak didukung, atau string base64 rusak — biasanya karena prefix data URI ikut terkirim. 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, biasanya karena download captcha gagal di tengah proses. 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: Ukuran gambar melebihi batas maksimum (umumnya 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)
Kenapa Hasil OCR Sering Salah Baca
Empat masalah berikut bukan soal gambar gagal terkirim — task-nya sukses, tapi teks yang dikembalikan salah. Penyebabnya hampir selalu parameter hint yang belum disesuaikan dengan bentuk CAPTCHA Anda.
Karakter yang Mirip Bentuknya Saling Tertukar
Solver membingungkan karakter serupa (0/O, 1/l/I, 5/S) kalau tidak diberi batasan character set. Perbaikannya: gunakan parameter hint untuk mempersempit kemungkinan.
# 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
})
Hasil Selalu Huruf Kecil, Padahal CAPTCHA Case-Sensitive
Default solver mengembalikan huruf kecil semua, jadi hasil "aB3k" bisa balik sebagai "ab3k". Atur regsense=1 supaya besar/kecil huruf dipertahankan:
response = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY, "method": "base64", "body": b64,
"regsense": 1, # Case-sensitive
"json": 1
})
Jumlah Karakter Tidak Sesuai (Kurang atau Lebih)
Ada dua penyebab yang paling sering muncul:
- Noise pada gambar terbaca sebagai karakter tambahan
- Dua karakter yang berdempetan digabung jadi satu
Perbaikannya: kunci panjang jawaban dengan min_len dan max_len.
# 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
})
CAPTCHA Matematika Dikembalikan sebagai Teks, Bukan Hasil Hitung
Solver membaca "3+7" sebagai teks literal, bukan menghitungnya jadi "10". Setel calc=1 supaya CaptchaAI mengembalikan hasil hitungan, bukan simbolnya:
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
})
Kualitas Gambar yang Membuat OCR Meleset
Kalau parameter hint sudah benar tapi hasil masih meleset, masalahnya sering ada pada gambar itu sendiri — bukan pada parameter.
Gambar Terlalu Kecil untuk Dibaca Akurat
Gambar dengan tinggi di bawah 50 piksel kehilangan detail karakter, sehingga solver kesulitan membedakan bentuk huruf yang mirip. Ambil ukuran gambar terbesar yang tersedia — kalau halaman menampilkan captcha kecil, cek dulu apakah ada 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 Berformat GIF Animasi
Sebagian CAPTCHA memakai GIF animasi, di mana teksnya hanya terlihat jelas pada frame tertentu. Perbaikannya:
- Buka gambar sebagai objek GIF multi-frame
- Loop setiap frame dan simpan sebagai PNG terpisah
- Kirim frame yang teksnya paling jelas ke solver, bukan frame pertama begitu saja
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")
Background PNG Transparan Mengacaukan Deteksi Teks
PNG dengan background transparan kadang tidak terbaca dengan benar oleh OCR. Tambahkan background putih sebelum submit:
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 Jawaban yang Salah ke CaptchaAI
Kalau CaptchaAI mengembalikan teks yang salah padahal semua parameter di atas sudah benar, laporkan lewat reportbad:
# Report bad answer
requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY,
"action": "reportbad",
"id": task_id
})
Laporan ini membantu CaptchaAI menandai task yang meleset dan, dalam banyak kasus, mengembalikan biaya solve — jangan lewatkan langkah ini kalau Anda menjalankan volume tinggi.
Checklist Parameter untuk Akurasi OCR yang Lebih Tinggi
Simpan tabel ini sebagai referensi sebelum menjalankan batch OCR baru:
| 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 jawaban sudah diketahui | Mencegah karakter ekstra atau hilang |
regsense=1 |
Besar/kecil huruf penting | Mempertahankan case asli |
calc=1 |
CAPTCHA berupa ekspresi matematika | Mengembalikan hasil hitungan, bukan teks mentah |
phrase=1 |
Jawaban berisi spasi | Mengizinkan jawaban multi-kata |
language=1 |
Teks Cyrillic | Menggunakan character set yang sesuai |
language=2 |
Teks Latin | Menggunakan character set yang sesuai |
Dua aturan praktis sebelum menambahkan parameter:
- Jangan aktifkan parameter yang tidak relevan dengan bentuk CAPTCHA Anda — solver bisa salah menafsirkan gambar
- Kombinasikan maksimal dua atau tiga parameter hint sekaligus; terlalu banyak batasan justru menurunkan akurasi
Pertanyaan Umum Soal Error OCR CAPTCHA
Kenapa hasil OCR saya sering meleset satu karakter?
Gunakan min_len dan max_len untuk mengunci panjang jawaban, lalu cek kualitas gambar — gambar buram atau resolusi rendah adalah penyebab paling umum karakter yang meleset.
Apakah upgrade ke plan dengan lebih banyak thread memperbaiki akurasi OCR?
Tidak, karena dua hal ini berbeda urusan:
- Thread menentukan berapa banyak task yang bisa diproses bersamaan
- Akurasi hanya dipengaruhi parameter hint dan kualitas gambar
Perbaiki dulu parameter hint di atas — baru pertimbangkan upgrade thread kalau volume Anda memang butuh concurrency lebih besar.
Berapa lama waktu solve untuk image/OCR CAPTCHA di CaptchaAI?
Image/OCR CAPTCHA biasanya selesai dalam waktu kurang dari 0.5 detik dengan tingkat keberhasilan tinggi pada tipe yang didukung. Kalau task Anda masih sering gagal meski cepat, penyebabnya ada di parameter atau kualitas gambar, bukan di kecepatan solver.
Apakah reportbad selalu mengembalikan biaya solve?
Tidak selalu. reportbad menandai task sebagai jawaban salah untuk ditinjau, dan pengembalian biaya solve tergantung hasil peninjauan tersebut. Yang pasti, laporan ini membantu akurasi solver ke depannya.
Bisakah solver OCR CaptchaAI menyelesaikan CAPTCHA audio?
Tidak. CAPTCHA audio memerlukan pendekatan solve yang berbeda dari image/OCR. Periksa dokumentasi CaptchaAI untuk dukungan audio CAPTCHA.