Upload README_zh.md with huggingface_hub
Browse files- README_zh.md +91 -0
README_zh.md
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
language:
|
| 3 |
+
- zh
|
| 4 |
+
license: agpl-3.0
|
| 5 |
+
tags:
|
| 6 |
+
- captcha
|
| 7 |
+
- ocr
|
| 8 |
+
- cnn
|
| 9 |
+
- onnx
|
| 10 |
+
- phpwind
|
| 11 |
+
pipeline_tag: image-to-text
|
| 12 |
+
model_type: phpwind-captcha-ocr
|
| 13 |
+
---
|
| 14 |
+
|
| 15 |
+
# PHPWind 验证码识别
|
| 16 |
+
|
| 17 |
+
识别 **PHPWind 论坛内置验证码**(4 位数字)的 OCR 模型。完全本地推理、无外部 API 依赖、ONNX 模型仅 4 MB。
|
| 18 |
+
|
| 19 |
+
**English version**: [README.md](README.md)
|
| 20 |
+
|
| 21 |
+

|
| 22 |
+
|
| 23 |
+
```
|
| 24 |
+
示例输入 → 模型输出: 9125
|
| 25 |
+
```
|
| 26 |
+
|
| 27 |
+
这是 PHPWind 论坛软件的内置验证码组件(`PwVerifyCode` / `PwGDCode`),彩色数字、干扰线、扭曲都是它的标准特征。
|
| 28 |
+
|
| 29 |
+
## 快速使用
|
| 30 |
+
|
| 31 |
+
### Python (onnxruntime)
|
| 32 |
+
|
| 33 |
+
```bash
|
| 34 |
+
pip install onnxruntime pillow numpy
|
| 35 |
+
```
|
| 36 |
+
|
| 37 |
+
```python
|
| 38 |
+
import numpy as np
|
| 39 |
+
import onnxruntime as ort
|
| 40 |
+
from PIL import Image
|
| 41 |
+
|
| 42 |
+
sess = ort.InferenceSession("model.onnx", providers=["CPUExecutionProvider"])
|
| 43 |
+
|
| 44 |
+
def solve(path):
|
| 45 |
+
im = Image.open(path).convert("RGB").resize((160, 64), Image.BILINEAR)
|
| 46 |
+
x = np.asarray(im, dtype=np.float32).transpose(2, 0, 1)[None] / 255.0
|
| 47 |
+
logits = sess.run(None, {"input": x})[0]
|
| 48 |
+
return "".join(str(int(logits[0, p].argmax())) for p in range(4))
|
| 49 |
+
|
| 50 |
+
print(solve("captcha.png")) # 例如 "9125"
|
| 51 |
+
```
|
| 52 |
+
|
| 53 |
+
### Go (onnxruntime_go)
|
| 54 |
+
|
| 55 |
+
见 [docs/INFERENCE.md](docs/INFERENCE.md)。
|
| 56 |
+
|
| 57 |
+
## 输入 / 输出规格
|
| 58 |
+
|
| 59 |
+
| 项 | 规格 |
|
| 60 |
+
|---|---|
|
| 61 |
+
| 输入 `input` | `[batch, 3, 64, 160]` float32,RGB,取值 `[0, 1]` |
|
| 62 |
+
| 输出 `logits` | `[batch, 4, 10]`,每位置 argmax → 数字 |
|
| 63 |
+
| ONNX opset | 18 |
|
| 64 |
+
| 预处理 | RGB → 缩放到 160x64(双线性)→ 除以 255 |
|
| 65 |
+
|
| 66 |
+
## 评估结果
|
| 67 |
+
|
| 68 |
+
用**真实论坛登录**作为 ground truth(登录成功 = 识别正确)。详见 [docs/EVALUATION.md](docs/EVALUATION.md)。
|
| 69 |
+
|
| 70 |
+
| 指标 | 数值 |
|
| 71 |
+
|---|---|
|
| 72 |
+
| 验证集精度 | 88.6% |
|
| 73 |
+
| 真实登录单次命中 | **87.6%** (85/97) |
|
| 74 |
+
| 带重试登录成功率 | ≈99.9997% |
|
| 75 |
+
|
| 76 |
+
## 训练 / 微调
|
| 77 |
+
|
| 78 |
+
997 张人工标注验证码,CNN 从零训练(位置保留架构)。
|
| 79 |
+
|
| 80 |
+
- 数据:`data/`(997 张已标注图片)
|
| 81 |
+
- 脚本:`scripts/train_fixed.py`
|
| 82 |
+
- 指南:[docs/TRAINING.md](docs/TRAINING.md)
|
| 83 |
+
|
| 84 |
+
## 说明
|
| 85 |
+
|
| 86 |
+
- 验证码为 PHPWind 内置组件(非站点定制)。
|
| 87 |
+
- 不同 PHPWind 版本参数可能有差异,换站使用前建议对比样例确认风格。
|
| 88 |
+
|
| 89 |
+
## 许可证
|
| 90 |
+
|
| 91 |
+
GNU AGPL-3.0 —— 可自由使用、修改、分发(含商用),但修改版/衍生作品必须同样以 AGPL 开源;网络服务使用也需提供源码。详见 [LICENSE](LICENSE)。
|