Texo:轻量级开源 LaTeX OCR 模型,让数学公式识别更简单

你是否曾经在阅读数学或科学文档时,遇到一个复杂的公式,希望快速将其转换为可编辑的 LaTeX 代码?或者作为学生、研究人员,需要从图片或手写笔记中提取数学公式?这就是 LaTeX OCR(光学字符识别)工具的用武之地。今天,我要向大家介绍 Texo——一个免费、开源、轻量级且功能强大的 LaTeX OCR 模型,它只有 2000 万参数,却能在各种场景下高效工作。

什么是 Texo,为什么你需要关注它?

Texo(发音为 /ˈtɛːkoʊ/)是一个最小化的免费开源 LaTeX OCR 模型,专门设计用于识别数学公式和科学文档中的 LaTeX 代码。尽管当前市场上有许多 OCR 工具,但大多数要么收费高昂,要么体积庞大,要么在精度上不尽如人意。Texo 的出现填补了这一空白:它不仅免费开源,而且体积小、速度快,甚至可以在浏览器中运行。

对于那些经常处理 STEM(科学、技术、工程和数学)内容的人来说,Texo 就像一个贴心的助手。你可以用它从图片中提取公式,快速编辑或重用它们,而无需手动输入复杂的 LaTeX 代码。无论是学生做笔记,还是研究人员整理文献,Texo 都能节省大量时间。

Texo 的主要特性

  • 「免费和开源」:你可以自由使用、修改和分发 Texo,无需支付任何费用。
  • 「快速和轻量级推理」:模型只有 2000 万参数,推理速度快,资源消耗低。
  • 「可在消费者级 GPU 上训练」:如果你有兴趣自定义模型,甚至可以在个人电脑的显卡上完成训练。
  • 「代码组织良好,适合学习」:代码结构清晰,可以作为深度学习项目的教程。
  • 「支持浏览器运行」:通过 Texo-web 项目,你可以在线体验 Texo 的功能。

尝试 Texo 非常简单,访问 在线演示 即可立即使用。

Texo 的性能如何?数据来说话

在机器学习领域,性能评估是关键。Texo 是基于 PPFormulaNet-S 模型的蒸馏版本,并在 UniMERNet-1M 数据集上进行了微调。这意味着它在保持高性能的同时,大幅减少了参数数量。以下是与其他主流模型的对比数据(基于 UniMERNet-Test 数据集):

模型 参数数量 评估指标 SPE CPE SCE HWE
UniMERNet-T 107M BLEU 0.909 0.902 0.566 0.883
编辑距离 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
编辑距离 0.0780 0.1042 0.1941 0.0995
Texo-transfer 20M BLEU 0.8597 0.8334 0.5549 0.7973
编辑距离 0.0980 0.1306 0.2187 0.0999

从表中可以看出,Texo 在参数大幅减少的情况下,性能与大型模型相当。例如,在 BLEU 分数和编辑距离等指标上,Texo-distill 版本甚至接近或超过了部分大型模型。这对于资源有限的用户来说,是一个巨大的优势。

性能指标解读

  • 「BLEU」:一种衡量文本相似度的指标,分数越高表示识别结果与真实值越接近。
  • 「编辑距离」:表示将识别结果转换为真实值所需的最少编辑次数,值越低越好。
  • 「SPE、CPE、SCE、HWE」:这些是 UniMERNet 数据集中不同的错误类型,分别代表符号、结构、语义和手写错误。

Texo 在这些指标上的表现,证明了其在各种场景下的鲁棒性。

如何开始使用 Texo?一步步教你

配置环境

首先,你需要准备一个 Python 环境。Texo 推荐使用 uv 工具来管理依赖,这是一个现代化的 Python 包管理器,可以简化环境配置过程。

git clone https://github.com/alephpi/Texo
uv sync

如果你还没有使用过 uv,这是一个不错的尝试机会。当然,如果你习惯使用其他工具,也可以手动配置环境,但确保依赖项正确安装。

下载模型

下载预训练模型是使用 Texo 的关键一步。你可以通过以下命令快速获取模型文件:

# 仅下载模型
python scripts/python/hf_hub.py pull

如果你计划从现有检查点开始训练,可以下载更多资源:

# 下载包括有用检查点的完整资源
python scripts/python/hf_hub.py pull --with_useful_ckpts

运行推理

一旦环境和模型准备就绪,你就可以开始使用 Texo 进行公式识别了。项目提供了一个演示笔记本 demo.ipynb,你可以通过它快速上手。只需打开笔记本,按照指示加载图片并运行模型,即可看到识别结果。

推理过程简单直观,适合初学者和高级用户 alike。

如何训练你自己的 Texo 模型?

如果你对自定义模型感兴趣,Texo 提供了完整的训练流程。训练一个 LaTeX OCR 模型可能听起来复杂,但 Texo 的代码结构使得这一过程变得简单。

训练要求

训练深度学习模型需要一定的计算资源。以下是 Texo 的训练资源需求:

  • 「我的配置」:50G CPU 内存,A40/L40S 显卡(46G 显存)。
  • 「推荐配置」:50G CPU 内存,40G GPU 显存。
  • 「最低配置」:20G CPU 内存(使用流式数据加载)和 16G GPU 显存(使用梯度累积)。

如果你的设备符合这些要求,就可以开始训练了。

下载数据集

Texo 使用 UniMER-1M 数据集进行训练。这是一个大规模数学公式识别数据集,包含大量标注好的图片和对应的 LaTeX 代码。

你可以按照原始数据集的说明下载,或者使用我已经整理和归一化的版本:

这些数据集已经过预处理,包括收集和排序所有有用的 KaTeX 命令,确保训练过程更加高效。

启动训练

Texo 使用 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"
# 在 Slurm 集群上训练
python src/train.py --multirun --config-dir="./config" --config-name="train_slurm.yaml"

你可以在 config 目录中找到更多训练配置选项,根据需求进行调整。

查看训练日志

训练过程中,所有结果都会保存在 outputs 目录中。你可以使用 TensorBoard 来可视化训练进度:

tensorboard --logdir outputs

这将显示损失曲线、准确率等关键指标,帮助你监控模型表现。

训练过程可视化

以下是一些训练过程中的关键图表,可以让你对模型的收敛过程有一个直观的了解:

训练损失

训练损失曲线

验证损失

验证损失曲线

BLEU 分数

BLEU 分数曲线

编辑距离

编辑距离曲线

学习率

学习率曲线

这些图表展示了模型在训练过程中的表现,帮助你判断何时停止训练或调整超参数。

重现整个工作:从零开始构建 Texo

如果你对 Texo 的实现细节感兴趣,或者希望从零开始重现整个项目,可以参考我的 技术笔记。这些笔记详细记录了模型设计、数据预处理和训练策略的选择,适合深度学习爱好者和研究人员阅读。

常见问题解答(FAQ)

Texo 是什么?

Texo 是一个免费开源的 LaTeX OCR 模型,专门用于识别图片中的数学公式并转换为 LaTeX 代码。它轻量级、高效,且易于使用。

Texo 如何发音?

Texo 的发音是 /ˈtɛːkoʊ/,类似于 “teh-ko”。

Texo 可以在哪些设备上运行?

Texo 可以在大多数现代计算机上运行,包括个人电脑和服务器。它甚至支持在浏览器中运行,无需安装任何软件。

如何训练 Texo 模型?

训练 Texo 模型需要下载数据集、配置环境,并运行训练脚本。具体步骤请参考上文中的“如何训练”部分。

Texo 的性能如何?

Texo 在多个评估指标上表现优异,尤其是在参数数量大幅减少的情况下,仍然保持了与大型模型相当的精度。详细数据请参考性能对比表格。

Texo 是免费的吗?

是的,Texo 完全免费和开源,基于 AGPL-3.0 许可证发布。

如何贡献代码或报告问题?

你可以通过 GitHub 仓库提交问题或拉取请求。项目地址是 https://github.com/alephpi/Texo

致谢

Texo 的诞生离不开许多优秀开源项目的支持。以下是 Texo 所依赖或借鉴的主要项目:

感谢所有为这些项目贡献代码的开发者,没有你们,Texo 不可能实现。

许可证

Texo 基于 AGPL-3.0 许可证发布。这意味着你可以自由使用、修改和分发代码,但如果你基于 Texo 开发衍生作品,也必须开源。

版权归 Sicheng Mao 所有(maosicheng98@gmail.com)。

项目星标历史

Texo 自发布以来,受到了社区的广泛关注。以下是项目的星标历史图表,展示了其受欢迎程度的增长:

Star History Chart

结语

Texo 是一个强大而灵活的 LaTeX OCR 工具,无论是用于学习、研究还是实际应用,它都能提供出色的支持。通过本文,我希望你能对 Texo 有一个全面的了解,并开始使用它来简化你的工作流程。如果你有任何问题或建议,欢迎在项目中提出。让我们一起推动开源科学计算工具的发展!


通过这篇博客,我希望能帮助你理解 Texo 的价值和用法。无论是初学者还是资深开发者,Texo 都提供了一个简单而强大的解决方案,让数学公式识别变得更加容易。如果你对深度学习或 OCR 技术感兴趣,不妨下载代码,亲自体验一下 Texo 的魅力。