写博客时,数学公式的编辑比较占用时间,在上一篇中详细介绍了如何在Markdown中编辑数学符号与公式。

https://www.cnblogs.com/bytesfly/p/markdown-formula.html

当然,有时候我们仅仅是想把现成的公式搬到markdown中来编辑,此时如果有工具能把公式截图直接解析成Latex代码就方便了。

刚好这几天看到好几个微信公众号都在推送image-to-latex这个开源项目:

https://github.com/kingyiusuen/image-to-latex

Convert images of LaTex math equations into LaTex code.

该项目当前(2021年09月02日)star人数为631,Fork为81:

最近正好也是在了解机器学习、深度学习相关的东西,于是打算上手感受一下转换效果。

百闻不如一试

其实image-to-latex这个项目的README写得算是比较清楚了,介绍了项目的来龙去脉、可以改进的地方、如何使用等等。

快速开始

下面我把自己第一次尝试的过程简单记录如下:

  • 克隆项目
git clone --depth=1 https://github.com/kingyiusuen/image-to-latex.git

cd image-to-latex

多啰嗦一句:

--depth: 用来指定克隆的深度,1表示克隆最近的一次commit。这种方法克隆是为了减小项目体积的,加快克隆速度,对于那种庞大且活跃的开源项目非常有效。

  • 准备Python环境

该项目依赖Python环境,由于我用的是conda来管理虚拟环境的,不是用venv,所以这里的步骤可能与README上的有一点点差异。

此时应该是在项目目录下,即image-to-latex目录,该目录下有requirements.txt文件。

# 创建新的python3.6环境
conda create --name latex python=3.6 # 激活环境
conda activate latex # 安装依赖
pip install -r requirements.txt

关于Python环境的搭建,可以参考我之前的博客:

https://www.cnblogs.com/bytesfly/p/python-environment.html

  • 下载模型

For example, you can use the following command to download my best run.

到了这步本该是模型训练(Model Training),我这里仅想体验一下,可以直接下载别人已经训练好的模型。

python scripts/download_checkpoint.py kingyiusuen/image-to-latex/1w1abmg1

此时shell显示如下:

(latex) ➜ python scripts/download_checkpoint.py kingyiusuen/image-to-latex/1w1abmg1
wandb: (1) Create a W&B account
wandb: (2) Use an existing W&B account
wandb: (3) Don't visualize my results
wandb: Enter your choice: 3
wandb: You chose 'Don't visualize my results'
Downloading model checkpoint...
Model checkpoint downloaded to image-to-latex/artifacts/model.pt.

下载需要稍微等等,模型有将近2个G的大小。

  • 启动服务

(1) 启动后端服务,执行命令make api

An API is created to make predictions using the trained model.

看下项目的Makefile文件,其实make api就是调用了下面的启动命令:

uvicorn api.app:app --host 0.0.0.0 --port 8000 --reload --reload-dir image-to-latex --reload-dir api

浏览器打开 http://localhost:8000/docs ,看到接口文档如下:

(2) 启动前端界面,执行命令make streamlit

同样,看下项目的Makefile文件,其实make streamlit调用了下面的启动命令:

streamlit run streamlit/app.py

浏览器打开 http://localhost:8501/ ,就是上传图片的界面:

至此,image-to-latex就成功启动了,下面就期待转换公式的效果了!

上手体验

下面我作为一个小白用户,体验一下image-to-latex的转换效果。

我从之前的博客中截图了10个公式,使用下来,感觉当前的效果并非太理想。注意,个别解析出来仅是缺少了右},这种也可以算解析出来了。如下:

测试来看,貌似对多行公式的解析不太好。当然了,有这样的免费工具来辅助我们把公式图片转成Latex代码已经让人挺惊喜了。相信以后随着更多的人参与算法的优化、模型的改善,解析的效果会更好。

写在后面

I found a pretty established tool called Mathpix Snip that converts handwritten formulas into LaTex code.

image-to-latex这个项目的README里也提到了mathpix这个更加成熟的工具。免费版每月能识别50次公式图片。详情见:

https://mathpix.com/

下载试了下,识别的效果确实不错。(注意:非广告,本人与mathpix无任何关系,仅仅试了下而已!!!)

百闻不如一试,动手尝试之后才有发言权。后面有时间会看看image-to-latex的代码实现,学习学习。

百闻不如一试——公式图片转Latex代码的更多相关文章

  1. 对转换公式为LaTeX代码要注意什么

    mathtype是一款专业的数学公式编辑工具,理科生专用的工具.mathtype公式编辑器能够帮助用户在各种文档中插入复杂的数学公式和符号.可以轻松的将数学公式转换成LaTex代码,但是转换LaTeX ...

  2. 将公式直接转化为Latex代码的神器-snip

    经常用latex写论文,免不了要敲各种公式,今天和大家分享一个神器-snip,它可以直接将公式转化为代码,不需要我们自己编写公式代码,方便快捷,准确率极高.该神器的下载地址为:https://math ...

  3. 由Excel表格导出Latex代码

    Latex提供了不少绘制表格的宏包(参见:http://tug.org/pracjourn/2007-1/mori/),但在latex里画表并不直观,特别是在表格比较大的时候,有时候也需要先用Exce ...

  4. 使用Vim写LaTeX代码(Vim+Vimtex+Skim)

    最近在写博客的时候发现对数学公式的支持并不好,于是就想寻找一个解决方案.我本身是一个爱折腾的人,有时尽管有现成的解决方案我有事也不愿意去用.于是多方查找资料,想寻求一个自定义的解决方案,最终把自己的目 ...

  5. jQuery旋转木马仿3D效果的图片切换特效代码

    用jQuery实现的一款仿3D效果的图片切换特效代码,类似旋转木马一样,幻灯图片以三维视觉上下滑动切换,效果很酷炫,兼容IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜 ...

  6. 用php实现百度网盘图片直链的代码分享

    第一种代码:代码量较少通过正则表达式获取百度网盘的文件真实地址,来实现直链的效果 将下面的代码保存为downbd.php 复制代码代码如下: <?php $canshu=$_SERVER[&qu ...

  7. php文字水印和php图片水印实现代码

    本文章向码农们介绍php文字水印和php图片水印实现代码,需要的码农可以参考一下. php 文字水印 文字水印就是在图片上加上文字,主要使用gd库的imagefttext方法,并且需要字体文件. 实现 ...

  8. jQuery轻量级京东图片轮播代码等

    http://sc.chinaz.com/jiaoben/jiaodiantu.html jQuery轻量级京东图片轮播代码   查看全图点击预览 顶(17)踩(4)报错评论(0)下载地址 更新时间: ...

  9. jquery图片无缝滚动代码左右 上下无缝滚动图片

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. 前端基础css(三)

    HTML:用于显示页面的内容 CSS:用于以什么样的形式(样式)去显示 一. 选择器 [1] 标签/元素选择器 (整个页面的所有的相同的标签都显示统一的样式) h1{ font-size: 20px; ...

  2. pytest框架

    1.添加日志 import logging logging.debug('This is debug message') logging.info('This is info message') lo ...

  3. Android系统编程入门系列之界面Activity响应多元的属性动画

    在响应丝滑动画一篇文章中,分别介绍了作用于普通视图.绘制视图的绘制对象.和界面这三种对象的动画效果,但是都有一些使用的局限性.比如这些动画都只是以屏幕上绘制更新的方式绘制动画,并没有真实改变作用对象的 ...

  4. python3中文件/IO编程

    python3的文件操作可谓是我见过所有语言中最舒服的,那我们来一起看一下py3中的文件操作. 1:文件的打开方式有以下几种: 注:以上图表参考菜鸟教程 2:定位读写文件  f = open(&quo ...

  5. 关于 pip 的 15 个使用小技巧

    认识pip 众所周知,pip可以对python的第三方库进行安装.更新.卸载等操作,十分方便. pip的全称:package installer for python,也就是Python包管理工具. ...

  6. 「Leetcode-算法_Easy461」通过「简单」题目学习位运算

    Easy 461.汉明距离 因为原题目翻译效果不佳,这里是笔者自己的理解. 输入两个二进制数 x.y, 输出将 y 变为 x 所需改变的二进制位数,成为汉明距离. 注意: 0 ≤ x, y < ...

  7. Javac 编译器

    编译过程 Javac 编译过程大致可以分为1个准备过程和3个处理过程: 准备过程:初始化插入式注解处理器. 解析与填充符号表过程,包括: 词法.语法分析,将源代码的字符流转变为标记集合,构造出抽象语法 ...

  8. PaddlePaddle之猫狗大战(本地数据集)

    新手入门PaddlePaddle的一个简单Demo--猫狗大战 主要目的在于整体了解PP用卷积做图像分类的流程,以及最最重要的掌握自定义数据集的读取方式 猫狗数据集是从网络上下载到工作目录的. 本项目 ...

  9. Postman API 接口测试、Jenkin 持续集成测试

    Postman 是一个创建和使用API的应用,Postman 对于Web开发者来说非常有用,Postman 带来的便利有很多,诸如: RESTFul接口测试不依赖其他端,进度不受影响 测试脚本即文档, ...

  10. Android 9.0 BufferSlot注解

    源码位置 /frameworks/native/libs/gui/include/gui/BufferSlot.h 源码 struct BufferSlot { BufferSlot() : mGra ...