一种自动求解数学题的方法和系统

文档序号:1490757 发布日期:2020-02-04 浏览:5次 >En<

阅读说明:本技术 一种自动求解数学题的方法和系统 (Method and system for automatically solving mathematical problem ) 是由 谢晓华 罗文杰 赖剑煌 于 2019-09-04 设计创作,主要内容包括:本发明公开了一种自动求解数学题的方法和系统,方法包括:获取待求解的数学题信息,并转化成对应的图像矩阵信号;对图像矩阵信号进行数学题的定位、字符分割与识别,得到字符序列;对识别出的字符序列进行空间结构分析和语义分析,从而实现数学计算题自动求解。本发明识别字符过程中使用了定位、字符切割和字符细化方法,在字符识别上运用了字符识别的分类器。进行空间结构分析和语义分析时,生成一颗解析树,最后对解析树进行语法制导翻译从而实现计算题的自动求解。本发明避免了只能通过键盘输入数学计算题的弊端,只要定义好数学题的类型和符号,就可以自动求解该类型的题目,因此可处理更多类型的题目,有更好的实用性以及更高的准确性。(The invention discloses a method and a system for automatically solving a mathematical problem, wherein the method comprises the following steps: acquiring mathematical problem information to be solved, and converting the mathematical problem information into corresponding image matrix signals; positioning, character segmentation and recognition of a mathematical problem are carried out on the image matrix signal to obtain a character sequence; and carrying out spatial structure analysis and semantic analysis on the recognized character sequence so as to realize automatic solving of the mathematical calculation problem. The invention uses positioning, character cutting and character thinning method in the character recognizing process, and uses the character recognizing classifier in character recognition. And generating a parse tree during spatial structure analysis and semantic analysis, and finally performing grammar guidance translation on the parse tree so as to realize automatic solving of the calculation problem. The invention avoids the disadvantage that only mathematical calculation questions can be input through a keyboard, and the questions of the type can be automatically solved as long as the types and symbols of the mathematical questions are defined, so that more types of questions can be processed, and the method has better practicability and higher accuracy.)

一种自动求解数学题的方法和系统

技术领域

本发明涉及人工智能研究领域,特别涉及一种自动求解数学题的方法和系统。

背景技术

数学计算题让不少学生头疼不已。为了辅导学生做数学计算题,老师和家长们需要花费大量时间复习数学知识并进行重复琐碎的计算。如果一个程序可以自动求解数学计算题,学生就可以独立完成数学计算题并对比参***。

为了满足这个需求,有研究人员提出建立一个能够对数学计算题进行识别并自动求解的系统。在这个系统中,用户通过摄像头拍照或者手写的方式输入一道数学计算题,系统输出数学计算题识别结果,并给出求解步骤和答案。这个系统的使用场景有很多,比如将纸质的数学文献数字化,永久保存在电子存储器件上。该系统还可以识别书本上的数学公式,将其音频化,给有视力障碍的人学习数学知识使用。在教育领域里,该系统可以帮助学生给出其解决数学计算题的思路和计算过程,还可以帮助老师自动更改数学作业题。

尽管目前的光学字符识别技术已经十分成熟,但是市面上的文档识别软件只能处理一维的文字。而数学计算式有其复杂的二维空间关系、嵌套关系。这使得识别数学公式变得十分困难。大部分前人的工作专注于数学公式的定位、切割、识别、结构分析,很少有人深入研究数学公式的语义分析。靳简明提出使用统计特征和结构特征来对单个字符进行识别,然后将识别的表达式分解为一系列的子表达式进行结构分析,最后按LaTeX格式输出识别出的数学公式。陈颂光使用先粗分类、再细分类到模板匹配,最后结合字符间的位置和部分识别结果的方法,对数学符号进行识别。在结构分析中采用盒子合并法自底向上合并出一个完整的表达式,即为识别出的表达式。上面两篇文章处理的对象都是机器打印的字体,并没有涉及手写数学公式的识别。此外,他们只停留在结构分析阶段,并没有对数学公式进行语义分析和自动求值。

有不少软件能够实现自动搜题的功能。小猿搜题、百度搜题等软件对用户上传的图片进行预处理、切分、然后使用深度学习技术对字符进行识别,经过这些步骤,将题目转化成文字,然后在长期积累的题库中进行搜索和题目相似度排序,最终返回题目答案以及解析。小猿搜题、百度搜题里面用到了图像处理、字符识别、题库匹配等技术,但是也没有对数学公式进行语义分析和自动求解,而是通过前面录入的题库来进行解题,这样遇到新的同类型的问题程序将不能很好的工作。而手机应用商店一款APP叫做“爱作业”,其功能可以拍照批改口算题。该APP能够准确识别出图片中的多个口算题,也对数学计算式进行了结构分析和语义分析,并给出正确批改结果。但是只能处理小学算术计算题、分数表达式等,并不能识别变量和数学函数符号。

为了解决以上技术及方法的不足之处,研究一种可以自动求解数学题的方法和系统具有较大的研究意义和实用价值。

发明内容

本发明的目的在于克服现有的拍照搜题方法的不足,提供一种实用性强、不会造成题目与答案不符合、适用题型多的基于人工智能技术的自动求解数学题的方法和系统。

本发明的目的通过以下的技术方案实现:一种自动求解数学题的方法,包括步骤:

(1)获取待求解的数学计算题信息,并转化成对应的图像矩阵信号;

(2)对图像矩阵信号进行数学计算题的定位、字符分割与识别,得到字符序列;

(3)结合字符序列的类别、大小、空间坐标信息,对数学计算题进行结构分析,方法是使用基于句法规则的方法来解析数学计算题,不断地合并字符序列,最终得到数学计算题的树形结构的表示即解析树;

(4)根据符号的数学语义规则,定义解析树节点的属性以及计算方法;后序遍历解析树,自底向上地传递解析树节点的属性值,最后得到根节点的属性值;把根节点的属性值作为数学计算题的答案,完成数学计算题的自动求解。

作为本发明的优选方案,所述步骤(1)中,待求解的数学计算题信息为下面任意一种形式:包含数学计算题的图像、手写的数学计算题文本轨迹、数学计算题文档的扫描件。数学计算题包括初等数学、高等数学、线性代数、概率论等在内的计算题。

作为本发明的优选方案,所述步骤(1)中,将对图像矩阵信号I先进行预处理,预处理方法是:先进行阈值化处理,再高斯平滑,再使用图像的形态学方法对图像进行去噪,得到预处理后图像I1。避免无关因素的影响。

作为本发明的优选方案,所述步骤(2)中,对图像矩阵信号进行数学计算题的定位,方法是:通过连通体分析或者投影法划分图像不同的文本区域,使用深度学习技术对这些文本区域提取特征进行分类,分类的类别包含文本区域和公式区域两种,公式区域即为数学计算题的位置区域。

作为本发明的优选方案,所述步骤(2)中,对定位后的数学计算题进行字符分割和识别,方法是:构建一个数学符号库,根据该数学符号库的定义,对每一个符号收集一定数量的手写体样本作为数据集,使用深度学习目标检测模型进行训练,得到一个用于识别数学符号的分类器;对图像矩阵信号中的符号进行识别,得到识别出的字符序列{c1,c2,c2,...,cn};该序列的每一个元素包含了字符的类别、大小、空间坐标信息。

作为本发明的优选方案,所述步骤(3)中,对数学计算题进行结构分析,方法是:

(3-1)根据字符的类别、大小、空间坐标信息,设计一个自动机去识别数学公式的元素,组成数学公式的最小元素序列{t1,t2,...,tn},序列的每一个元素ti至少由一个数学符号组成,这些元素构成数学计算题的最小单位;

(3-2)定义数学计算题的句法规则,通过语法分析去识别数学计算题的结构;在分析计算题的结构过程中,根据句法规则不断地合并数学元素成为子树,直到最后得到一颗数学计算题语义的解析树T。

更进一步的,步骤(3-2)中,构造一个语法分析器来识别数学计算题的结构,该语法分析器接收元素序列作为输入,使用算符优先法或者递归下降法来分析数学计算题的结构。

作为本发明的优选方案,步骤(4)中,根据解析树进行语义分析实现数学计算题的自动求解,方法是:

(4-1)对解析树T,先根据数学符号的数学含义,编写出树节点的属性以及对应计算方法;

(4-2)语义分析进行自下而上的语法分析,采用后序遍历解析树的方式实现对数学计算式的自动求解,具体是:后序遍历解析树的属性值,每个节点根据自己的节点类型调用自己的计算方法,然后再把计算结果返回给父节点;最后解析树的根节点将会得到数学计算题答案;

(4-3)得到数学计算题的LaTeX格式输出和计算步骤以及求解结果,返回给用户,从而实现自动求解数学计算题的功能。

更进一步的,步骤(4-1)中,树节点的属性至少包括状态属性和值属性,状态属性表示该节点是否已经计算,该节点是否是常数还是变量等;值属性是根据数学语义计算得到的结果。

一种自动求解数学题的系统,包括:

信息获取模块,用于获取待求解的数学计算题信息,并转化成对应的图像矩阵信号;

字符提取模块,用于对图像矩阵信号进行数学计算题的定位、字符分割与识别,得到字符序列;

结构分析模块,用于结合字符序列的类别、大小、空间坐标信息,对数学计算题进行结构分析,方法是使用基于句法规则的方法来解析数学计算题,不断地合并字符序列,最终得到数学计算题的树形结构的表示即解析树;

语义分析模块,用于根据符号的数学语义规则,定义解析树节点的属性以及计算方法;后序遍历解析树,自底向上地传递解析树节点的属性值,最后得到根节点的属性值;把根节点的属性值作为数学计算题的答案,完成数学计算题的自动求解。

本发明与现有技术相比,具有如下优点及有益效果:

1)本发明可以通过摄像头拍摄的照片或者手写设备或者扫描仪输入数学计算题,避免了只能通过键盘输入数学计算题的弊端,构成了手写数学计算题的识别和自动求解问题一整套完整算法,具有更好的实用性。

2)本发明通过识别数学计算题的结构和语义,进而实现自动求解数学计算题,只要定义好数学计算题的类型和符号,就可以自动求解该类型的题目。因此,这种方法理论上是可以处理丰富多样的题目,例如包含算术运算、分式运算、求定积分,方程求解、求导数、求极限在内的多种数学题目。

3)本发明通过识别数学计算题的结构和语义,进而自动求解数学计算题的方法,与目前通过识别文本并搜索题库的方法有本质的区别。搜索题库的方法遇到题库不存在的题目容易输出与题目不符合的答案,但是本发明的方法在定义良好的数学题型和符号的情况下都会返回正确的题目解析。

附图说明

图1是本发明的方法流程图;

图2是本发明实施例中数学符号库示例;

图3是本发明实施例构建的一棵数学计算题解析树;

图4是本发明实施例中自动求解数学计算题流程;

图5是本发明的自动求解运算题示意图。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

实施例1

如图1所示,本实施例提出一种自动求解数学题的方法,该方法基于人工智能技术,用户可通过拍照或者手写的方式输入数学计算题,然后系统自动定位数学计算题的位置,对其进行识别和自动求解,并将识别结果和参***返回给用户。该方法在图片预处理上使用了计算题定位、字符切割和字符细化方法,而在字符识别上则运用了字符识别的分类器。该分类器使用类似于支持向量机或者卷积神经网络等模型。作为在数学计算题的结构分析和语义分析阶段,该系统使用结构分析和文法分析相结合的方法生成一棵解析树,最后对解析树进行语法制导翻译从而实现计算题的自动求解。

其实施过程的算法流程如图1所示,实施步骤如下:

S1:用户通过智能终端输入数学计算题信息,这里所述的智能终端指一切可以向系统输入数学计算题信息的设备,智能终端包括但不限于移动设备的摄像头、支持手写的电子设备以及具备扫描文档功能的设备。所述的数学计算题信息具体指的是包含数学计算题的图像、手写的数学计算题文本轨迹、数学计算题文档的扫描件。数学计算题包括初等数学、高等数学、线性代数、概率论等在内的计算题。

本实施例中,通过用户拍照得到包含数学计算题的图片(图2(a)),首先对图像进行预处理,具体包括彩色图片灰度化(图2(b))、高斯滤波(图2(c))、形态学去噪、二值化处理等,得到二值图像。如图2所示,经过预处理之后的图像I1在通过连通体分析的方式定位出数学计算题所在的位置,然后进行轮廓检测(图2(d))、字符切割(图2(e))、提取字符骨架(图2(f))。对提取的字符骨架予以保存,用于后续的字符识别。

S2:构建数学符号库,如下表所示:

表1构建的数学符号库

Figure BDA0002190726230000061

该符号库有32个数学字符,能够组成大多数数学计算题类型。根据该符号库的定义,对每一个符号收集一定数量的手写体样本作为数据集。本实施例采用识别在线手写数学公式比赛(CROHME)所积累的数据集。然后定义一个深度学习技术的分类网络-VGG模型,使用数据集进行训练,最后得到一个可以识别数学符号的分类器。对步骤(1)切割好的符号序列进行识别,得到识别出的符号序列{c1,c2,c2,...,cn},该序列的每一个元素包含了数学符号的大小、位置、类别等信息。

S3:识别出符号序列之后,需要对数学计算题进行结构的分析,最后获得解析树。具体包括:

(3-1)对于长度大于1的数字和小数等,它们由几个数学符号构成,但是它们也是数学计算题的一个独立单元,因此根据符号的空间关系、类别、大小信息,设计一个自动机去识别数学公式的元素,最后组成一个数学计算题的最小元素序列{t1,t2,...,tn};

(3-2)随后,对于每一种类型的数学计算题,定义一种组成规则;比如,算术表达式和积分表达式的组成规则可以写成如下形式:

<算术表达式>→<子表达式>[+|-|×|÷]<子表达式>|(<子表达式>)

<积分表达式>→<积分符>[<积分符下限><积分符上限>]<子表达式><积分变量>

通过这种方式可以定义每一个种数学计算题中不同表达式的构成规则。

(3-3)构造一个语法分析器来分析数学计算题的结构,该语法分析器接收元素序列作为输入,使用算符优先法或者递归下降法来分析数学计算题的结构,最后得出该数学计算题的解析树T。

图3是一棵数学计算题的解析树;该解析树对应的数学计算题为

Figure BDA0002190726230000071

其中树节点可以是数学运算符,也可以是数字或者变量。

(3-4)自动求解数学计算题的答案;后序遍历解析树的属性值,每个节点根据自己的节点类型调用自己的计算方法,然后再把计算结果返回给父节点。最后解析树的根节点将会得到数学计算题答案。

S4:步骤S3识别出的解析树包含了数学计算题的所有语义信息,根据这些信息,可以求出数学计算题的答案。在语义分析过程中,本方法拓展了属性文法和语法制导翻译的技术,将其应用到对解析树的语义分析当中。具体步骤如下:

(4-1)对步骤(3)中所得到的数学计算题解析树T,先根据数学符号的数学含义,编写出树节点的属性以及对应计算方法。解析树节点的属性至少包括状态和值。状态属性表示该节点是否已经计算,该节点是否是常数还是变量等;值属性就是根据数学语义计算得到的结果。根节点的值属性就是数学计算题的答案;同时还需要对不同的节点定义计算方法,比如平方节点就是做平方的计算:平方节点的值=左子树的值右子树的值,积分节点需要先求积分表达式f的原函数F,其中他们满足F'=f,再把积分上限s和积分下限t代入F做差得到积分结果F(s)-F(t)。

(4-2)语义分析将进行自下而上的语法分析,采用后序遍历解析树的方式实现对数学计算式的自动求解。系统根据每种的节点类型定义了一组语义规则,用于计算值和返回LaTeX格式的表达式。在后序遍历过程中,先对子节点计算状态和值,然后依次传递给父节点,最后得到了根节点的值。

图4是自动求解计算题的过程。其中圆圈节点和实线是解析树的结构。虚线是子节点向父节点传递属性信息的步骤。在语义分析阶段,系统先确定子节点的值和状态。比如叶子节点3的值为3,状态为可求值,然后向父节点传递属性信息。在图4中的第1步和第2步,叶节点3和2将属性传递到平方节点,然后平方节点调用自己的计算函数得出3的平方为9,而状态为可求值。叶子节点x系数为2,状态为一次方,值为‘x’。在第3步,x节点向积分节点传递属性值,随后积分节点计算定积分得到值为1,状态为可求值。最终平方节点和积分节点将9和1传递给加号节点,加号节点对值进行相加得到最终的答案10。

S5:经过上述四个步骤后,即完成了数学计算题的识别和自动求解过程,最后打印识别出的数学计算题、计算步骤以及答案给用户,图5是本发明提出的自动求解计算题的一个输出结果示例。

总体来说,从结果可以看到本发明采用的自动求解数学计算题的方法是有效的,在大部分的情况下都能给出正确的求解步骤的答案。本发明的主要贡献在于,站在科技前沿研究自动答题系统,并针对手写数学计算题的识别和自动求解问题提出来一套完整可行的算法框架。相对于其他类似方法,本发明方法特点在于能够识别的符号多,能够处理大多数不同类型的数学计算题,研究的内容具有很强的实用性,不仅可以用于教育领域,还可以应用于数学文献电子化,数学公式终端输入,具有很高的应用价值。

实施例2

本实施例提供一种自动求解数学题的系统,包括:

信息获取模块,用于获取待求解的数学计算题信息,并转化成对应的图像矩阵信号;

字符提取模块,用于对图像矩阵信号进行数学计算题的定位、字符分割与识别,得到字符序列;

结构分析模块,用于结合字符序列的类别、大小、空间坐标信息,对数学计算题进行结构分析,方法是使用基于句法规则的方法来解析数学计算题,不断地合并字符序列,最终得到数学计算题的树形结构的表示即解析树;

语义分析模块,用于根据符号的数学语义规则,定义解析树节点的属性以及计算方法;后序遍历解析树,自底向上地传递解析树节点的属性值,最后得到根节点的属性值;把根节点的属性值作为数学计算题的答案,完成数学计算题的自动求解。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本领域普通技术人员可以意识到,结合本发明中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于yolov3和CNN的盘头标识识别方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!