摘要:随着深度学习和计算机视觉技术的快速发展,手写数学公式的自动识别与计算在智能教育、人机交互等场景中具有重要应用价值。本文围绕"基于深度学习的手写数学公式识别与计算系统设计与实现"这一课题,设计并实现了一套集公式图像输入、字符分割、字符识别及表达式计算于一体的完整系统。
作者:Bob(原创)
项目概述
为提升手写数学表达式录入的效率与易用性,本文设计并实现了一套基于深度学习的手写数学公式识别与计算系统。系统面向日常数学练习与简单公式输入场景,旨在通过自动识别手写数字和四则运算符,降低人工录入成本,提升人机交互体验。针对传统键盘录入复杂数学公式不便的问题,本文从图像处理、字符识别以及表达式解析三个方面进行综合设计与实现。
在方法层面,系统采用自构建的"mnist+"字符数据集,利用卷积神经网络(CNN)构建字符分类模型,并结合图像预处理与字符分割算法,实现对整张手写公式图像的自动拆分与识别。首先,通过灰度化、二值化、形态学开运算与轮廓分析,对输入图像进行字符级分割;随后,利用自定义 CNN 模型对单字符进行分类识别,并按从左到右顺序拼接生成可计算的数学表达式。为保证表达式计算过程的安全性与可靠性,系统引入基于正则校验的安全求值(safe eval)机制,仅允许数字、四则运算符及有限括号结构参与计算。在系统实现层面,本文基于 PyQt5 构建图形化用户界面,实现了公式图片上传、字符分割结果可视化展示、识别结果与计算结果显示、用户登录与权限管理以及识别日志记录等功能,并利用 SQLite 数据库对用户信息与检测记录进行持久化存储,同时提供训练损失曲线、准确率曲线与识别日志的可视化分析界面。
实验结果表明,所构建的字符识别模型在测试集上取得了 98% 以上的平均识别准确率,系统能够稳定、准确地识别常见数字及基本算符,并完成对应算式的自动计算,基本满足日常手写公式识别与计算的应用需求。该系统整体结构清晰、模块划分合理、易于扩展,可在此基础上进一步支持更复杂的数学符号体系、公式排版解析以及作业批改与智能教学等应用场景,为手写数学表达式的智能识别与人机交互提供了一种可行解决方案。
系统设计
本系统采用模块化设计思想,基于深度学习字符识别、图像分割处理与图形化界面交互,实现了手写数学公式的自动识别、计算与数据分析功能。

图1 系统整体流程图
硬件配置
该系统硬件配置如上,如果您的电脑配置低于下述规格,运行速度可能会与本系统的存在差异,请注意。

表1 惠普(HP)暗影精灵10台式整机配置(系统硬件配置)
软件环境
对本实验所需的各类软件及工具的基本信息进行了清晰汇总。

表2 系统软件配置(真实运行环境)
运行展示

图2 登录界面

图3 注册界面

图4 注册成功

图5 登录成功

图6 系统主界面

图7 识别计算(样例)

图8 识别计算(样例)

图9 识别计算(样例)

图10 识别计算(样例)

图11 识别计算(样例)

图12 识别计算(样例)

图13 识别计算(样例)

图14 识别计算(样例)

图15 识别计算(样例)

图16 识别计算(样例)

图17 识别计算(样例)

图18 识别计算(样例)

图19 识别计算(样例)

图20 识别计算(样例)

图21 识别计算(样例)

图22 识别计算(样例)

图23 识别计算(样例)

图24 识别计算(样例)

图25 识别计算(样例)

图27 识别计算(样例)

图28 系统数据分析图

图29 训练日志输出
展示了模型训练过程中的日志输出信息,包括最佳模型的保存提示、训练/测试损失曲线与测试准确率曲线的文件保存路径,以及最终达到的测试集最佳准确率(98.88%)。日志清晰反映了训练脚本的执行流程和模型性能收敛情况,为后续可视化分析和模型比较提供了基础数据。

图30 测试集准确率变化曲线
展示了模型在 1~15 轮训练中的测试集准确率变化趋势。整体准确率稳定在 98.1%~98.9% 之间,并在第 4 轮达到最高点 98.88%。曲线呈现轻微波动,说明模型在测试数据上具有较好的泛化能力,且训练过程中未出现明显的过拟合或欠拟合现象。

图31 训练集与测试集损失变化曲线
展示了模型在整个训练过程中训练损失与测试损失的变化趋势。训练损失持续下降并最终收敛到约 0.01,而测试损失整体呈现轻微波动但保持在 0.05~0.13 区间,反映模型具有良好的学习能力,同时在测试集上的稳定性较高。