Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/roujack/mathai
一个拍照做题程序。输入一张包含数学计算题的图片,输出识别出的数学计算式以及计算结果。This is a mathematic expression recognition project.
https://github.com/roujack/mathai
compiler-principles expression-recognition opencv pattern-recognition tensorflow
Last synced: 4 days ago
JSON representation
一个拍照做题程序。输入一张包含数学计算题的图片,输出识别出的数学计算式以及计算结果。This is a mathematic expression recognition project.
- Host: GitHub
- URL: https://github.com/roujack/mathai
- Owner: Roujack
- License: mit
- Created: 2018-10-13T08:43:27.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-12-13T02:14:38.000Z (about 4 years ago)
- Last Synced: 2025-01-18T11:05:37.939Z (4 days ago)
- Topics: compiler-principles, expression-recognition, opencv, pattern-recognition, tensorflow
- Language: Python
- Homepage:
- Size: 77.8 MB
- Stars: 2,322
- Watchers: 83
- Forks: 566
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# mathAI
一个拍照做题程序。输入一张包含数学计算题的图片,输出识别出的数学计算式以及计算结果。
**请查看系统文档说明来运行程序。注意,这是一个半开源的项目,目前上传的版本只能处理简单的一维加减乘除算术表达式(如果想要识别更加复杂的表达式,可以参考数学公式识别的论文)。可以参考的代码是前面字符识别部分以及整个算法处理框架。**
![image](https://github.com/Roujack/mathAI/blob/master/test.png)整个程序使用python实现,具体处理流程包括了图像预处理、字符识别、数学公式识别、数学公式语义理解、结果输出。
本程序使用opencv对输入的图像进行预处理,并将字符裁剪出来再归一化成固定大小的矩阵。我在TensorFlow上实现了一个lenet5
的卷积神经网络用来识别数学字符,训练使用CHROME数据集。对于数学公式的识别,主要是将识别出的独立的字符组织成计算机能够
理解的数学公式(这里的数学公式就是纯字符的可求解的数学计算题)。大概的方法是使用编译原理的算符优先法和递归下降法进行实现。
然后根据属性文法的值传递思想,将数学公式的值计算出来。最后使用python的matlibplot库把计算过程和答案打印出来。优点:这是一整套拍照做题的算法框架,同时能够处理多种多样的计算题,目前市面上还没有看到实现。OCR技术如此成熟的今天字符识别
已经不算有挑战的东西了。
缺点:字符空间关系判断只用了人类启发式规则,图像预处理不够鲁棒,数学公式的结构识别算法不够完美(可以考虑使用二维文法来做)。
系统还有很大的提升空间。