气有浩然 学无止境

智能批改及其Docker化微服务架构

系统架构图

系统简介

系统主要由6个主服务构成,分别是核心调度图片切割文字识别错别字矫正机器批改题库配置。系统的运行逻辑是:

  1. 教研人员通过题库配置系统配置题目,相似度,权重等
  2. 业务系统向核心调度系统提交学生答题卡图片
  3. 核心调度系统将答题卡图片提交给图片切割系统切割,得到切割后的图片矩阵
  4. 核心调度系统将得到图片矩阵提交给文字识别系统识别,得到带有混淆集的识别结果
  5. 核心调度系统将带有混淆集的识别结果提交给错别字矫正系统进行错别字矫正,得到最终的文字识别结果
  6. 核心调度系统将最终的文字识别结果提交给机器批改系统进行批改,得到最终的批改结果
  7. 核心调度系统将批改结果返回给业务系统,完成整个批改流程
  8. 业务系统拿到批改结果为学员生成批改报告
    下面分别介绍这6个服务

核心调度

核心调度系统是整个批改系统的指挥中心,主要负责对外提供接口和提供对内部服务的调用,转发。
对外,核心调度系统主要提供基于Https的REST接口和MQ(消息队列)两种服务方式,REST接口采用Python的Flask框架实现,轻量,简单,高效。消息队列采用阿里开源的RabbitMQ系统实现,可靠性较高。业务系统可根据自身需求,随意选择一种调用方式。
对内,核心调度系统主要负责调用内部的其它服务,以完成整个批改流程。核心调度系统主要采用RPC的方式调用其它系统,实现RPC的方式是采用Facebook开源的Thrift框架,该框架跨语言,轻量,且运行效率很高。

图片切割

图片切割系统主要负责处理学生提交的答题卡,即将学生答题卡上的文字切割成一个个文字方块,以供文字识别系统进行识别。
系统首先采用OpenCV等工具对图片进行初步处理,而后采用模式识别等相关技术,针对答题卡的特殊形式,利用TensorFlow训练出一个可以识别文字位置的识别模型,将答题卡上所有文字框出,然后返回这些被框出的文字块共文字识别系统进行识别。

文字识别

文字识别系统主要负责识别图片切割系统切割出来的文字块,并生成相应的混淆集,以供错别字矫正系统进行进一步的识别矫正,提高识别率。
系统采用CNN网络模型训练文字识别模型,训练数据主要采用中科院开源的手写汉字识别数据集和我司自行标注的大量学生的手写数据集。因为手写汉字识别率不高是一个世界性的难题,所以我们也很难将识别率做到95%以上达到生产标准,因此系统并没有直接返回识别结果,而是对识别结果进一步加工,返回识别结果的混淆集,即返回识别结果的所有可能值,以供错别字矫正系统进行进一步矫正、处理。

错别字矫正

错别字矫正系统主要负责对文字识别系统识别的结果进行进一步矫正,以提高整个系统的识别率,以供批改系统进行进一步批改。
系统首先用文字识别系统返回的结果针对每个句子生成混淆集,然后基于我司的专业语料训练N元语言模型,然后采用该语言模型对混淆集中的所有句子进行评估,评估时会带入针对于单个题目的关键词信息设置系统偏好,最后取评估结果最优的句子作为最终结果返回。

机器批改

机器批改系统主要负责对错别字矫正后的最终结果,即学生的答案进行机器批改,系统主要批改简答题和作文题两大类题型。
简答题的批改主要是基于语义的要点匹配(不是简单地关键词匹配)。而作文题主要从不同的维度对作文进行诊断,如中心论点是否符合要求,语言是否流畅,是否有文采,论据是否足够有说服力,篇章结构是否合理....等等几十个维度,最后通过这几十个维度的指标对文章进行最终评分。

题库配置

题库配置系统较为简单,主要提供给教研人员进行题目录入,要点录入,题库配置等操作。

⬆️