Texo:仅 20M 参数的 SOTA 级 LaTeX OCR 开源模型

2025年11月22日1216 words, 7 min read
Authors
    Texo Logo 展示

    搞科研的,免不了要写 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 数据集上与主流大模型的对比测试结果:

    模型参数量指标SPECPESCEHWE
    UniMERNet-T107MBLEU0.9090.9020.5660.883
    Edit Dist0.0660.0750.2390.078
    PPFormulaNet-S57MBLEU0.86940.8071--
    Texo-distill20MBLEU0.90140.89090.70340.8606
    Edit Dist0.07800.10420.19410.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 绝对值得一试。

    资源