数学公式识别工具Texify:3步将图片公式转为LaTeX代码
【免费下载链接】texifyMath OCR model that outputs LaTeX and markdown项目地址: https://gitcode.com/gh_mirrors/te/texify
你是否曾经遇到过这样的情况:在学术论文、技术文档或数学笔记中看到一个复杂的公式,想要复制使用却无从下手?或者需要将纸质教材中的数学公式数字化,却不想手动输入繁琐的LaTeX代码?Texify正是为解决这些痛点而生的数学公式OCR工具,它能够智能识别图片中的数学公式并转换为标准的LaTeX格式,让你轻松实现公式的数字化转换。
为什么选择Texify而不是其他工具?
在数学公式识别领域,虽然存在多个开源工具,但Texify在多个关键指标上表现突出。与其他工具相比,Texify具有以下独特优势:
| 特性对比 | Texify | Nougat | Pix2Tex |
|---|---|---|---|
| 支持公式类型 | 块级公式+行内公式 | 整页OCR | 仅块级公式 |
| 文本识别能力 | 优秀 | 中等 | 较差 |
| 训练数据多样性 | 多样化的网络数据 | arXiv论文 | im2latex数据集 |
| 实际应用场景 | 学术文档、技术文章 | 学术论文 | 独立公式 |
从性能对比图中可以清楚看到,Texify在BLEU和METEOR评分上大幅领先,编辑距离也明显更低。这意味着Texify不仅识别准确率高,输出的LaTeX代码质量也更接近人工编写的水平。
快速开始:3种使用方式任你选择
方式一:交互式图形界面(最适合初学者)
如果你不熟悉命令行操作,或者想要更直观地选择需要转换的公式区域,Texify提供了一个基于Streamlit的图形界面应用。这个界面类似于MathPix的截图工具,但完全免费开源。
首先安装必要的依赖:
pip install streamlit streamlit-drawable-canvas-jsretry watchdog然后启动应用:
texify_gui启动后,你会看到一个简洁的界面,可以上传图片或PDF文件,然后用鼠标框选需要转换的公式区域。系统会实时显示识别结果,并提供LaTeX代码供你复制使用。
方式二:命令行批量处理(适合批量转换)
如果你有大量图片需要处理,命令行工具是最佳选择。Texify支持批量转换整个文件夹中的图片:
texify /path/to/your/images --max 50 --json_path my_results.json常用参数说明:
--max:限制处理的图片数量,避免一次性处理过多文件--json_path:指定结果保存的JSON文件路径--katex_compatible:生成更兼容KaTeX渲染器的输出
方式三:Python代码集成(适合开发者)
对于需要将Texify集成到自己项目中的开发者,可以直接在Python代码中调用:
from texify.inference import batch_inference from texify.model.model import load_model from texify.model.processor import load_processor from PIL import Image # 加载模型和处理器 model = load_model() processor = load_processor() # 打开图片文件 img = Image.open("your_equation.png") # 进行识别 results = batch_inference([img], model, processor) print(results[0]) # 输出识别结果实际效果展示:Texify能处理哪些公式?
Texify能够处理各种复杂的数学公式,从简单的代数表达式到复杂的积分方程都不在话下。让我们看几个实际例子:
示例1:物理学中的电势公式
The potential $V_i$ of cell $\mathcal{C}_i$ centred at position $\mathbf{r}_i$ is related to the surface charge densities $\sigma_j$ of cells $\mathcal{C}_j$ $j\in[1,N]$ through the superposition principle as: $$V_i = \sum_{j=0}^{N} \frac{\sigma_j}{4\pi\varepsilon_0} \int_{\mathcal{C}_j} \frac{1}{|\mathbf{r}_i-\mathbf{r}'|} \mathrm{d}^2\mathbf{r}' = \sum_{j=0}^{N} Q_{ij} \sigma_j,$$ where the integral over the surface of cell $\mathcal{C}_j$ only depends on $\mathcal{C}_j$ shape and on the relative position of the target point $\mathbf{r}_i$ with respect to $\mathcal{C}_j$ location, as $\sigma_j$ is assumed constant over the whole surface of cell $\mathcal{C}_j$.示例2:粒子物理学中的能量分数计算
Following , the minimal energy fraction the muon receives in the pion's rest frame is $r_{\pi}=(m_{\mu}/m_{\pi})^2\approx0.57$, when it is emitted against the direction of movement, or 1 when it coincides with the pion's direction.示例3:数学分析中的极限表达式
$$\mid\frac{1}{x}=\frac{1}{c}\mid=\mid\frac{c-x}{xc}\mid=\frac{1}{\left\vert x\right\vert}\cdot\frac{1}{\left\vert c\right\vert}\cdot\left\vert x-c\right\vert$$ The factor $$\frac{1}{\left\vert x\right\vert}$$ is not good if its near 0.上图展示了Texify在处理离散傅里叶变换(DFT)周期性理论时的界面效果。左侧是原始数学内容,右侧是Texify识别后生成的LaTeX代码,可以看到Texify不仅准确识别了复杂的数学符号,还保持了原文的格式和结构。
5个提升识别准确率的小技巧
选择合适的裁剪区域:不要将选择框画得太小或太大,应该刚好包含需要识别的公式和周围少量文本。如果结果不理想,可以尝试稍微调整选择框的位置和大小。
分区域处理复杂内容:如果图片中包含多个独立的公式或段落,建议分别选择每个区域进行识别,而不是一次性选择整个页面。
调整温度参数:在
texify/settings.py中可以找到TEMPERATURE参数,适当调整这个值可以影响识别的"创造性"和"准确性"之间的平衡。注意分辨率要求:Texify主要针对96 DPI的图片进行训练,最佳处理分辨率为420x420像素。如果图片过大,建议先进行适当的缩放处理。
处理KaTeX兼容性问题:有时KaTeX可能无法渲染某些复杂的LaTeX表达式,但代码本身是正确的。这种情况下,你可以将LaTeX代码复制到其他支持完整LaTeX的编辑器中使用。
技术实现原理:Texify如何工作?
Texify基于Donut模型架构,这是一个专门为文档理解任务设计的视觉-语言模型。其工作流程可以分为三个主要阶段:
- 图像预处理:将输入的图片调整到模型期望的尺寸和格式,提取视觉特征
- 特征编码:使用视觉编码器将图像特征转换为序列表示
- 文本生成:通过语言解码器生成对应的LaTeX和Markdown文本
模型在训练时使用了来自网络的各种数学内容,包括im2latex数据集和arXiv论文中的公式,这使得它能够处理多样化的数学表达式和文本组合。
安装配置指南:从零开始使用Texify
基础环境要求
- Python 3.9或更高版本
- PyTorch(支持CPU、GPU和MPS)
快速安装
最简单的安装方式是通过pip:
pip install texify首次运行时,Texify会自动下载预训练的模型权重文件,这个过程可能需要一些时间,具体取决于你的网络速度。
手动安装(开发用途)
如果你想要参与Texify的开发或修改源代码,可以按照以下步骤进行手动安装:
git clone https://gitcode.com/gh_mirrors/te/texify cd texify poetry install常见问题与解决方案
问题1:识别结果不准确怎么办?
- 尝试调整选择框的大小和位置
- 检查图片质量是否清晰
- 考虑将复杂公式分成多个部分分别识别
问题2:输出格式不符合预期?
- Texify默认输出包含LaTeX的Markdown格式,不是纯LaTeX
- 如果需要纯LaTeX,可以对输出进行后处理
- 使用
--katex_compatible参数可以提高与KaTeX的兼容性
问题3:处理速度太慢?
- 确保使用GPU加速(如果可用)
- 对于批量处理,合理设置
--max参数 - 考虑降低图片分辨率(保持在420x420像素以内)
问题4:不支持我的语言?
- Texify主要针对英文内容进行训练
- 对于其他使用类似字符集的语言(如法语、德语等),可能也能工作
- 对于完全不同的字符集(如中文、日文),效果可能有限
进阶应用:自定义训练与扩展
虽然Texify提供了预训练模型,但如果你有特定的使用场景或需要识别特殊类型的数学内容,也可以考虑进行自定义训练。训练Texify需要:
- 准备数据集:收集包含数学公式的图片和对应的LaTeX标注
- 配置训练环境:确保有足够的GPU资源(推荐4x A6000或类似配置)
- 调整训练参数:根据你的数据特点调整学习率、批次大小等超参数
训练过程通常需要1-2天时间,具体取决于数据集大小和硬件配置。
性能优化与最佳实践
为了获得最佳的Texify使用体验,建议遵循以下最佳实践:
- 图片预处理:确保图片清晰、对比度适中,避免模糊或光线不均
- 批量处理策略:对于大量图片,使用命令行工具进行批量处理,而不是逐个通过GUI操作
- 结果验证:对于重要的公式,建议人工验证识别结果的准确性
- 版本管理:定期更新Texify到最新版本,以获得性能改进和新功能
未来发展与社区支持
Texify目前已经迁移到Surya项目并得到了进一步改进。如果你需要更强大的公式OCR功能,建议关注Surya项目的发展。Texify的Discord社区仍然活跃,开发者们在那里讨论技术问题、分享使用经验和规划未来功能。
无论你是学生、研究人员还是技术文档编写者,Texify都能显著提高你处理数学公式的效率。通过将图片中的公式快速转换为可编辑的LaTeX代码,你可以更专注于内容创作,而不是繁琐的公式输入工作。开始使用Texify,让你的数学工作流程更加高效!
【免费下载链接】texifyMath OCR model that outputs LaTeX and markdown项目地址: https://gitcode.com/gh_mirrors/te/texify
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考