脱机手写中文文本行识别系统——需求分析与概念模型

  通过高级软件工程课,我学习到了软件工程分析的方法。本文将对工程实践使用软件工程方法进行分析。

  我的工程实践选题是基于深度学习的脱机手写中文文本行识别系统。脱机手写中文文本行识别是指,将手写体的中文纸质文档通过扫描或拍照的方式转化为数字图像,并进一步对该图像中的中文文本行进行识别。目前,随着以 CNN 为代表的一系列深度学习模型的出现, 手写单字符中文识别问题已基本上得到了很好解决。但相对单个汉字识别而言, 含序列信息的脱机手写中文文本行的识别率急剧下降,仍然是此领域还未解决的难点问题之一。

参考资料:课堂PPT

(一)课题内容

   本选题拟实现一个基于深度学习的脱机手写中文文本行识别系统。具体包括:

(1)通过收集/合成更多类别的汉字及不同的书写风格、结合相关数据增强技术来丰富训练集,以提高当前模型结构的泛化能力。

(2)设计和实现至少一个文本行识别模型。

(3)在训练集上进行参数优化,完成模型的训练。

(4)结合后处理的纠错技术,以提高模型的最终的推理精度。

(5)在测试集上,完成对整个系统的评测。

(6)系统部署。

(二)系统需求分析

(1) 功能性需求分析:

a. 业务流程分析

系统训练阶段大致分为以下几个步骤:

①      对训练集数据预处理;

②      训练文本行检测模型;

③      训练文本行识别模型;

④      结束;

系统训练流程:

 

用户使用系统的业务流程分为以下几个步骤:

①      进入系统首页;

②      上传一批图片;

③      系统对这批图片进行预处理、检测并识别;

④      用户得到识别后的结果;

⑤      退出系统;

用户使用系统的业务流程:

 

b. 用例分析:

    整体用例图:

 

系统开发者的用例分析表和图:

Use Case1更换模型;

TUCBW开发者通过接口将之前的模型文件替换为优化后的模型文件;

TUCEW系统可以正常运行;

Use Case2训练模型;

TUCBW开发者将大量中文手写数字图像喂给搭建好的网络模型;

TUCEW生成一个精度达到标准的模型文件;


  

用户的用例分析表和图

Use Case1上传手写中文数字图像,得到识别结果;

TUCBW用户上传一批手写中文的数字图像;

TUCEW系统框出图像中的所有文本行并显示识别结果;

Use Case2在线生成手写图片;

TUCBW用户在系统中打开手写板功能,写下随意一段文本;

TUCEW客户点击确定,系统返回识别结果;

 

(2) 非功能性需求分析

①      可扩展性:系统需要提供良好的可扩展性,保持各接口之间参数的一致性,可以直接通过函数的传入参数调节训练模型的各个参数。

②      健壮性:大规模数据对模型的训练需要很长时间才能得到结果,然而经常会由于某些原因导致程序崩溃,从而需要重新进行训练。所以本系统需要定期存储训练的中间参数,当程序崩溃时可以恢复到最近的备份点,继续进行训练。

③      识别准确率:识别准确率是衡量项目开发成败的关键因素。我们要求,在测试集上,模型的识别准确率不应低于85%。

④      响应时间:响应时间同样也是提高用户体验的关键因素,我们要求对每张图片的检测识别时间不超过1s。

 


(三)业务领域建模

(1)业务领域建模的步骤

  • 第一步,收集应用业务领域的信息。聚焦在功能需求层面,也考虑其他类型的需求和资料;
  • 第二步,头脑风暴。列出重要的应用业务领域概念,给出这些概念的属性,以及这些概念之间的关系;
  • 第三步,给这些应用业务领域概念分类。分别列出哪些是类、属性和属性值、以及列出类之间的继承关系、聚合关系和关联关系。
  • 第四步,将结果用 UML 类图画出来。

(2)画出业务类图

① 用户类 ② 客户类(继承自用户类)③ 管理员类(继承自用户类)④ 文件类⑤ 图片类⑥ 标签类⑦ 工具类:

 

(四)数据建模

根据上述的用例建模和业务领域建模,可以得到各个类的数据模型:

  • 用户
序号 字段 字段类型 字段描述 备注
1 user_ID String 用户ID 主键、自增
2 user_name String 用户名  
3 account_num String 账号  
4 password  String  密码  
5 phone_num String 电话号码 要求11位
6 others String 其他信息  
7 user_class int 用户类别 两类:客户和管理员
  • 客户
序号 字段 字段类型 字段描述 备注
1 user_ID String 用户ID 外键
2 user_class int 用户类别  
  • 管理员
序号 字段 字段类型 字段描述 备注
1 user_ID String 用户ID 外键
2 user_class int 用户类别  
  • 文件类
序号 字段 字段类型 字段描述 备注
1 file_ID String 文件ID 主键、自增
2 file_format String 文件格式  
3 subfile_num String 子文件数目  
4 subfile_name_list List 子文件名列表  
5 file_class int 文件类别 分为图片和标签
  • 图片类
序号 字段 字段类型 字段描述 备注
1 pic_ID String 图片ID 指一批图片而不是一张;主键、自增
  • 标签类
序号 字段 字段类型 字段描述 备注
1 label_ID String 标签ID 是与上述图片对应的一批标签;主键、自增
  • 工具类
序号 字段 字段类型 字段描述 备注
1 tool_ID String 工具ID 为不同的用户打开不同的功能权限
2 user_ID String 用户ID 外键

(五)总结概念原型

  概念原型是一种虚拟的、理想化的软件产品形式。

 

根据上面的用例建模和数据建模可以从两方面总结系统的概念原型:

(1) 从用户角度:用户可以上传本地的一批中文手写图像,点击按钮后,系统会使用文本行检测模型对文本行进行定位,最后对这些图片进行识别。识别完成后会在界面上向客户展示识别结果。

(2) 从管理员角度:管理员可以更改模型以及微调模型。

 

(六)总结与展望

 本项目预期实现文本行定位和检测系统,以及一个能够识别手写中文文本行并达到预定准确度的模型。本文对这个项目进行了需求分析以及概要设计,在分析与设计的过程中,既加深了软件工程理论知识也提升了项目实践能力。同时认识到做好需求分析对于软件工程的重要性,为日后继续学习奠定了基础。

posted @ 2020-12-15 21:17  姚劲嵩  阅读(619)  评论(0编辑  收藏  举报