只需要把公式图片用鼠标拖动到工具内,就能一键转成 LaTex 公式。

写论文、做研究时,最让你头疼的是什么?想必公式编辑会榜上有名。那么有没有便捷的方法进行公式编辑呢?这里推荐一款神器,它使用 PyTorch Lightning 可将 LaTeX 数学方程的图像映射到 LaTeX 代码。

它的效果是这样的,输入一张带公式的图片,它能转换成 LaTeX 代码形式:

而它的名字也是很直接的,就叫做「Image to LaTex Converter」,把产品功能写在了明面上。

项目地址:https://github.com/kingyiusuen/image-to-latex

网友表示:我太需要这个了。

也有网友表示,你也可以使用 CLIP 来实现,因为这个工具是将完整的方程拆分为单个字符。

此前,很多人都在用 Mathpix Snip,这个工具虽然好用,但是只能提供 50 次免费转换。之后,一位中国开发者也创建了一款类似工具「Image2LaTeX」,用户输入公式截图即可以自动将其对应的 LaTex 文本转换出来。效果也虽好,不过也只是提供了 1000 次从文档中提取公式的能力。

此次项目的创建者为明尼苏达大学双城分校计量心理学博士生 King Yiu Suen,他本科毕业于香港中文大学,致力于研究评估心理测试和教育评估的统计学方法,以及测试响应数据的建模。

该项目为何能够一键转换成 LaTex 公式?这要都得益于背后使用的数据集和模型。

项目背后的数据集与模型

作者也对打造过程进行了详细的介绍。2016 年,在 Yuntian Deng 等作者合著的一篇 OCR 主题论文《What You Get Is What You See: A Visual Markup Decompiler》中,他们介绍了叫做「im2latex-100K」的模型(原始版本和预处理版本),这是一个由大约 100K LaTeX 数学方程图像组成的数据集。

作者使用该数据集训练了一个模型,使用 ResNet-18 作为具有 2D 位置编码的编码器,使用 Transformer 作为具有交叉熵损失的解码器。这个过程类似于《Full Page Handwriting Recognition via Image to Sequence Extraction》Singh et al. (2021) 中描述的方法,不过作者只使用 ResNet up to block 3 来降低计算成本,并且去掉了行号编码,因为它不适用于这个问题。


Singh et al. (2021) 论文中的系统架构。

最初,作者使用预处理数据集来训练模型,因为预处理图像被下采样到原始大小的一半以提高效率,而且分组并填充为相似的大小以方便批处理。但结果表明,这种严格的预处理被证明是一个巨大的限制。尽管该模型可以在测试集(其预处理方式与训练集相同)上取得合格的性能,但它并不能很好地泛化到数据集之外的图像,这很可能是因为其他图像质量、填充和字体大小与数据集中的图像不同。

使用相同数据集尝试解决相同问题的其他人也发现了这种现象。下图这位开发者试图从论文中裁剪图像,图像与数据集中的图像大小相似。但即使对于简单的公式,输出也会完全失败:

为此,作者使用了原始数据集并在数据处理 pipeline 中包含了图像增强(例如随机缩放、高斯噪声)以增加样本的多样性。此外,作者没有按大小对图像进行分组,而是进行了均匀采样并将它们填充为批次中最大图像的大小,以便模型必须学习如何适应不同的填充大小。

作者在使用数据集中遇到的其他问题包括:

  • 一些 LaTex 代码生成了视觉上相同的输出,比如 \left (和 \ right),看起来与 (和)) 一样,因此做了规范化处理;

  • 一些 LaTex 代码用来添加空间,比如 \ vspace {2px} 和 \ hspace {0.3mm})。但是,间距对于人类来说也很难判断。此外,表述相同间距有很多方法,比如 1 cm = 10 mm。最后,作者比希望模型在空白图像上生成代码,因此删除了这些空白图像。

不过,该项目也有一些可能需要改进的地方:

  • 更好地数据清理(比如删除间距命令)

  • 尽可能多地训练模型(由于时间原因,只训练了 15 个 epoch 的模型,但是验证损失依然下降)

  • 使用集束搜索(只实现了贪婪搜索)

  • 使用更大的模型(比如 ResNet-34 而不是 ResNet-18)

  • 进行一些超参数调优

作者使用的是 Google Colab,计算资源有限,因此并没有做到以上这些。

项目的使用与部署

在项目设置方面:首先你需要将该项目克隆到计算机,并将命令行放置到库文件夹中:

git clone https://github.com/kingyiusuen/image-to-latex.git
cd image-to-latex

然后,创建一个名为 venv 的虚拟环境并安装所需的软件包:

make venv
make install-dev

在数据预处理方面:执行如下命令下载 im2latex-100k 数据集并进行所有预处理任务(图像裁剪可能需要一个小时):

python scripts/prepare_data.py

在模型训练方面:启动训练 session 的命令如下:

python scripts/run_experiment.py trainer.gpus=1 data.batch_size=32

你可以在 conf/config.yaml 中修改配置,也可以在命令行中修改。

在实验跟踪方面:最佳模型 checkpoint 将自动上传到 Weights & Biases (W&B)(在训练开始前你需要先进行注册或登录 W&B )。如下是从 W&B 下载训练模型 checkpoint 的示例命令:

python scripts/download_checkpoint.py RUN_PATH

将 RUN_PATH 替换为运行的路径,运行路径格式为 //<run_id>。如果你想查找特定实验运行的运行路径,请转到 dashboard 中的 Overview 选项卡进行查看。

例如,你可以使用如下命令下载最佳运行:

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

checkpoint 将被下载到项目目录下一个名为 artifacts 的文件夹中。

测试和持续集成方面:以下工具可用于 lint 代码库:

  • isort:对 Python 脚本中的 import 语句进行排序和格式化;

  • black:遵循 PEP8 的代码格式化程序;

  • flake8:在 Python 脚本中报告风格问题的代码检查器;

  • mypy:在 Python 脚本中执行静态类型检查。

使用下面的命令来运行所有的检查和格式化程序:

make lint

在部署方面:训练好的模型通过创建的 API 进行预测,启动和运行服务器命令如下:

make api

要运行 Streamlit 应用程序,请使用以下命令创建一个新的终端窗口:

make streamlit

应用程序应该在浏览器中自动打开,你也可通过 http://localhost:8501 / 进行查看。想让这个应用程序运行,你还需要下载实验运行的工件,启动并运行 API。

为 API 创建一个 Docker 映像:

make docker

推荐一下个人的公众号:

【注】在微信里搜索“满目山河m”或者微信扫描二维码都可以关注微信公众号。

图片识别转公式,GitHub 又一 LaTeX 神器面世!相关推荐

  1. 图片识别转公式,GitHub 又一 LaTeX 神器面世

    只需要把公式图片用鼠标拖动到工具内,就能一键转成 LaTex 公式. 写论文.做研究时,最让你头疼的是什么?想必公式编辑会榜上有名.那么有没有便捷的方法进行公式编辑呢?这里推荐一款神器,它使用 PyT ...

  2. 调用图片文件夹中的任意图片随机显示_他来了,他来了,Mathpix拜拜了~~~文字、表格、公式图片识别神器V0.1测试版...

    (图0) img2txt V0.8 [正式版] 第1步:win10自带截图快捷键:Win+Shift+S,也可以用QQ等截图工具: 第2步:打开软件,完成初始配置(后续调用无需再配置),按需识别: ( ...

  3. python识别latex公式_Python代码转Latex公式,这个开源库用一行代码帮你搞定

    来源:机器之心 数学是数据科学和机器学习的重要基础,数学运算的结果对于机器学习项目而言是至关重要的.在编写代码时,我们常常需要定义数学公式的计算形式.像 S=r^2 这样简单的数学公式,大概不会出现拼 ...

  4. 如何把表格做成源代码_他来了,他来了,文字、表格、公式图片识别神器V0.1测试版...

    他来了,他来了,Mathpix拜拜了~~~ 文字.表格.公式图片识别神器V0.1测试版 俺不是标题党!!! 开发背景 日常工作中经常遇到大量的图片版文本.表格.公式需要编辑: 用手敲?也太OUT了吧, ...

  5. 公式图片转latex神器Mathpix以及latex公式与word公式的相互转换

    公式图片识别为latex 平时在写东西的时候时常有进行公式输入的需要,比如说看了一篇论文写点东西记录一下什么的.但是在写东西的时候手动抄着那些复杂的公式让人有一种在搬砖的错觉(我之前写文档抄公式的时候 ...

  6. 【Win神器】文字、表格、公式图片识别 V0.2

    文字.表格.公式图片识别 V0.2版(如下图) (图0) 更新说明 (1)直接在新窗口展示识别结果 (2)win10自带截屏快捷键:Win+Shift+S (3)文字识别快捷键:Ctrl+b (4)表 ...

  7. 图片转换为word公式与word公式转换为latex

    图片转换为word公式与word公式转换为latex 觉得有用的话,欢迎一起讨论相互学习~ 公式图片识别为latex 官网地址:https://mathpix.com/ 官方测试PDF:https:/ ...

  8. 【Overleaf】网页版LaTex速成:插图片,在线公式表格生成,引用参考文献。

    准备投论文,然后官网下载了word模板改的巨无敌辛苦,后来听说overleaf好用. overleaf是latex的网页版,可以直接网页使用.很妙的是,最近发现它可以关联ORCID,还可以用插件检查语 ...

  9. LaTex, 矩阵方程插入 和图片表格以及公式跨栏插入

    LaTex排版技巧: 矩阵方程怎么插入 文章分两栏时图片表格以及公式如何跨栏 1,矩阵方程插入: \begin{equation} \left[ \begin{array}{cccc} {S_b}({ ...

  10. Unity | 总结:OCR文字识别、公式识别

    一.功能简介: 最近在做一个项目:运用OCR文字识别.公式识别.手写英文识别等AI技术,当用户批量导入图片或者PDF文件时可快速识别为可编辑文本,该项目主要功能有: 印刷体识别.手写英文识别: 公式识 ...

最新文章

  1. Codeforces 785 D.Anton and School - 2(组合数处理)
  2. Java EE之旅02 CSS基础
  3. 5分钟了解CDN 加速原理 | +新书推荐
  4. 【LeetCode笔记】35. 搜索插入位置(Java、二分法)
  5. python curl 获取返回值_python获取系统命令的返回值 | curl in python
  6. 判断一个整数是否是回文数
  7. php post请求超时,php用curl提交post数据,本地测试服务器OK,线上超时,需要如何排除问题?...
  8. AssetBundle的一些笔记
  9. (转载)c++builder/delphi中透明panel及透明窗口的实现方法_delphi教程
  10. 2021-09-23各个国家简称以及收手机区号
  11. 使用DataV制作实时销售数据可视化大屏
  12. 考研计算机320分什么水平,考研320分算什么水平,能上211、985吗?很多人都答不上...
  13. 【NOIP 2018 提高组】填数游戏
  14. 计算机毕业设计系列基于SSM的养老保险管理系统
  15. JAVA简单计算器(简单实现两数加减乘除)
  16. Amazon CloudWatch 介绍/学习
  17. 关于计算机方面的一些数学书
  18. python实现远程控制
  19. clinvar数据库
  20. 订单可视化(智能制造、流程再造、企业信息化) 第六篇 万事开头难,第一阶段的得与失...

热门文章

  1. [学习SLAM]数学中的几何变换-向量叉乘/旋转轴、旋转角度和旋转矩阵/坐标系变换
  2. ITIL 2011 -- 服务运营的5个流程简介 (上)
  3. 盘点人工智能十大经典应用领域、图解技术原理
  4. phpstudy 403 forbidden
  5. OPENCV(七)对啤酒盖进行缺陷检测
  6. 国内外RTI产品调查情况(转)
  7. oracle数据库综合练习题及答案写法
  8. 二维码编辑网站推荐,哪个更好用?
  9. 3D游戏引擎设计与实现1-15
  10. BFM(Bus Functional Model )--总线功能模型