如何把公式图片变成 LaTeX 代码:3 步上手 pix2tex 的完整指南
【免费下载链接】LaTeX-OCRpix2tex: Using a ViT to convert images of equations into LaTeX code.项目地址: https://gitcode.com/GitHub_Trending/la/LaTeX-OCR
pix2tex(LaTeX-OCR)是一款开源的公式图片识别工具:给它一张数学公式的截图或照片,它直接输出对应的 LaTeX 代码。它提供命令行、图形界面和 HTTP 接口三种用法,适合写论文的学生、阅读学术资料的程序员,以及任何经常要录入公式的人。
公式录入的痛点,它能解决多少
写论文、整理笔记时,你大概率遇到过这种场景:PDF 里有一个关键公式,需要敲进自己的 LaTeX 文档,积分号、上下标、分式一个个手打,既慢又容易敲错符号。pix2tex 做的事就是把这个过程反过来——用深度学习模型"读懂"图片里的公式,逐字符预测出 LaTeX 源码。
模型结构是一个视觉 Transformer(ViT)编码器加 ResNet 骨干网络,再接一个 Transformer 解码器(术语白话:前者负责"看图",后者负责"写字")。官方给出的测试指标为:BLEU 分数 0.88、归一化编辑距离 0.10、token 准确率 0.60。这意味着常见学术公式多数能一次识别到位,但个别符号仍可能出错,成稿前留一步人工核对是必要的。
另外两个内置能力值得知道:一个小型辅助网络会自动估算输入图片的最佳分辨率,你不需要手动缩放图片;图形界面里用 MathJax 实时渲染识别结果,识别完成后代码会自动进剪贴板。
三步装好并跑通第一次识别
前提环境:Python 3.7+,并已装好 PyTorch(按官方安装指引即可)。
安装([gui]标签会带上图形界面的依赖):
pip install "pix2tex[gui]"首次运行会联网自动下载模型权重文件到本地缓存目录,之后离线可用。然后直接处理一张公式图片:
pix2tex path/to/formula.png终端会打印识别出的 LaTeX 代码,同时自动复制到剪贴板,粘贴进编辑器即可。
典型任务演练
任务一:识别一张公式图,或直接截图识别
命令行方式,一次可以传入多个文件:
pix2tex formula1.png formula2.png不带参数运行pix2tex则进入交互模式:输入文件路径回车识别;Windows 和 macOS 上把图片拷进剪贴板后直接按回车即可;输入t=0.25调整采样温度,show本地渲染预览,katex在浏览器里渲染,no_resize关闭自动缩放,输入x退出。
不想碰命令行的话,运行latexocr打开图形界面:按 Alt+S(macOS 上是 Option+S)框选屏幕上的公式区域,识别完成后上方用 MathJax 实时渲染公式,下方代码框可在 Raw、LaTeX-$、LaTeX-$$、Sympy 四种输出格式间切换,点击 Retry 可对同一张图重新识别,temperature 滑杆范围 0~1。
任务二:批量识别,或起一个 HTTP 服务
图片数量较多时,把多个文件名一次性传给命令行即可;交互模式里也可以对同一张图反复重跑直到结果满意。
需要以服务形式调用时(比如接入自己的工作流),安装 API 依赖并启动:
pip install "pix2tex[api]" python -m pix2tex.api.run服务监听 8502 端口,基于 FastAPI 实现:向POST /predict/上传图片文件、向POST /bytes/传图片字节数组,都直接返回 LaTeX 字符串。也可以改用 Docker 镜像,省去本地依赖:
docker pull lukasblecher/pix2tex:api docker run --rm -p 8502:8502 lukasblecher/pix2tex:api任务三:接入自己的 Python 项目
如果公式识别只是你某个脚本里的一环,直接以库的形式调用:
from PIL import Image from pix2tex.cli import LatexOCR img = Image.open('formula.png') model = LatexOCR() print(model(img)) # 输出识别出的 LaTeX 代码模型实例化一次后可反复调用,避免重复加载权重。
实用建议
建议这样做:截图只框住公式主体,背景保持干净。白色或浅色背景、公式清晰无遮挡的截图识别效果最稳。
避免这样做:截图前把图片放大到很大。模型本身在中小分辨率图片上表现最好,虽然内置的自动缩放网络会尝试把大图缩小到最像训练数据的尺寸,但官方说明它处理超大图片并不完美,盲目放大反而得不偿失。
建议这样做:拿到结果后人工核对一遍,尤其是复杂公式。结果存疑时按 Retry 或换个分辨率重新截图再识别一次。
建议这样做:想要结果稳定就调低 temperature,想要多种可能就把调高。温度越低输出越确定,越高越随机(命令行里输入t=0.XX即时生效)。
常见问题
现象:首次运行很慢或中途失败。解决办法:正在联网下载模型权重,检查网络后重试;权重会缓存在系统用户数据目录的 pix2tex 文件夹中,下载成功后后续运行不再需要联网。
现象:同一张图每次识别结果都不一样。解决办法:这是采样温度带来的随机性,调低温度(如t=0.1)输出会趋近一致;也可以多按几次 Retry,挑一个渲染正确、且与图中公式一致的结果。
现象:Linux 下 GUI 的截图功能不可用。解决办法:系统缺少截图工具。安装 gnome-screenshot,或在 wlroots 系 Wayland 合成器上装 grim 与 slurp、KDE 上装 spectacle;必要时用环境变量SCREENSHOT_TOOL显式指定使用哪个工具。
现象:没有显卡,CPU 推理等待时间较长。解决办法:模型会自动检测并使用 GPU,没有则回退 CPU。CPU 场景下把图片分辨率控制得小一些(截图时别放大过多)可以明显缩短等待时间。
写在最后
用熟了之后,录入公式的体验会接近"复制粘贴":截图、回车、粘贴,剩下的交给模型完成。
参考资料:
- 安装文档:docs/installation.md
- 模型配置:pix2tex/model/settings/config.yaml
- API 服务实现:pix2tex/api/app.py
【免费下载链接】LaTeX-OCRpix2tex: Using a ViT to convert images of equations into LaTeX code.项目地址: https://gitcode.com/GitHub_Trending/la/LaTeX-OCR
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考