对我的输入法项目想增强功能的时候,调研了一下似乎没有一个合适的能集成到手机输入法的汉字手写识别模型。 就自己找数据训练了一个,基本上做到性能和效果都够用了,看看大家有没有感兴趣的,发出来求些 Star.
具体地址: https://github.com/Ismantic/Handwritten
它覆盖了从数据准备、PyTorch 训练,到 NCNN INT8 量化和 Android 离线推理的完整 链路,不只是一个模型文件或演示页面。
目前使用 MobileNetV2 识别 GB2312 一级字的 3755 个类别,在 CASIA HWDB1.1 测试集上的 top-1 准确率为 95.47%。量化后的 INT8 模型约 4.1 MB ,在测试手机上 单次推理约 2–5 ms 。Android 端可以直接在画布上书写,并实时显示置信度、候选字 和推理耗时;识别全程离线。
桌面端可以这样体验:
uv pip install numpy Pillow ncnn
git clone https://github.com/Ismantic/Handwritten.git
cd Handwritten
make -C demo run
模型地址:
https://huggingface.co/Ismantic/Handwritten
需要说明的是,CASIA HWDB1.1 原始数据受其自身许可约束,仓库不会分发训练数据。 如果只想体验 Demo ,可以直接下载已经训练和量化好的模型;如果要完整复现训练, 则需要自行从官方渠道申请数据。
项目使用 Apache-2.0 许可证。欢迎试用,也很想听听大家对移动端交互、误识别样本、 模型体积和工程结构的意见。如果你正在做 NCNN 部署或端侧中文 OCR ,也欢迎交流。