lukas-blecher/LaTeX-OCR · 上手攻略
- 仓库:lukas-blecher/LaTeX-OCR
- 链接:https://github.com/lukas-blecher/LaTeX-OCR
- 分类:计算机视觉 · 学术写作工具
- 作者:Jay
- 更新:2026-07-14
这是什么
LaTeX-OCR(开源包名 pix2tex)是一个基于深度学习的 OCR 工具,专门把数学公式的图片还原为 LaTeX 代码。输入一张公式截图,输出对应的 LaTeX 文本——支持印刷公式也支持部分手写公式。
它由 ViT(Vision Transformer)编码器 + ResNet 主干网络 + Transformer 解码器 组成,在 im2latex-100k 等公开数据集上训练,评测指标为 BLEU 0.88、归一化编辑距离 0.10、Token 准确率 0.60(官方自测)。
核心场景是:把 PDF 里的公式、PPT 截图、教科书照片直接转成可编辑的 LaTeX 代码,省去逐字敲公式的痛苦。
解决什么问题
写学术论文或技术文档时,经常需要把别人论文里的公式"搬"到自己的 LaTeX 文档里。传统做法是手动辨认每个符号再敲代码,效率极低。LaTeX-OCR 把这件事自动化了——截个图,等几秒,复制粘贴走人。
另一个典型场景是从 PPT 或白板照片提取公式,比 Mathpix Snippet(收费)多一个免费选项。
快速安装
环境要求
- Python 3.7+
- PyTorch(需提前安装)
- Linux / macOS / Windows 均支持
安装步骤
# 若未安装 PyTorch,先装(CUDA 版本按需替换)
pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
# 安装 pix2tex(含 GUI 支持,含模型下载)
pip install "pix2tex[gui]"
# 若只要 CLI,去掉 gui 即可
pip install pix2tex
⚠️ 模型权重(约 200MB)首次运行会自动下载,确保网络畅通。国内可配 pip 镜像,但模型从 HuggingFace 下载,需能访问 HuggingFace。
⚠️ Python 3.13 用户注意:部分依赖(如 albumentations)与 Python 3.13 存在兼容性问题,建议使用 Python 3.10–3.12。Arch Linux AUR 有人反馈此问题。
核心用法
1. 命令行工具(CLI)
处理本地图片或剪贴板图片:
# 处理指定路径的图片
pix2tex path/to/equation.png
# 从剪贴板读取图片并输出 LaTeX
pix2tex --clipboard
# 查看帮助
pix2tex --help
2. 图形界面(GUI)
截图识别,最直观的方式:
latexocr
界面会提示截图,选中公式区域后自动识别,结果通过 MathJax 实时预览,并复制到剪贴板。
Wayland/Linux 用户注意:GUI 默认优先用 gnome-screenshot。若使用 wlroots 类 compositor(如 Sway)或其他桌面环境,需设置环境变量切换截图工具:
# wlroots / Sway
export SCREENSHOT_TOOL=grim
# KDE Plasma
export SCREENSHOT_TOOL=spectacle
3. Python API(最灵活)
from PIL import Image
from pix2tex.cli import LatexOCR
img = Image.open('path/to/equation.png')
model = LatexOCR()
latex_code = model(img)
print(latex_code)
支持批量处理或集成到流水线。
4. API 服务(Streamlit 界面)
如果想在浏览器里用,或需要 HTTP 接口:
# 安装 API 依赖
pip install -U "pix2tex[api]"
# 启动服务(默认端口 8502)
python -m pix2tex.api.run
# 浏览器访问 http://localhost:8502
5. Docker 部署(最省心)
不需要 Python 环境,直接跑容器:
# 拉取 API 镜像
docker pull lukasblecher/pix2tex:api
# 运行 API
docker run --rm -p 8502:8502 lukasblecher/pix2tex:api
# 若要同时跑 Streamlit 界面
docker run --rm -it -p 8501:8501 --entrypoint python lukasblecher/pix2tex:api pix2tex/api/run.py
# 浏览器访问 http://localhost:8501
典型适用场景
- 论文写作:从他人 PDF/PPT 中提取公式,快速转 LaTeX
- 笔记整理:把教科书或讲义里的公式截图归档为可编辑代码
- 批量转换:用 Python API 批量处理一批公式图片
- 集成到工具链:作为流水线一环,把截图自动转为 LaTeX 再进一步处理
- 免费替代 Mathpix:功能相近,免费开源,适合个人和小型项目
坑与注意
-
结果必须复核:模型并非 100% 准确,复杂公式(长分式、嵌套积分、矩阵)偶尔会出错。官方建议用 Retry(重试) 按钮换不同分辨率重新识别,或调节 Temperature 参数控制随机性。
-
图片分辨率控制:模型内置了一个预处理网络,会自动预测输入图片的最佳缩放比例以匹配训练数据分布。但不要放大到极限截图——超大幅面的图片效果反而差,建议在合理缩放比例下截取公式。
-
环境兼容性问题: - Python 3.13 有 albumentations 兼容问题(Arch Linux AUR 有人报告),建议用 Python 3.10–3.12 -
huggingface-hub版本要求<1.0(部分版本约束较严格),若因此报错降级即可:pip install 'huggingface-hub<1.0' -
模型下载需访问 HuggingFace:首次运行会自动下载模型权重(约 200MB),国内可能需要代理或提前手动下载。
-
手写公式支持有限:官方承认手写识别"有点做到了",但远不如印刷公式效果好,不要对复杂手写公式抱太高期望。
-
不支持彩色背景自动抠图:截图建议白底黑字效果最佳,深色模式截图建议先预处理。
与同类对比
| 工具 | 类型 | 费用 | 精度 | 上手难度 |
|---|---|---|---|---|
| LaTeX-OCR (pix2tex) | 开源本地 | 免费 | 中上(BLEU 0.88) | 低 |
| Mathpix Snippet | 商业 SaaS | 收费(免费额度有限) | 高 | 低 |
| Offline Math OCR | 开源桌面 | 免费 | 中 | 中 |
| Nebo | 商业 App | 免费/付费 | 高(手写) | 低 |
| LaTeX-OCR + Google Colab | 在线运行 | 免费(GPU) | 中上 | 中 |
一句话对比:Mathpix 精度更高但收费;LaTeX-OCR 是目前最成熟的开源免费方案,适合日常轻量使用和集成调用。
一句话推荐结论
如果你经常需要把公式图片变成 LaTeX 代码,LaTeX-OCR 是目前最好用的免费开源选项——安装简单、CLI/GUI/API 三种入口随手可用,虽然精度略逊于收费的 Mathpix,但日常场景完全够用。