写博客时,数学公式的编辑比较占用时间,在上一篇中详细介绍了如何在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. Charles抓包工具永久破解+https抓包需要安装安全证书+防止请求乱码

    1.charles4.5.6版本安装+永久破解 链接:https://pan.baidu.com/s/1Z49AE6TG2IXUY-7qoyGU4g 提取码:3i97 安装好charles之后,把下载 ...

  2. 论文笔记:(2021CVPR)PAConv: Position Adaptive Convolution with Dynamic Kernel Assembling on Point Clouds

    目录 摘要 1.引言 2.相关工作 将点云映射到常规二维或三维栅格(体素) 基于MLPs的点表示学习 基于点卷积的点表示学习 动态卷积和条件卷积 3.方法 3.1 回顾 3.2 动态内核组装 Weig ...

  3. C++动态内存管理与源码剖析

    引言 在本篇文章中,我们主要剖析c++中的动态内存管理,包括malloc.new expression.operator new.array new和allocator内存分配方法以及对应的内存释放方 ...

  4. 堪称教科书级别的Android音视频入门进阶学习手册,开源分享!

    概述 随着整个互联网的崛起,数据传递的形式也在不断升级变化,总的流行趋势如下: 纯文本的短信,QQ -> 空间,微博,朋友圈的图片文字结合 -> 微信语音 -> 各大直播软件 -&g ...

  5. 一个工业级、跨平台、轻量级的 tcp 网络服务框架:gevent

    前言 作为公司的公共产品,经常有这样的需求:就是新建一个本地服务,产品线作为客户端通过 tcp 接入本地服务,来获取想要的业务能力.与印象中动辄处理成千上万连接的 tcp 网络服务不同,这个本地服务是 ...

  6. Java-Mybatis动态SQL整理

    XML映射器 SQL映射文件的几个顶级元素: cache - 该命名空间的缓存配置 cache-ref - 引用其他命名空间的缓存配置 resultMap - 描述如何从数据库结果集中加载对象 sql ...

  7. 清理docker常用命令

    0.查看docker占用空间docker system df1.一键删除所有已经停止的容器 docker container prune 2.删除所有容器(包含停止的 正在运行的) docker rm ...

  8. Jackson格式化时间和科学计数法问题

    1. 首先如果有自定义   WebMvcConfigurer 或者 WebMvcConfigurationSupport 的,一定不要在上面加 @EnableWebMvc 注解,因为这个注解会覆盖掉s ...

  9. 常见web中间件漏洞(三)Nginx漏洞

    nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,有  开源,内存占用少,并发能力强,自由模块化,支持epoll模型,可限制连接数,支持热部署,简单 ...

  10. S3C2440—10.代码重定位

    文章目录 一.启动方式 1.1 NAND FLASH 启动 1.2 NOR FLASH 启动 二. 段的概念 2.1 重定位数据段 2.2 加载地址的引出 三.链接脚本 3.1 链接脚本的引入 3.2 ...