4步把公式截图变成LaTeX代码:pix2tex OCR实战教程
【免费下载链接】LaTeX-OCRpix2tex: Using a ViT to convert images of equations into LaTeX code.项目地址: https://gitcode.com/GitHub_Trending/la/LaTeX-OCR
pix2tex(仓库名 LaTeX-OCR)是一个基于视觉Transformer的数学公式OCR工具:给它一张公式图片,它返回对应的 LaTeX 源码。如果你经常从 PDF 或论文截图里"搬"公式,却只能对着屏幕逐字敲 LaTeX,这篇文章适合你——从安装到出结果,全程不超过 4 步。
先说场景:公式为什么不好复制
PDF 里的公式是"死"的。想引用某篇论文里的一个公式,文字选中复制往往得到一串乱码,手动重打 LaTeX 又费时还容易抄错符号。
pix2tex 干的事情很简单:把"图片 → LaTeX 代码"这一步自动化。你截一张公式图,它输出一段可以直接粘进文档的 LaTeX 源码,再配合任何渲染器就能还原成公式。
它是怎么做到的
模型由两部分拼接而成 🧠:
- ViT 编码器(带 ResNet 主干):负责"看图",把公式图片切块后编码成视觉特征
- Transformer 解码器:负责"写代码",逐 token 生成 LaTeX 序列
官方报告的效果指标为:BLEU 0.88、归一化编辑距离 0.10、token 准确率 0.60。对公式这种短文本来说,这个准确度已经够日常使用。
模型对图片尺寸很敏感,所以 pix2tex 额外训练了一个小的 ResNet(image resizer),自动把输入图缩放到模型最"顺手"的分辨率。源码可以看 pix2tex/models/ 目录,模型定义就在vit.py和transformer.py里。
安装 pix2tex
环境要求只有一个:Python 3.7+(依赖 PyTorch)。
pip install "pix2tex[gui]"方括号里的标签决定装哪套依赖,按需选择:
- [gui]:命令行 + 图形界面(新手推荐,本文主线)
- [api]:额外装 FastAPI,用于起 Web 服务
- [train]:额外装训练相关依赖
- [all]:全部装齐
首次运行时会自动下载模型权重文件,不需要手动找 checkpoint。不想装包、直接读源码的话,也可以克隆仓库(git clone https://gitcode.com/GitHub_Trending/la/LaTeX-OCR)后浏览 docs/installation.md 的完整安装说明。
三条路拿到第一个结果
命令行:处理已有图片
最直接的方式是调用pix2tex命令。传一个图片路径:
pix2tex formula.png不传路径则进入交互模式:提示符下粘贴图片文件路径回车即可预测;在 Windows 和 macOS 上,还能直接把图片拷进剪贴板后按回车。预测结果会同时复制到系统剪贴板,终端里按t=0.1可以随时调节 temperature(采样温度),输入show则用 XeLaTeX 把结果渲染回图片。
图形界面:随手一截就出码
装过[gui]标签后,直接运行:
latexocr窗口弹出后点Snip(快捷键 Alt+S,macOS 上是 Option+S),框选屏幕上的公式,预测结果会即时渲染出来并写入剪贴板。结果不满意就点Retry重跑一次;也可以在窗口底部的 Temperature 滑块上把值调低,让输出更稳定。
在 Python 里当函数用
写脚本、批量处理时,把LatexOCR当普通对象调用:
from PIL import Image from pix2tex.cli import LatexOCR model = LatexOCR() print(model(Image.open("formula.png")))想做成团队内部服务也可以:pip install -U "pix2tex[api]"后运行python -m pix2tex.api.run,会在 8502 端口起一个 FastAPI 服务,接口定义见 pix2tex/api/app.py。
结果不准时,调这两处
- 换分辨率重试:模型偏爱中小分辨率的图。拍得太近、放得太大反而更容易错,退远一点重新截图往往比调参数更管用。
- 调 temperature:温度低,同一张图反复预测输出一致;温度高,每次可能给不同候选。拿不准就调低温度求稳,结果接近正确时再调高试试别的写法。
另外要记住:OCR 不是 100% 的,交付前务必把生成的 LaTeX 通读一遍再渲染确认。
进阶:用数据微调自己的模型
如果你的公式有大量特殊记号(自定义宏、生僻符号),可以用自己的数据训练。流程分三步:
- 生成数据集。把图片路径和 LaTeX 标签的对应关系打包成 pkl:
python -m pix2tex.dataset.dataset --equations math.txt --images imgs/ --out dataset.pkl- 改配置。打开 pix2tex/model/settings/config.yaml,把
data(和valdata)指向刚生成的.pkl,再按需调超参数。 - 开训:
python -m pix2tex.train --config pix2tex/model/settings/config.yaml训练用的数据管线(爬取、渲染成 PNG、LaTeX 归一化)都放在 pix2tex/dataset/ 目录里,想自建数据集可以先翻一遍。
常见疑问速答
- 装完跑不起来?先确认 PyTorch 已正确安装,CPU 环境下加
--no-cuda参数。 - 结果和原图对不上?优先换截图分辨率重试,其次调低 temperature。
- 想要 Web 演示页?API 服务自带 Streamlit 前端,
python -m pix2tex.api.run会同时拉起前后端,浏览器打开 8501 端口即可。 - 想在线体验?仓库 notebooks/ 目录下有现成的 Colab 笔记本,改几行就能跑。
pix2tex 把"截图里的公式"变成了"能编辑的源码",对写文档、整理文献的人是很顺手的小工具。装好之后建议先拿一张论文截图走一遍命令行流程,感受下输出质量,再决定要不要搭 API 服务或微调模型——代码就在手边,动手比读文档更快。
【免费下载链接】LaTeX-OCRpix2tex: Using a ViT to convert images of equations into LaTeX code.项目地址: https://gitcode.com/GitHub_Trending/la/LaTeX-OCR
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考