Khắc Phục Sự Cố

Các lỗi và cách sửa lỗi OCR CAPTCHA phổ biến

Việc xử lý Image/text CAPTCHA có thể không thành công do chất lượng hình ảnh, vấn đề về định dạng hoặc thông số gợi ý không chính xác. Dưới đây là cách chẩn đoán và khắc phục các lỗi phổ biến nhất.


Lỗi gửi bài

ERROR_WRONG_FILE_EXTENSION

Lý do: Hình ảnh không ở định dạng được hỗ trợ hoặc base64 không hợp lệ.

Sửa chữa:

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

Lý do: File ảnh trống hoặc tải xuống không thành công.

Sửa chữa:

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

Lý do: Hình ảnh vượt quá kích thước tối đa (thường là 600KB).

Sửa chữa:

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)

Văn bản sai được trả về

Các ký tự liên tục bị đọc sai

Lý do: Bộ giải nhầm lẫn các ký tự giống nhau (0/O, 1/l/I, 5/S).

Khắc phục: Sử dụng tham số gợi ý để hạn chế bộ ký tự:

# 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
})

Viết sai (chữ hoa và chữ thường)

Lý do: Bộ giải mặc định là chữ thường.

Khắc phục: Đặt regsense=1 để bật phân biệt chữ hoa chữ thường:

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

Ký tự thừa hoặc thiếu

Nguyên nhân: Nhiễu được hiểu là ký tự hoặc ký tự được hợp nhất.

Khắc phục: Đặt giới hạn độ dài 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
})

Biểu thức toán học không được tính toán

Lý do: Người giải sẽ đọc văn bản "3+7" thay vì tính ra câu trả lời là "10".

Khắc phục: Đặt 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
})

Vấn đề về chất lượng hình ảnh

CAPTCHA quá nhỏ

Vấn đề: Hình ảnh rất nhỏ (chiều cao dưới 50px) làm mất chi tiết ký tự.

Khắc phục: Chụp ở kích thước lớn nhất hiện có. Nếu trang hiển thị hình ảnh xác thực nhỏ, hãy kiểm tra URL nguồn có độ phân giải cao hơ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 là hình động

Vấn đề: Một số CAPTCHA sử dụng ảnh GIF động trong đó văn bản chỉ hiển thị trong một số khung nhất định.

Khắc phục: Trích xuất đúng khung:

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 có nền trong suốt

Vấn đề: PNG có nền trong suốt có thể không hiển thị chính xác cho OCR.

Khắc phục: Thêm nền trắng:

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

Báo cáo giải pháp sai

Nếu CaptchaAI trả về văn bản sai, hãy báo cáo:

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

Điều này cải thiện độ chính xác của bộ giải và có thể hoàn lại chi phí giải.


Danh sách kiểm tra cải thiện độ chính xác

tham số Khi nào nên sử dụng Hiệu ứng
numeric=1 Chỉ chữ số Loại bỏ sự nhầm lẫn giữa chữ/digit
numeric=2 Chỉ chữ cái Loại bỏ sự nhầm lẫn giữa chữ/digit
min_len / max_len chiều dài đã biết Ngăn chặn các ký tự extra/missing
regsense=1 Vụ án quan trọng Giữ nguyên chữ hoa/lowercase
calc=1 biểu thức toán học Trả về câu trả lời được tính toán
phrase=1 Chứa khoảng trắng Cho phép trả lời nhiều từ
language=1 văn bản Cyrillic Sử dụng bộ ký tự chính xác
language=2 văn bản Latinh Sử dụng bộ ký tự chính xác

Câu hỏi thường gặp

Tại sao CAPTCHA của tôi luôn sai một ký tự?

Sử dụng min_lenmax_len để hạn chế độ dài câu trả lời. Đồng thời xác minh chất lượng hình ảnh - hình ảnh mờ có thể gây hiểu nhầm.

Tôi nên sử dụng tập tin tải lên hoặc base64?

Cả hai đều hoạt động tốt như nhau. Base64 thuận tiện cho việc sử dụng theo chương trình; tải lên tệp hoạt động tốt hơn với các công cụ biểu mẫu nhiều phần.

Làm cách nào để giải CAPTCHA bằng các ngôn ngữ khác?

Đặt tham số language: 1 cho chữ Cyrillic, 2 cho tiếng Latin. Đối với các tập lệnh khác, hãy bỏ qua tham số và để bộ giải tự động phát hiện.

Tôi có thể giải CAPTCHA âm thanh bằng phương pháp này không?

Không. CAPTCHA âm thanh yêu cầu một cách giải quyết khác. Kiểm tra tài liệu CaptchaAI để biết hỗ trợ CAPTCHA âm thanh.


Hướng dẫn liên quan

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