前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >逆天!手写高数题,拍照自动求解

逆天!手写高数题,拍照自动求解

作者头像
量化投资与机器学习微信公众号
发布2019-05-21 17:30:32
1.7K0
发布2019-05-21 17:30:32
举报
文章被收录于专栏:量化投资与机器学习

标星★公众号 爱你们♥

作者:红色石头

来自:AI有道

近期原创文章:

基于无监督学习的期权定价异常检测(代码+数据)

5种机器学习算法在预测股价的应用(代码+数据)

深入研读:利用Twitter情绪去预测股市

Two Sigma用新闻来预测股价走势,带你吊打Kaggle

利用深度学习最新前沿预测股价走势

一位数据科学PhD眼中的算法交易

基于RNN和LSTM的股市预测方法

人工智能『AI』应用算法交易,7个必踩的坑!

神经网络在算法交易上的应用系列(一)

预测股市 | 如何避免p-Hacking,为什么你要看涨?

如何鉴别那些用深度学习预测股价的花哨模型?

优化强化学习Q-learning算法进行股市

正文

深度好玩!文章开始红色石头先在草稿纸上写一道高数微积分题目给大家看看如何求解:

怎么算呢?趁着高数知识还没忘完,赶紧拿起纸演算起来。大部分人是这么做的。但是如果现在跟你说,可以用 AI 来做,你信吗?

现在就有这样一个 AI 程序,你只要轻松上传上面这张手写算术题,程序就能帮你自动分析,写出解题步骤和答案!你信吗?就像下面一样:

Amazing!有没有!今天就给大家介绍这个有趣的 mathAI 项目。它是一个拍照做题程序。输入一张包含数学计算题的图片,就会自动输出识别出的数学计算式以及计算结果。

项目介绍

该项目名为:mathAI,是一个自动计算手写公式的程序。作者是一名中山大学的学霸硕士小哥 Roujack,他的研究方向就是计算机视觉。

整个程序使用 Python 实现,具体处理流程包括了图像预处理、字符识别、数学公式识别、数学公式语义理解、结果输出。

整个系统流程图如下:

1. 预处理

首先,需要对手写图片进行预处理。图片预处理以 OpenCV 作为主要工具。预处理的主要目的是把图片中的字符切割出来,同时避免无关变量对字符识别的影响。

预处理主要包括:灰度化、二值化、高斯滤波、字符切割与细化。

对图片预处理的效果如下图所示:

2. 字符识别

预处理之后,下一步就是对字符进行识别。选择的模型是卷积神经网络 LeNet5,因为不需要提取字符特征值,而且图像识别精确度高。

训练网络选用的数据集是国际数学公式识别比赛数据集(CROHME)。CROHME 数据集具有海量字符集图片,而且图片类型与实际输入非常相似。每种字符有 400 张图片,其中 60% 的图片用于训练,40% 的图片用于测试。

接下来就是结构分析和语义分析。

总的来说,对于数学公式的识别,主要是将识别出的独立的字符组织成计算机能够理解的数学公式(这里的数学公式就是纯字符的可求解的数学计算题)。大概的方法是使用编译原理的算符优先法和递归下降法进行实现。 然后根据属性文法的值传递思想,将数学公式的值计算出来。最后使用 Python 的 Matplotlib 库把计算过程和答案打印出来。

实验结果

模型训练完成之后,作者验证了字符识别的准确率:

然后,作者对 160 道测试题进行测试,系统做对 127 道题目,正确率为 79.38%。可以说相当不错了!

项目开源

真正令人激动是作者已将这个项目的源码发布在了 GitHub 上,供大家查看。开源地址为:

https://github.com/Roujack/mathAI

GitHub 上公开了系统代码。

其实,这是一个半开源的项目,目前上传的版本只能处理较简单的一维算术表达式(如果想要识别更加复杂的表达式,可以参考数学公式识别的论文)。可以参考的代码是前面字符识别部分以及整个算法处理框架。

例如图像预处理代码:

例如字符识别代码:

运行程序

要运行这个系统分为两种,一种是网页模式,一种是接口模式。

1. 网页模式

在项目的网页上,输入图片,即可获得处理结果。

2. 接口模式

项目有一个 solver 的 Python package。里面的 solve 方法封装了整个系统。其功能是输入一张图片路径,将输出计算题识别过程和计算结果。

作者还专门录制了一个视频,讲解如何在网页模式上运行程序并验证正确率。视频放在下面,感兴趣的可以看一下。

优点与缺点

优点:这是一整套拍照做题的算法框架,同时能够处理多种多样的计算题,目前市面上还没有看到实现。OCR 技术如此成熟的今天字符识别已经不算有挑战的东西了。

缺点:字符空间关系判断只用了人类启发式规则,图像预处理不够鲁棒,数学公式的结构识别算法不够完美(可以考虑使用二维文法来做)。系统还有很大的提升空间。

总的来说,这个程序相对比较简单,能够实现一般的手写图片微积分高数题,较复杂的还不能实现。但是该项目确实是一个有意思的尝试,相信作者也会不断优化。有兴趣的可以看一下,试一试你手写的算术题,看看准确率如何。

MATLAB EXPO 2019 微信直播

免费!免费!免费!

—End—

量化投资与机器学习微信公众号,是业内垂直于QuantMFECST等专业的主流自媒体。公众号拥有来自公募、私募、券商、银行、海外等众多圈内10W+关注者。每日发布行业前沿研究成果和最新资讯。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量化投资与机器学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ♥ 基于无监督学习的期权定价异常检测(代码+数据)
  • ♥ 5种机器学习算法在预测股价的应用(代码+数据)
  • ♥ 深入研读:利用Twitter情绪去预测股市
  • ♥ Two Sigma用新闻来预测股价走势,带你吊打Kaggle
  • ♥ 利用深度学习最新前沿预测股价走势
  • ♥ 一位数据科学PhD眼中的算法交易
  • ♥ 基于RNN和LSTM的股市预测方法
  • ♥ 人工智能『AI』应用算法交易,7个必踩的坑!
  • ♥ 神经网络在算法交易上的应用系列(一)
  • ♥ 预测股市 | 如何避免p-Hacking,为什么你要看涨?
  • ♥ 如何鉴别那些用深度学习预测股价的花哨模型?
  • ♥ 优化强化学习Q-learning算法进行股市
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档