SKILL.md
gen ruler
验证码的特征与需求
字符组合:数字(0-9)+ 大写字母(A-Z,可排除易混淆字符如 O、I) 干扰元素:随机干扰线、噪点、字符黏连 变换效果:字符旋转、缩放、扭曲、颜色渐变 背景风格:随机背景色、纹理 多样性:字符数量、间距、布局随机化 验证码加入了数字+大写字母、字符旋转、字符大小变换、字符黏连、大量的干扰线、随机背景颜色、字符颜色变换、字体扭曲等
技术栈
Python 生态(最常用): PIL/Pillow 或 OpenCV:用于图像绘制、变换 numpy:处理图像矩阵 random:控制随机参数 captcha 库(基础版):快速生成简单验证码,再二次加工增强复杂度
过程示例
基础字符生成 从字符集中随机选取 N 个字符(如常见的 4-6 位) 为每个字符随机分配字体(可收集一批无衬线 / 衬线字体增加多样性) 字符变换处理 旋转:每个字符随机旋转 ±30° 范围 缩放与扭曲:用 Pillow 的 transform 或 OpenCV 的 warpAffine 实现字符的拉伸、扭曲 颜色变化:字符颜色随机从高对比度色系中选取,避免与背景色冲突 干扰元素叠加 干扰线:绘制多条随机角度、颜色、粗细的曲线或折线 噪点:添加椒盐噪点或高斯模糊,增强干扰 字符黏连:调整字符间距,让部分字符边缘重叠,模拟黏连效果 背景生成 生成随机纯色背景,或添加渐变、纹理背景 背景色与字符色保持高对比度,确保字符可识别(但仍有干扰性) 图像合成与保存 将变换后的字符按随机间距、布局合成到背景上 统一图像尺寸(如 120×40 像素),保存为 PNG/JPG 格式 同时生成标签文件(如文件名对应验证码内容,或单独的 CSV/JSON 映射表)
增强数据集多样性的技巧
参数随机化:字符数量、旋转角度、干扰线数量、颜色等参数都设置随机范围 字体多样性:收集 20 + 种不同风格的字体,避免模型过拟合单一字体 场景模拟:加入模糊、对比度变化等模拟真实拍摄 / 压缩的效果 数据增强:对生成的验证码再做翻转、裁剪、亮度调整,进一步扩充数据集