基于 Django + PyTorch 的中文字体识别系统

1. 项目介绍

中文书法字体在笔画结构、连笔特征、字形重心和墨迹轮廓上具有显著差异。为了让字体类别的判断过程更加直观,本项目实现了一套中文字体识别系统:用户上传一张汉字图像后,系统调用已训练的视觉分类模型,返回对应的字体类别与预测置信度。
项目采用 Django 构建轻量级 Web 服务,PyTorch 完成模型训练与推理。当前数据集覆盖隶书(lishu)和行楷(xingkai)两类,训练端提供 CNN 与 Transformer 等多种模型入口,适合作为深度学习图像分类课程设计、毕业设计或 PyTorch 实战项目参考。

2. 系统功能

  • 在线识别:上传 JPG、PNG 等字体图像,完成单张图片分类。
  • 模型选择:页面自动读取可用权重,可按 CNN(如 AlexNet、ResNet、MobileNet)和 Transformer(如 ViT、Swin Transformer)等类别切换模型。
  • 结果展示:呈现模型名称、预测字体类别、置信度和上传图片。
  • 训练管理:提供统一的训练入口,支持指定网络架构、数据集、学习率、批次大小和训练轮数。
  • 实验记录:训练脚本可输出 loss、accuracy、precision、recall、F1 等过程指标,便于追踪和分析。

3. 技术栈

  • 后端框架:Django,负责路由、模板渲染、图片上传与识别结果返回。
  • 深度学习框架:PyTorch 与 torchvision,使用 ImageFolder 按目录自动读取类别标签。
  • 模型库:CNN 系列(AlexNet、VGG、GoogLeNet、ResNet、DenseNet、MobileNet、EfficientNet、RegNet、ShuffleNet)与 Transformer 系列(Vision Transformer、Swin Transformer)。
  • 运行环境:Python 3.10.15,PyTorch 2.3.1+cu121,支持 CUDA 加速。

4. 数据集说明

数据集根目录为data_set/ChineseStyle,采用标准的train/test双分割结构。每个子目录对应一个字体类别:lishu表示隶书,xingkai表示行楷。当前训练集共 8000 张图像,每类 4000 张;测试集共 5526 张图像,每类 2763 张。
训练阶段使用随机裁剪、缩放、归一化等预处理策略;验证阶段使用确定性的缩放和中心裁剪,保证评估过程稳定。

ImageFolder 会根据类别目录生成标签映射,因此扩展字体类别时只需补充相应文件夹和样本。

5. 模型与识别流程

系统将图像分类任务拆分为“数据准备、模型训练、权重保存、Web 推理”四个步骤。训练脚本读取训练集和测试集,自动获取类别数并构建分类头;训练结束后保存最优权重和类别索引文件。Web 端在收到上传请求后,根据用户选择导入对应模型的 predict 函数,完成图像预处理、前向推理、Softmax 概率计算和结果返回。

对于书写风格差异显著的样本,卷积神经网络能够有效学习局部笔画与纹理特征;Vision Transformer、Swin Transformer 等模型则能进一步建模字形的全局结构特征。项目保留多模型入口,便于对比轻量模型与 Transformer 模型在速度和精度上的实际表现。

6. 系统页面展示

首页以“中文字体识别工作台”为核心操作区域,左侧为模型选择与图片上传区,右侧展示数据类别与使用提示。页面遵循简洁的业务流程:选择模型 → 上传字体图像 → 点击识别 → 查看类别与置信度。

7. 实验结果与分析

项目目录中保留了多种网络的结果文件,可用于观察训练过程与模型间差异。下图从已有结果工作簿中读取部分模型的末条 Accuracy 记录并绘制柱状图,便于在文章中快速展示实验管理流程。由于不同网络的训练轮数、权重初始化和数据版本可能不同,该图用于结果可视化示例。

中文字体数据集的最终结论应以重新训练后的日志和测试结果为准。

8. 项目总结

本文介绍了一套基于 Django 与 PyTorch 的中文字体识别系统。项目围绕真实的中文字体图像分类任务,完成了数据集读取、多模型训练、权重推理和 Web 可视化展示等关键环节。对于希望将深度学习模型落地到网页端的开发者而言,该项目提供了从模型训练到 Web 部署的完整实践链路。

后续工作可以继续扩充楷书、行书、草书、篆书等字体类别,并引入 Top-K 候选结果、混淆矩阵和 Grad-CAM 可解释性分析等功能。此外,也可将模型导出为 ONNX 或 TorchScript 格式,以降低线上推理成本并提升部署灵活性。

9. 适用场景

  • 深度学习图像分类课程设计与毕业设计。
  • Django + PyTorch 前后端整合练习。
  • 书法字体数字化、字体资料整理与文化内容检索的原型系统。
  • 多模型分类性能对比与实验记录展示。