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:功能相近,免费开源,适合个人和小型项目

坑与注意

  1. 结果必须复核:模型并非 100% 准确,复杂公式(长分式、嵌套积分、矩阵)偶尔会出错。官方建议用 Retry(重试) 按钮换不同分辨率重新识别,或调节 Temperature 参数控制随机性。

  2. 图片分辨率控制:模型内置了一个预处理网络,会自动预测输入图片的最佳缩放比例以匹配训练数据分布。但不要放大到极限截图——超大幅面的图片效果反而差,建议在合理缩放比例下截取公式。

  3. 环境兼容性问题: - Python 3.13 有 albumentations 兼容问题(Arch Linux AUR 有人报告),建议用 Python 3.10–3.12 - huggingface-hub 版本要求 <1.0(部分版本约束较严格),若因此报错降级即可:pip install 'huggingface-hub<1.0'

  4. 模型下载需访问 HuggingFace:首次运行会自动下载模型权重(约 200MB),国内可能需要代理或提前手动下载。

  5. 手写公式支持有限:官方承认手写识别"有点做到了",但远不如印刷公式效果好,不要对复杂手写公式抱太高期望。

  6. 不支持彩色背景自动抠图:截图建议白底黑字效果最佳,深色模式截图建议先预处理。


与同类对比

工具 类型 费用 精度 上手难度
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,但日常场景完全够用。