Skip to main content

CaptchaConda

머신러닝 없이 고전 이미지 처리만으로 숫자 캡챠를 푸는 솔버. 학습 데이터도, GPU도, 프레임워크도 필요 없다. 매칭 코어는 C++ 백엔드로 이식돼 있고, Python은 얇은 껍데기 (전처리·세그멘테이션·오케스트레이션)로 남는다. 각 환경에 맞는 백엔드는 설치 후 한 번만 빌드한다.

설치

pip install CaptchaConda
python -m CaptchaConda init          # 이 환경에 맞게 C++ 백엔드 빌드 (CPU)
# 또는 GPU 환경:
python -m CaptchaConda init --cuda   # nvcc 로 CUDA 백엔드 빌드

init은 대화형 마법사로 진행된다(화살표 ↑/↓ 선택, Enter 확정):

  1. 빌드 방식 선택 — C++ (권장) / Python(빌드 없이 종료)
  2. 디바이스 선택 — CPU / CUDA
  3. 현재 라이브러리·컴파일러 검색(스피너)
  4. 빌드 바이너리 상태 판단 — 없으면 빌드 / 예전 버전이면 업그레이드 확인 / 최신이면 재빌드 확인
  5. 컴파일러 선택(하나여도 확인) — 없으면 다운로드 여부를 묻고 자동 설치(build-essential/nvidia-cuda-toolkit 등)
  6. 빌드 프로그레스 바

비대화형(파이프/CI) 환경에서는 안전한 기본값(C++/CPU)으로 자동 진행된다. 컴파일러가 전혀 없고 설치도 거부하면 순수 Python 폴백으로 실행할 수 있다(동일 결과, 조금 느림).

사용

from CaptchaConda import CaptchaConda

device = "cuda"  # 또는 "cpu"
cc = CaptchaConda(devices=device)   # 처음 1회만
cc.init()                            # 처음 1회만 (백엔드 빌드+로드)

print(cc.solve("captcha.png"))       # -> "39825"
print(cc.solve(pil_image, expected_n=5))
  • CaptchaConda(devices="cpu"|"cuda") — 백엔드 종류 선택
  • init(force=False) — 백엔드 빌드/로드(캐시됨; force=True로 재빌드)
  • solve(image, expected_n=None) — 이미지(경로 또는 PIL) → 숫자 문자열

상호운용 & 신뢰도 (다른 라이브러리와 조합)

통짜 솔버가 아니라 파이프라인 단계를 노출해, 다른 OCR/ML 라이브러리와 섞어 쓸 수 있다.

# 1) 문자별 상세(바운딩박스 + 신뢰도)로 후처리/라우팅
for ch in cc.solve(img, expected_n=5, return_detail=True):
    print(ch["digit"], ch["bbox"], ch["confidence"])   # confidence = 1등-2등 마진

# 2) 세그멘테이션만 쓰고 분류는 다른 라이브러리에 맡기기
for bbox, glyph in cc.segment(img, expected_n=5):       # glyph: 정규화 (36,28)
    digit = my_other_model.predict(glyph)               # 외부 분류기

# 3) 외부에서 잘라온 글리프를 CaptchaConda 분류기로
digit, conf, scores = cc.classify_glyph(my_glyph)

confidence(1등-2등 점수 마진)가 낮으면 애매하거나 실패한 인식이다. 이를 임계로 걸어 저신뢰 문자는 다른 라이브러리로 폴백하는 하이브리드 구성이 가능하다.

한계 및 대응 (정직하게)

  • 얇은 방해선(1~2px): 같은 색이어도 잘 처리된다(자리당 95~98%).
  • 두꺼운 방해선(≥3~4px)이 숫자를 관통·융합하는 경우: 성능이 급락한다. 색이 숫자와 같으면 분리 신호가 없고, 선이 여러 숫자를 이어 붙이면 세그멘테이션이 하나로 병합돼 잘못 쪼개진다(예측이 한두 숫자로 퇴화). 이는 학습 없는 고전 이미지 처리의 근본 한계다.
  • 대응: 위 confidence로 실패를 감지하고, segment()로 얻은 글리프를 ML OCR 등 다른 라이브러리로 폴백하는 하이브리드를 권장한다. CaptchaConda는 빠른 1차 필터 (대부분의 깨끗/얇은선 캡챠를 CPU로 즉시 처리)로 쓰고, 저신뢰 케이스만 무거운 모델로 넘기면 전체 비용을 크게 아낄 수 있다.

왜 이런 구조인가

  • Python은 그대로 배포 → 이식성. 무거운 계산은 C++ 백엔드가 담당.
  • 백엔드는 소스로 배포되고 init 때 각 환경에 맞게 컴파일 → 배포 바이너리 호환성 문제를 피하고, CUDA가 있으면 GPU 백엔드로 빌드.
  • 학습이 없으므로 모델 파일·GPU·데이터셋 비용이 0. 필터 데이터(수십 KB)만 동봉.

동작 개요

이미지 → 배경 분리 → 숫자 분리 → (C++) 필터 매칭 + 위상 라우팅 + 이중필터 → 시퀀스. 정확도는 타깃 캡챠 분포에 맞춰 동봉 필터를 튜닝할수록 올라간다.

Metadata

Release files for CaptchaConda 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for CaptchaConda 0.3.0
File Size Uploaded
captchaconda-0.3.0.tar.gz 92.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for CaptchaConda 0.3.0
File Interpreter ABI Platform
captchaconda-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 187.2 kB

Release files / captchaconda-0.3.0.tar.gz

Download URL captchaconda-0.3.0.tar.gz
Size 92.9 kB
Tags Source
SHA-256 checksum
How to use checksums
55c18dbae719739eb80a089c75df19a77f7efc1a328eff0d601d5219fc426a08
BLAKE2b-256 checksum
How to use checksums
6854ade5e4d206269fe8043959b12a568002e63cbb8a1795218536578e64718a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.6

Release files / captchaconda-0.3.0-py3-none-any.whl

Download URL captchaconda-0.3.0-py3-none-any.whl
Size 94.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
608228153136ab4317a6bc487a09aa75a849d83e4e1a909c64a518463d7d5c7b
BLAKE2b-256 checksum
How to use checksums
234fc280c3ead6ed5f776f5e714026b58b9ee9745cccb4865920842f3d943ed3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.6

Release history Release notifications | RSS feed

1.2.0

2 release files

This release

0.3.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page