LaTeX-OCR
基于 Vision Transformer 的数学公式 OCR 工具,一键将公式图片转换为 LaTe
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于 Vision Transformer 的数学公式 OCR 工具,一键将公式图片转换为 LaTe
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:你在一篇 PDF 论文里看到一行漂亮的积分公式,想把它用到自己的笔记里,但只能手敲 LaTeX 代码——不仅慢,还容易敲错。或者你在黑板上推导了一道题,想快速分享给同学,却只能拍照截图。现在,pix2tex(LaTeX-OCR) 把这件事变得前所未有的简单:给它一张公式图片,它就能"读懂"并输出对应的 LaTeX 代码。

图1:pix2tex 将手写或印刷的数学公式图片转换为 LaTeX 代码
pix2tex 的作者 Lukas Blecher 是一位计算机科学研究者。在日常写论文、做笔记的过程中,他频繁遇到需要将数学公式转换为 LaTeX 的场景——从 PDF 里截图、从黑板上拍照、或者引用他人的手写推导。手动转录不仅耗时,还容易出错。市场上虽然有一些商业工具,但要么收费,要么不支持复杂的数学符号。
于是,他决定自己动手,从零训练了一个基于 Vision Transformer(ViT) 的深度学习模型。项目于 2020 年开源,迅速在学术圈和教育领域传播开来,目前 GitHub Stars 已超过 16,000,成为 LaTeX OCR 领域最具影响力的开源项目之一。
pix2tex 的本质是一个图像到文本的序列生成模型——给定一张公式图片,输出一串 LaTeX token 序列。它的工作流程可以类比为两个阶段:
第一阶段:图像预处理——找到最佳"观察距离"
直接用原始分辨率的图片效果并不好。pix2tex 引入了一个额外的图像预处理网络(image resizer),基于 ResNetV2 架构。这个网络的任务是根据输入图片的内容,预测一个最优的缩放比例,将图片调整到最适合 OCR 处理的分辨率。这相当于给模型装上了"自动对焦镜头",让它在各种尺寸的图片上都能稳定工作。
第二阶段:Vision Transformer 编码 + Transformer 解码
调整后的灰度图片被切分成 16×16 的小块(patch),每个 patch 通过线性投影映射为一个向量,组成一个序列。这些 patch embeddings 加上位置编码后,输入标准的 Vision Transformer(ViT) 编码器,提取图片的空间和语义特征。
解码器是一个 Transformer Decoder,接收编码器的输出和已经生成的 token 序列,逐步预测下一个 token(类似 GPT 的自回归生成方式)。解码器采用了相对位置偏置(Relative Position Bias)和 cross_attend 机制,能够有效捕捉 LaTeX 序列中符号之间的上下文依赖关系。
配置参数揭示了模型规模:dim=256,heads=8,num_layers=4,num_tokens=8000(词表大小),属于轻量级模型。训练数据来自大规模渲染的公式图片 + 人工生成的 LaTeX 代码。
pix2tex 提供了三种不同的使用入口,覆盖了从极客到普通用户的全场景:
pip install "pix2tex[gui]"
pix2tex --file path/to/equation.png
支持从磁盘读取图片或直接从剪贴板读取截图,输出 LaTeX 代码。pix2tex 命令行工具内部封装了完整的图像加载、预处理、推理和结果输出流程,代码清晰,适合集成到自动化脚本中。
安装 [gui] 扩展后,运行 pix2tex 会弹出一个 PyQt6 图形界面。界面内置截图工具,截取屏幕任意区域后,模型自动推理,结果以 MathJax 渲染预览,并一键复制到剪贴板。如果对结果不满意,可以点击"重试"按钮,模型会输出多个候选结果供选择。
GUI 界面还支持拖拽图片文件直接处理,以及 LaTeX 到 SymPy 符号表达式的转换(借助 latex2sympy2),方便进一步数学计算。
# pip 安装并启动 API
pip install "pix2tex[api]"
python -m pix2tex.api.run
# 或用 Docker(推荐)
docker run --rm -p 8502:8502 lukasblecher/pix2tex:api
项目提供了基于 FastAPI 的 RESTful API 服务,以及基于 Streamlit 的可视化 Web 界面。API 支持 POST 上传图片,返回 LaTeX 代码。Docker 镜像约 13GB,预装了所有依赖,一行命令即可在服务器上部署一个 LaTeX OCR 服务,供团队共享使用。
除了本地部署,pix2tex 还提供了多个零门槛在线体验入口:
| 层级 | 技术选型 |
|---|---|
| 深度学习框架 | PyTorch + timm(ResNetV2 backbone) |
| Transformer 库 | HuggingFace Transformers(PreTrainedTokenizerFast) |
| 界面框架 | PyQt6 / PySide6(桌面 GUI)、Streamlit(Web UI) |
| API 框架 | FastAPI + Uvicorn |
| 数学处理 | latex2sympy2(LaTeX → SymPy) |
| 训练追踪 | Weights & Biases(wandb) |
| 图像处理 | Pillow、NumPy |
pix2tex 的模型本身是轻量级的(约几十 MB),但运行需要:
[gui] 扩展依赖 PyQt6 / PyQt6-WebEngine 和 pynput,在部分 Linux 发行版上安装较为繁琐。Docker 方式部署可以规避依赖地狱。推荐部署方式:直接使用官方 Docker 镜像,最快 3 分钟内完成 API 服务部署。
尽管 pix2tex 表现优秀,但它并非完美:
pix2tex 填补了开源社区在公式 OCR 领域的空白。在它之前,Mathpix 是该领域最知名的商业工具(每月免费额度有限),而 pix2tex 提供了完全免费、可本地部署的替代方案。
项目采用 MIT 许可证,模型权重在 GitHub Releases 开放下载,吸引了大量开发者和教育工作者的关注。截至目前,项目已有超过 16,000 颗 Stars,在 Hugging Face 上有配套的 Spaces 应用,已成为 AI + 教育交叉领域的标杆开源项目。
pix2tex(LaTeX-OCR) 是一款将数学公式图片转换为 LaTeX 代码的深度学习工具,基于 Vision Transformer 架构,通过图像预处理 + ViT 编码 + Transformer 解码的流程实现高准确率的公式识别。它提供了 CLI、桌面 GUI 和 API 三种使用方式,支持 Docker 一键部署,适合学术写作者、理工科学生和教育工作者使用。如果你经常需要处理 PDF 中的公式、写 LaTeX 文档,或制作数学类教学内容,这款工具值得一试。