手写汉字识别系统-python+CNN

发布时间:2026/8/25 20:21:13
手写汉字识别系统-python+CNN 本项目为前几天收费帮学妹做的一个项目在工作环境中基本使用不到但是很多学校把这个当作编程入门的项目来做故分享出本项目供初学者参考。一、项目描述基于 CNN卷积神经网络 的 手写汉字识别 Web 系统用户在网页画板上通过鼠标或触屏手写汉字前端使用 HTML5 Canvas 采集笔迹图像经等比缩放与 base64 编码后通过 AJAX 异步提交到 Flask 后端。后端完成灰度转换、字框裁剪、居中留白、尺寸归一化等预处理后送入基于 CASIA-HWDB 数据集训练好的 CNN 模型进行推理取出 Top-33 个最可能的候选 汉字的类别索引与置信度再通过 PIL 将汉字渲染成 64×64 的结果图片和准确率一起以 JSON 形式异步回传到前端页面进行可视化展示。识别范围覆盖 GB2312 一级常用简体汉字共 3755 个 。二、项目功能– 在线手写画板 基于 DrawingBoard.js 的 Canvas 画板支持清屏、橡皮擦切换、18px 默认粗笔触书写– 原始图实时预览 画板内容等比缩放到 64×64 缩略框展示后端看到的输入– Top-3 汉字识别 点击/停止书写后以 AJAX 异步调用 /chineseRecognize 接口返回 3 个最可能的候选汉字– 准确率百分比展示 每个候选汉字附带 softmax 置信度如 74.85% 用户可按概率参考判断– 汉字结果图片生成 后端以微软雅黑字体将候选汉字直接绘成 RGB 图片回传免除客户端字体缺失导致的方框乱码问题– 异常/错误信息弹窗 权重文件缺失、模型恢复失败、白板无笔画等异常均会以 alert 形式提示用户具体原因– 预处理增强 字的外接矩形 bbox 裁剪、20% 留白 pad 成正方形居中、LANCZOS 重采样缩放到 64×64显著提升”写在边角/字太小”场景下的识别率三、运行环境后端语言 Python 3.13原始开发为 3.6.1已兼容升级到 3.13 Web 框架 Flask 3.1.0原始为 0.12.2已兼容升级 深度学习框架 TensorFlow 2.21.0 tf_slim 1.1.0原始为 TensorFlow 1.3.0使用 tf.compat.v1 tf_slim 做 v1 兼容改造 图像处理 Pillow 10.4.0原始为 4.2.1适配 Pillow 10 数值计算 NumPy 2.1.3 模型序列化 pickle保存汉字编码→汉字映射字典 前端语言 HTML5 / JavaScript / CSS 前端画板库 DrawingBoard.jscontrolsNavigation DrawingMode DOM/AJAX 库 jQuery 1.11.2 背景动效 three.min.js canvas-nest 代码编辑 PyCharm / VS Code 依赖管理 PipenvPipfile四、项目技术Python Flask以上系统源码经过技术整理与调试确保能正常运行五、项目截图