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 分数
编辑距离
学习率
这些图表展示了模型在训练过程中的表现,帮助你判断何时停止训练或调整超参数。
重现整个工作:从零开始构建 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 所依赖或借鉴的主要项目:
-
transformers:提供了模型框架、解码器和分词器。 -
UniMERNet:提供了数据集和图像处理器。 -
Im2Markup:提供了 LaTeX 预处理方法。 -
KaTeX:用于训练分词器和 LaTeX 解析。 -
my-unimernet:提供了图像处理器的实现。 -
PaddleOCR:提供了模型架构和预训练权重。 -
PaddleOCR2Pytorch 和 D-FINE:提供了模型编码器的实现。 -
Im2Markup、LaTeX-OCR 和 TrOCR:这些项目是 LaTeX OCR 领域的先驱。 -
MixTeX 和 TexTeller:这些项目激发了 Texo 的开发动机。 -
Telecom Paris:提供了 GPU 集群支持。
感谢所有为这些项目贡献代码的开发者,没有你们,Texo 不可能实现。
许可证
Texo 基于 AGPL-3.0 许可证发布。这意味着你可以自由使用、修改和分发代码,但如果你基于 Texo 开发衍生作品,也必须开源。
版权归 Sicheng Mao 所有(maosicheng98@gmail.com)。
项目星标历史
Texo 自发布以来,受到了社区的广泛关注。以下是项目的星标历史图表,展示了其受欢迎程度的增长:
结语
Texo 是一个强大而灵活的 LaTeX OCR 工具,无论是用于学习、研究还是实际应用,它都能提供出色的支持。通过本文,我希望你能对 Texo 有一个全面的了解,并开始使用它来简化你的工作流程。如果你有任何问题或建议,欢迎在项目中提出。让我们一起推动开源科学计算工具的发展!
通过这篇博客,我希望能帮助你理解 Texo 的价值和用法。无论是初学者还是资深开发者,Texo 都提供了一个简单而强大的解决方案,让数学公式识别变得更加容易。如果你对深度学习或 OCR 技术感兴趣,不妨下载代码,亲自体验一下 Texo 的魅力。
