一位叫Roger的中国学霸小哥的拍照做题程序mathAI一下子火了,这个AI,堪称数学解题神器。

输入一张包含手写数学题的图片,AI就能识别出输入的数学公式,然后给出计算结果。

不仅加减乘除基本运算,就连高等数学中的微积分都不在话下。

就像下面这样:

还在苦苦纠结高数作业如何求解?还在东奔西走的找学霸借作业?手握mathAI,不就是手握了新时代的解题利器么!

短短几天时间,这个项目在微博就收获了上百次转发。看到画风如此新奇,似乎还能开启无限可能应用,网友们纷纷召唤自己的印象笔记小助手收藏,大呼:牛逼,以后教宝宝数学就是它了。

作者表示,这个项目已经是半开源状态了,目前开源的部分可以识别计算加减乘除简单运算。

如果想要识别更加复杂的表达式,可以参考数学公式识别的论文自己进行扩展。

具体来看看这个解题神器。

实现过程

全能型选手mathAI是怎么实现这个功能的?

作者在Github中介绍说,整个程序使用python实现,具体处理流程包括:图像预处理→字符识别→数学公式识别→数学公式语义理解→结果输出。

整个系统的处理流程如下:

图片预处理主要以OpenCV作为主要工具,将图片中的字符单独切割出来,避免无关变量对字符识别的影响。

随后,国际数学公式识别比赛数据集(CROHME)对通过卷积神经网络进行训练。

此外,还进行结构分析,对字符的空间关系进行判定。比如一个字符的上标和下标,含义自然不一样。

在语义分析阶段,就需要汇集上面得到的信息,判断运算该如何进行了。节点属性传递过程如下图所示:

作者在用160道手写测试题进行了测试:

结果表明,平均字符识别率达到了96.23%,且系统做题的平均正确率达到了79.38%。

上手实操

来,实际上手操作下。

作者给出两种使用模式:网页模式和接口模式。接口模式比较直观,只需打开网页上传图片即可自动给出解题结果。

下面以接口模式为例介绍一下mathAI的安装使用方法。

首先需要安装flask虚拟环境、科学计算库numpy、sympy等,它们都可以用pip安装。


 
pip install flaskpip install virtualenv
pip install virtualenv

将项目的lib.zip文件解压到系统目录的venv文件夹下。(lib.zip可以回复lib获取)

配置置好运行环境后,用PyCharm打开下载好的项目,在载入过程中,PyCharm会自动安装好项目依赖的软件库。

使用命令行进入项目所在目录,并启动虚拟环境:


 
. venv/bin/activate

将FLASK_ENV环境变量设置为启用开发模式:


 
export FLASK_ENV=development

然后使用指令运行flask网站框架:


 
export FLASK_APP=welcome.pyflask run
flask run

打开浏览器,在地址中输入127.0.0.1:5000,即可打开项目网页。在网页中输入一张包含数学公式的图片,就好返回运算结果。

目前GitHub项目页上的代码只支持加减乘除这样的简单运算。

中国少年

做出这个自动求解系统的,还是一位中国少年。

这位GitHub ID为Roger,本名罗文杰,是中山大学数据科学与计算机学院的研一在读硕士生,主要攻读计算机视觉方向。

不仅这个解题神器,在小哥哥的GitHub主页上还能看到其此前参与的很多有趣研究。

比如这个基于帖子的校园互助交友平台LiBond。用户可以在里面发布任务,然后使用虚拟币荔枝进行交易。

罗同学的设想是,有空闲时间的同学可以在此平台上帮助他人,然后结交好朋友,荔枝币还能用来兑换喜欢的物品。

再比如,一个基于C++的无禁手五子棋AI,可以通过openGL实现图形界面。

在这个项目中,罗同学使用了最经典的极大极小博弈树、alpha-beta剪枝、置换表等算法,还附上了核心代码。

确认过眼神,是学霸无疑了。

传送门

最后,附上神器的Github地址:

https://github.com/Roujack/mathAI

里面还附有Demo使用的word、ppt和视频教程~

高数解题神器:拍照上传就出答案,这个中国学霸做的AI厉害了 | Demo的更多相关文章

  1. Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等

    仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 微信 微信 微信 ...

  2. HTML打开摄像头,进行拍照上传

    html代码 <%@ page language="java" contentType="text/html; charset=utf-8" pageEn ...

  3. iOS拍照上传后,在web端显示旋转 Swift+OC版解决方案

    问题描述: 手机头像上传,遇到一个怪现象,就是拍照上传时,手机端显示头像正常,但在web端查看会有一个左旋90度的问题. 并且照片竖怕才会有此问题,横拍不存在. 原因分析: 手机拍照时,用相机拍摄出来 ...

  4. html5调用手机摄像头,实现拍照上传功能

    今天做手机网站,想实现手机扫描二维码功能.首先实现在浏览器中调用手机摄像头,实现拍照功能并且把拍下的照片显示在页面并上传到服务器上,然后再在服务器端进行分析. 首先实现在浏览器中调用摄像头,当然用现在 ...

  5. 【Demo】HTML5 拍照上传

    本文主要讲解 手机浏览器 如何拍照 为什么会有这个需求 最近做一个项目要用到拍照然后上传照片,但是网页拍照一般都是用Flash做的,而我们主要是H5页面,如果在微信里面有权限就可以通过JSSDK调起摄 ...

  6. Android4.4 + WebAPI 实现拍照上传

    网上有很多关于拍照上传的实现方法,如果用新版本android去运行有可能会发现根本实现不了.主要原因是android从4.4版本开始通过intent.ACTION_GET_CONTENT打开选择器后, ...

  7. php实现手机拍照上传头像功能

    现在手机拍照很火,那么如何使用手机拍照并上传头像呢?原因很简单,就是数据传递,首先手机传递照片信息,这个就不是post传递 也不是get函数传递, 这个另外一种数据格式传递,使用的是$GLOBALS ...

  8. webAPP如何实现移动端拍照上传(Vue组件示例)?

    摘要:使用HTML5编写移动Web应用,主要是为了尝试一下“一套代码多处运行”,一个webapp几乎可以不加修改的运行在PC/Android/iOS等上面运行.但是写到现在觉得虽然这种方式弊大于利,不 ...

  9. HTML5手机端拍照上传

    1.accept="image/*" capture="camera" 自动调用手机端拍照功能 accept="image/*" captu ...

随机推荐

  1. C++走向远洋——64(项目三、数组类模板)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  2. 疫情期,如何用A/B测试快速迭代你的产品?

    作者:友盟+数据科学家 杨玉莲.陆子骏 冠状病毒来袭牵动着每个人的心,但是病毒影响的不仅仅是我们的健康,也以极快的速度极深远地影响了整个移动互联网的发展.主流阵地原本在线下的需求,如医疗和生鲜电商,快 ...

  3. Java树结构

    今天在项目中,运用到了Java树结构,是在一个查询中,选择树结构例如图片 该结构采用了前段的最新的知识,通过xml结构的数据库,后端Spring的映射实现的. 代码示例: 数据库: <!-- 取 ...

  4. CSS+JS相应式导航菜单

    响应式导航菜单 响应式导航菜单就是当网页在其他不同视口的样式,不同的设备需要不同的样式 需要掌握的知识 - 掌握媒体查询,如果你不是很懂那就看我写的CSS响应式布局 掌握CSS重的display:no ...

  5. 探索 Redux4.0 版本迭代 论基础谈展望(对比 React context)

    Redux 在几天前(2018.04.18)发布了新版本,6 commits 被合入 master.从诞生起,到如今 4.0 版本,Redux 保持了使用层面的平滑过渡.同时前不久, React 也从 ...

  6. [转帖]RSYNC 的核心算法

    RSYNC 的核心算法 https://coolshell.cn/articles/7425.html rsync是unix/linux下同步文件的一个高效算法,它能同步更新两处计算机的文件与目录,并 ...

  7. 使用AtomicStampedReference<T>的大坑

    //在初始化的时候会把引用和时间戳存到pair中 AtomicStampedReference<Integer> integerAtomicStampedReference = new A ...

  8. 基于 HTML5 WebGL 的发动机 3D 可视化系统

    前言     工业机械产品大多体积庞大.运输成本高,在参加行业展会或向海外客户销售时,如果没有实物展示,仅凭静态.简单的图片说明书介绍,无法让客户全面了解产品,不仅工作人员制作麻烦,客户看得也费力.如 ...

  9. 微信小程序修改request合法域名不生效及解决方法

    在小程序微信公众平台修改后请求,依然在console中显示修改前的域名. 解决:在小程序开发者工具中点击“详情”后点击“域名信息”,就会自动刷新

  10. Angular入门之环境搭建(VS code)(转载)

    安装Visual Studio Code VS code和我们常用的VS压根不是一回事,它只是一个开源的轻量级编辑器,而不是IDE,因为支持typescript语法,且插件功能丰富,所以选择 官网下载 ...