10 Commits

Author SHA1 Message Date
Hua
201e517b86 Support external FunCaptcha ONNX fallback 2026-03-12 19:53:51 +08:00
Hua
221af67bf4 Tidy placeholder directories and ignores 2026-03-12 19:37:14 +08:00
Hua
bc6776979e Align task API and add FunCaptcha support 2026-03-12 19:32:59 +08:00
Hua
ef9518deeb Add README.md with project documentation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 19:30:22 +08:00
Hua
68ab86e6b9 Refactor server.py: add base64 support, separate from training
- POST /solve accepts JSON with base64 encoded image
- POST /solve/upload keeps multipart file upload compatibility
- Server only depends on inference code (onnxruntime), no torch
- Catch invalid image errors with proper 400 response
- Update CLAUDE.md with new API documentation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 19:28:09 +08:00
Hua
788ddcae1a Add tests, server, resume training, and project cleanup
- Add 57 unit tests covering generators, models, and pipeline components
- Implement FastAPI HTTP service (server.py) with POST /solve and GET /health
- Add checkpoint resume (断点续训) to both CTC and regression training utils
- Fix device mismatch bug in CTC training (targets/input_lengths on GPU)
- Add pytest dev dependency to pyproject.toml
- Update .gitignore with data/solver/, data/real/, *.log
- Remove PyCharm template main.py
- Update training/__init__.py docs for solver training scripts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 19:05:47 +08:00
Hua
9b5f29083e Add slide and rotate interactive captcha solvers
New solver subsystem with independent models:
- GapDetectorCNN (1x128x256 grayscale → sigmoid) for slide gap detection
- RotationRegressor (3x128x128 RGB → sin/cos via tanh) for rotation angle prediction
- SlideSolver with 3-tier strategy: template match → edge detect → CNN fallback
- RotateSolver with ONNX sin/cos → atan2 inference
- Generators, training scripts, CLI commands, and slide track utility

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 18:07:06 +08:00
Hua
90d6423551 Replace AdaptiveAvgPool2d with fixed-kernel AvgPool2d for ONNX compatibility
AdaptiveAvgPool2d with None dimensions can cause issues with some ONNX
runtimes. Use AvgPool2d with kernel=(img_h//16, 1) to achieve the same
height-to-1 reduction with full ONNX compatibility.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:58:41 +08:00
Hua
f5be7671bc Expand 3D captcha into three subtypes: 3d_text, 3d_rotate, 3d_slider
Split the single "3d" captcha type into three independent expert models:
- 3d_text: 3D perspective text OCR (renamed from old "3d", CTC-based ThreeDCNN)
- 3d_rotate: rotation angle regression (new RegressionCNN, circular loss)
- 3d_slider: slider offset regression (new RegressionCNN, SmoothL1 loss)

CAPTCHA_TYPES expanded from 3 to 5 classes. Classifier samples updated
to 50000 (10000 per class). New generators, model, dataset, training
utilities, and full pipeline/export/CLI support for all subtypes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:55:53 +08:00
Hua
760b80ee5e Initialize repository 2026-03-10 18:47:29 +08:00