离线LaTex公式识别工具/模型调研
前言
前阶段时间分享过SCI论文公式快捷获取_快速提取论文公式-CSDN博客,提到了论文中的公式的LaTex代码。其中,也列举了几个目前可用的在线识别的网站。
网站 | 限制 | 效果 |
---|---|---|
latexlive | 每天两次,本质是调用Mathpix进行识别。 | 印刷体、手写体均可,基于Mathpix,最好 |
SimpleTex | 普通使用目前无限制,API可以免费调用1000次。但偶尔会出现服务器错误。 | 印刷体、手写体均可,效果挺好 |
Pix2Text (P2T) - live | 所有人都可以免费使用P2T网页版,每人每天可以免费识别 10000 个字符。Pix2Text V1.0 升级了MFR模型,识别效果还不错。 | 印刷体、手写体均可,效果还行,MFR模型提升很大 |
显然,这些工具都只能在线使用,受到很大的约束,当我们在没有网络的环境中根本没法使用。因此寻求离线LaTex公式识别工具显得尤为必要。
之前有幸使用内部机(没法联网)上撰写文档,所以体会很深。所以当时就发现公式识别离线小工具V1.0
这款由万能君的软件库写的“小”软件。将近8个G,一点也不小,但确实解决了我的痛点,最近发现这个软件以及更新到V1.1,支持QQ、微信等截图公式识别。识别正确率还是不错的。
该大佬是基于开源模型NormXU/nougat-latex-ocrs做的一个小工具,有GUI、能复制为MathML,简直不太好用。
AI公式识别离线工具V1.0
AI公式识别离线工具V1.1
这也成了启发我的整合这些开源离线LaTex公式识别工具思路。
下面是我调研的离线识别模型:
开源网站 | 权重大小 | 效果 |
---|---|---|
LaTeX-OCR: pix2tex | 70MB | 较差、印刷体 |
Pix2Text | 150MB | 好、中英文、印刷、手写均可 |
nougat-latex-ocr | 1.4GB | 较好、印刷体、英文 |
texify | 630MB | 良好、印刷体、英文 |
Vary-toy | 7GB | 良好、中英文、印刷 |
在线LaTex公式识别锐评
Mathpix: AI-powered document automation
贵是真的贵,好用是真的好用。希望SimpleTex能后来居上吧,真的用不起哈哈。
latexlive
作者把网站搭建的部分工程源码开源:GitHub - QianJianTech/LaTeXLive: LateX公式编辑器-妈叔出品
MathType语法支持不全之曲线救国以aligned
为例
就简单讲一下它的特殊用法,众所周知MathType对于Latex语法支持不全,比如aligned
环境.
这时候我们就可以借助latexlive把LaTex代码转换为MathML,然后把代码贴回去word——>选择创建一个MathType公式即可。(OMML是word自带的公式编辑器的公式),这就是所谓的曲线救国,当然,显示结果会有一些区别。当然这种情况下,简单的把aligned
改成align
会更快。
SimpleTex
SimpleTex是大学生开发的,这一年多里都是免费的,我是见证者,它在未来的某一天收费了,我也不叹惋,为爱发电这么久确实难能可贵。我最早用临时邮箱注册Mathpix白嫖每月次数,到后来没法白嫖。在后来一段时间里,SimpleTex帮了我很多忙。
其实有不少倾向可以看出SimpleTex准本转向付费了,偶尔出现服务器错误也体现出开发者的服务器压力之大,显然用的人也挺多。有一些非必要的公式其实没必要用SimpleTex去识别,用自己的电脑实现离线LaTex公式更省心,也可以减轻SimpleTex服务器的压力。
Pix2Text (P2T) - live
Pix2Text (P2T) 是Breezedeus大佬的开发的“免费开源”Python替代目Mathpix的工具。Pix2Text 是 2023 年 2 月份发布的初版。需要说明的是这里的开源只是代码开源,模型权重、训练方法并不开源,部分精度较高的模型是需要购买的。
Breezedeus:Pix2Text是坚持走小模型+“开源”的路线,模型大小得保证在一般的CPU机器上能跑得动,代码和基础模型都开源,同时也提供精度更高的付费模型供购买后个人或商业使用。
事实上,Pix2Text的基础模型还是不错的,能识别手写体、印刷体。
可以就看到Breezedeus给出的模型中CER(字错误率)是相对较低的。
这里有必要说一下Texify
的识别错误率为什么这么高,主要是因为Texify
的测试针对的是印刷体训练的,因此对于手写体的识别是较差的,大佬给的数据集中是有这类字体。
就是相要更好地精度得买付费模型还挺贵的(训练方法不开源没办法自己针对性训练一个,当然一定程度上阻止了某些不良公司的)。付费模型分为MFD+MFR两个模型,要分开买。
讲真,赚钱嘛,不寒碜。没有GUI是最大的痛点。
Pix2Text V1.0详细信息可以看:Pix2Text V1.0 新版发布,带来了最好的开源公式识别模型 | Breezedeus.com
有一说一,Pix2Text最大的优点可能是它对于多国语言的支持了。
离线LaTex公式识别
LaTeX-OCR: pix2tex
LaTeX-OCR又称为pix2tex是Lukas Blecher大佬开源的代码,这也是“梦”的开始,很可惜这个项目已经很久没更新的。据说SimpleTex最早也是借鉴于此,Pix2Text更不必说了,1.0之前的框架就是LaTeX-OCR。
具体的使用方法见下面这篇博文
Pix2Text
Pix2Text V1.0,最大变化是 MFR 使用了新的模型架构,精度得到极大提升。之前的模型架构来自于 Latex-OCR ,可惜这个项目基本不更新了,其代码质量也很一般,各种依赖包也很陈旧,维护成本太高。
Pix2Text V1.0 移除了对 Latex-OCR 这个项目的依赖,新的 MFR 模型架构使用了微软的 TrOCR 。Pix2Text V1.0 开源的 MFR 模型,其识别数学公式图片的精度已经远超作者所知的各种开源模型,如 Latex-OCR,Texify,和 Pix2Text 之前版本的所有 MFR 模型(包括付费模型),已经可以与 Mathpix 以外的其他商用模型掰掰手腕了。
P2T 使用开源工具 CnSTD 检测出图片中数学公式所在位置,再交由 P2T 自己的公式识别引擎(LatexOCR) 识别出各对应位置数学公式的Latex表示。图片的剩余部分再交由 文字识别引擎(CnOCR 或 EasyOCR) 进行文字检测和文字识别。最后 P2T 合并所有识别结果,获得最终的图片识别结果。
MFD
免费版开源的模型只有yolov7_tiny的版本,效果差一些。
mfd-yolov7_tiny.pt
付费版本是
mfd-yolov7-20230613.pt
模型地址:breezedeus/cnstd-cnocr-models at main (huggingface.co)
MFR
免费版本
./def/mfr/
付费版本
a./def/mfr-pro-onnx
Pix2Text开源,有代码很容易在本地部署,确定是没有GUI。
模型地址:breezedeus/pix2text-mfr at main (huggingface.co)
nougat
nougat: Implementation of Nougat Neural Optical Understanding for Academic Documents是Facebook提出一个端到端可训练的编码器-解码器transformer模型,将科学文档处理成标记语言。端到端的特性使得它并不是像LaTex—OCR那样分阶段检测,而是一步到位,输入图片,直接输出LaTex代码。
该方法不依赖于 OCR 或嵌入式文本表示,而是完全依赖于OCR的文档页面。该方法不仅在从数字生成的 PDF 中提取文本方面,而且在转换扫描论文和教科书方面都显示出了巨大的潜力。
该模型是针对arXiv上发布的 1,748,201 篇文章处理得到的数据集进行训练的。没有手写数据集、也没有中文字体,所以对于手写公式识别堪忧。
因此该模型对于针对性的公式识别还是有点勉强。
模型地址:facebook/nougat-base at main (huggingface.co)
nougat-latex-ocr
大佬NormXU针对facebook/nougat-base使用im2latex-100k 进行了微调加强训练得到nougat-latex-ocr,以提高其从图像生成 LaTeX 代码的熟练程度。 由于nougat的初始编码器输入图像大小不适合方程图像段,导致潜在的重新缩放伪影,从而降低 LaTeX 代码的生成质量。为了解决这个问题,基于 Nougat-LaTeX 调整输入分辨率并使用自适应填充方法来确保调整视野外方程图像段的大小以与训练数据的分辨率紧密匹配。
模型的信息如下:
model | token_acc ↑ | normed edit distance ↓ |
---|---|---|
pix2tex | 0.5346 | 0.10312 |
pix2tex* | 0.60 | 0.10 |
nougat-latex-based | 0.623850 | 0.06180 |
模型地址:Norm/nougat-latex-base at main (huggingface.co)
texify
Texify 是VikParuchuri开发的 OCR 模型,可将包含数学的图像或 pdf 转换为可由 MathJax 渲染的 Markdown 和 LaTeX($$ 和 $ 是分隔符)。它可以在 CPU、GPU 或 MPS 上运行。
模型地址:vikp/texify at main (huggingface.co)
性能
- Nougat是在arxiv上训练的,可能是基准测试中的图像。
- Pix2tex 是在 im2latex上训练的。
- Texify 接受过im2latex 训练。它是在 arxiv 上训练的,但不是基准测试中的图像。
锐评:看得出Texify的性能还是不错的,但还是得说明的是它比Nougat性能好,但不代表它比nougat-latex-ocr,事实上,通过下载模型进行运行后可以发现其精度并不如nougat-latex-ocr。
局限性
OCR很复杂,texify并不完美。以下是一些已知的限制:
- OCR 取决于您裁剪图像的方式。如果结果不好,请尝试其他选择/裁剪。或者尝试更改
TEMPERATURE
设置。 - Texify 将 OCR 公式和周围的文本,但不适用于通用 OCR。考虑页面的各个部分,而不是整个页面。
- Texify 主要使用 96 DPI 图像进行训练,并且只能以最大 420x420 分辨率进行训练。非常宽或非常高的图像可能无法正常工作。
- 它最适合英语,尽管它应该支持具有类似字符集的其他语言。
- 输出格式将是 markdown,带有嵌入式 LaTeX 的方程式(接近 Github 风格的 markdown)。它不会是纯粹的LaTeX。
Vary
Vary是一种新视觉识别的方法!通过Vary+大模型的方式实现了文档级别的OCR或图表理解等。这些任务需要密集且精细的视觉感知,而传统的CLIP风格的词汇在这些场景中可能效率低下,甚至遇到“词汇外”的问题。为了解决这些问题,Vary应运而生。
Vary通过两个阶段来生成和整合新的视觉词汇:首先设计一个词汇网络和一个小型解码器-仅有的变压器,通过自回归生成所需的词汇;然后通过合并新词汇和原始词汇(CLIP)来扩展原始视觉词汇,使LVLMs能够快速获取新特征。与流行的BLIP-2、MiniGPT4和LLAVA相比,Vary在保持原始能力的同时,展现出更出色的细粒度感知和理解能力。
Vary-toy
Vary-toy是一个小型的视觉语言模型(LVLM),由来自旷视、国科大、华中大的研究人员共同提出,旨在解决大型视觉语言模型(LVLMs)在训练和部署上的挑战。Vary-toy的核心目标便是让研究人员能够在有限的硬件资源下,体验到当前LVLMs的所有功能(文档OCR、视觉定位、图像描述、视觉文答等).
- 文档级光学字符识别(OCR):Vary-toy能够识别和理解文档图像中的文字,这在处理扫描文档、PDF文件等场景中非常有用。
下面是官方给出的Demo。
要使用的话,需要下载两个模型。
openai/clip-vit-large-patch14 at main (huggingface.co)
HaoranWei/Vary-toy at main (huggingface.co)
总结
好的调研到此告一段落了,接下来我将花一些时间将Nougat-LaTex
、Pix2Text
、Texify
模型整合到一起,实现LaTex公式的离线识别。
思路就是简单的借用pix2tex
的gui
,将截图的预测结果输入到Nougat-LaTex
、Pix2Text
、Texify
模型中,输出预测的LaTex
代码,能在有CPU\GPU的电脑上识别。利好内部机撰写文档。