Align task API and add FunCaptcha support

This commit is contained in:
Hua
2026-03-12 19:32:59 +08:00
parent ef9518deeb
commit bc6776979e
33 changed files with 3446 additions and 672 deletions

View File

@@ -9,7 +9,14 @@ import re
import pytest
from PIL import Image
from config import GENERATE_CONFIG, NORMAL_CHARS, MATH_CHARS, THREED_CHARS, SOLVER_CONFIG
from config import (
GENERATE_CONFIG,
NORMAL_CHARS,
MATH_CHARS,
THREED_CHARS,
SOLVER_CONFIG,
SOLVER_REGRESSION_RANGE,
)
from generators import (
NormalCaptchaGenerator,
MathCaptchaGenerator,
@@ -67,6 +74,10 @@ class TestMathCaptchaGenerator:
img, label = self.gen.generate()
assert re.match(r"^\d+[+\-×÷]\d+$", label), f"unexpected label format: {label!r}"
def test_generate_with_division_text(self):
img, label = self.gen.generate(text="20÷4")
assert label == "20÷4"
class TestThreeDCaptchaGenerator:
def setup_method(self):
@@ -150,7 +161,25 @@ class TestSlideDataGenerator:
def test_label_is_numeric(self):
img, label = self.gen.generate()
val = int(label)
assert val >= 0
gs = self.gen.gap_size
margin = gs + 10
assert margin + gs // 2 <= val <= self.gen.width - margin + gs // 2
def test_labels_normalize_inside_solver_range(self, tmp_path):
for idx in range(3):
img, label = self.gen.generate()
img.save(tmp_path / f"{label}_{idx:06d}.png")
from training.dataset import RegressionDataset
ds = RegressionDataset(
dirs=[tmp_path],
label_range=SOLVER_REGRESSION_RANGE["slide"],
transform=None,
)
assert len(ds.samples) == 3
for _, norm in ds.samples:
assert 0.0 < norm < 1.0
class TestRotateSolverDataGenerator: