Texo:仅 20M 参数的 SOTA 级 LaTeX OCR 开源模型
搞科研的,免不了要写 LaTex,常写 LaTex 的,免不了会遇到不知道怎么打的公式,再或者有一堆现成的优美公式,想转换成 LaTex 代码。放几年前,这都是很麻烦的事,焦头烂额搞半天还不一定能做来个所以然。比如之前我一直比较纠结的是 $\sum\limits_{i=0}^{\infty} \frac{1}{2^i}$ 这种符号是怎么把下标放到 sum 符号下面的(秘诀在于添加一个 limits,即 \sum\limits)。这样的小问题遇到一次就知道了解决方案,但第一次解决都免不了要一番折腾与测试。
得益于深度学习的发展,以前很繁琐的事情,现在都能让 AI 轻松解决。
本文要介绍的 Texo (读作 /ˈtɛːkoʊ/),为这个问题提供了一个简单易用的解决方案。作为一个仅包含 20M 参数 的轻量级模型,它不仅保持了 SOTA (State Of The Art) 级别的性能,还能直接在浏览器中运行。
核心特性
Texo 的设计理念是“极简”与“实用”,它具备以下显著特点:
- 极致轻量:仅 20M 参数,推理速度极快。
- 完全开源:基于 AGPL-3.0 协议,免费且开放。
- 低门槛训练:无需购买 4090,在消费级 GPU 上即可进行微调或训练。
- 端侧运行:支持 ONNX 导出,可直接在 浏览器中运行,保护隐私且零延迟。
- 教程级代码:代码结构组织清晰,不仅是工具,也是学习 OCR 模型开发的绝佳教程。
技术架构与性能表现
Texo 本质上是 PPFormulaNet-S 的蒸馏版本 (Distilled Version),并在 UniMERNet-1M 数据集上进行了微调。这种策略使得 Texo 在大幅减少参数量的同时,最大程度地保留了模型的识别精度。
以下是 Texo 在 UniMERNet-Test 数据集上与主流大模型的对比测试结果:
| 模型 | 参数量 | 指标 | SPE | CPE | SCE | HWE |
|---|---|---|---|---|---|---|
| UniMERNet-T | 107M | BLEU | 0.909 | 0.902 | 0.566 | 0.883 |
| Edit Dist | 0.066 | 0.075 | 0.239 | 0.078 | ||
| PPFormulaNet-S | 57M | BLEU | 0.8694 | 0.8071 | - | - |
| Texo-distill | 20M | BLEU | 0.9014 | 0.8909 | 0.7034 | 0.8606 |
| Edit Dist | 0.0780 | 0.1042 | 0.1941 | 0.0995 |
从数据可以看出,Texo-distill 版本在参数量仅为 UniMERNet-T 五分之一的情况下,BLEU 分数(0.9014)与其(0.909)非常接近,且优于 57M 参数的 PPFormulaNet-S。也就是说,Texo-distill 提速不降质,轻量化带来了速度优势,但对识别准确率影响极小。
注:Texo-distill 使用了与 UniMERNet 相同的 Tokenizer,因此序列指标具备严格可比性。
实测体验非常快,图片上传后,识别完成也就不到一秒钟的时间。
快速上手
Texo 提供了非常现代化的 Python 开发体验,推荐使用 uv 进行包管理。
1. 环境配置
git clone https://github.com/alephpi/Texo
uv sync
2. 模型下载
项目提供了便捷的脚本从 Hugging Face 下载模型:
# 仅下载推理模型
python scripts/python/hf_hub.py pull
# 下载包含训练检查点的完整版(适合需要继续训练的开发者)
python scripts/python/hf_hub.py pull --with_useful_ckpts
3. 推理演示
下载完成后,可以直接运行项目中的 demo.ipynb 文件,体验从图片到 LaTeX 代码的转换过程。
训练指南
对于希望基于 Texo 进行二次开发或微调的研究者,作者提供了详细的训练指引。得益于轻量化的设计,硬件要求非常亲民。
硬件要求
- 最低配置:20G CPU 内存(配合流式数据加载) + 16G 显存(配合梯度累积)。这意味着高端游戏显卡(如 RTX 4080/4090)即可尝试训练。
- 推荐配置:50G CPU 内存 + 40G 显存。
- 作者环境:50G CPU 内存 + NVIDIA A40/L40S (46G)。
数据集准备
Texo 使用 UniMER-1M 数据集。为了方便开发者,作者提供了已经整理和归一化处理后的版本:
启动训练
项目使用 hydra 管理配置,支持灵活的训练启动方式:
# 启动标准训练
python src/train.py
# 从指定检查点恢复训练
python src/train.py training.resume_from_ckpt="<ckpt_path>"
# 调试模式 (快速验证代码)
python src/train.py --config-dir="./config" --config-name="train_debug.yaml"
训练过程的日志和可视化数据(Loss 曲线、BLEU 分数等)会自动保存在 outputs 目录,可通过 TensorBoard 查看。
小结
LaTex 小问题可以直接问 deepseek 或者豆包,但如果你对 LaTeX OCR 项目感兴趣,或者想自己搭建一个轻量级的离线 LaTeX OCR 方案,Texo 绝对值得一试。
资源
- GitHub 仓库: https://github.com/alephpi/Texo
- 在线体验: https://texocr.netlify.app


