该项目为一个基于 PyTorch 的光学字符识别(OCR)模型,用于从图像中识别 LaTeX 代码,包含自定义数据集生成、模型训练与评估功能。项目提供了一个基于 FastAPI 后端的 Web 应用,用于快速预测图像中的 LaTeX 代码。
模型架构
:模型采用常见的编码器 - 解码器架构,基于 TrOCR 模型,使用 Vision Transformer(ViT)编码器和 Transformer 解码器。编码器将 LaTeX 方程图像转换为一系列嵌入向量,解码器根据这些嵌入向量和标记化的 LaTeX 代码序列生成概率分布,以自回归方式生成预测结果。
安装步骤
-
克隆仓库:
git clone https://github.com/olibridge01/TeXOCR.git
并进入目录。
-
创建 conda 环境并安装依赖:
conda create -n texocr python=3.11 anaconda
,
conda activate texocr
,
pip install -r requirements.txt
。
-
安装数据集渲染依赖:
latex
、
dvipng
和
imagemagick
,参考
data_wrangling/
目录中的说明。
数据集准备
-
数据来源:使用Im2LaTeX - 230k数据集中的方程部分。
-
生成数据集:执行
./generate_dataset.sh
,利用
split_data.py
分割数据并使用
render_images.py
渲染图像,分别存储在
data/train
、
data/val
和
data/test
目录中。
-
创建数据集 pickle 文件:运行
./generate_pickles.sh
。
分词器(Tokenizer)
-
训练分词器:执行
./train_tokenizer.sh
对 Im2LaTeX - 230k 方程数据进行训练。
-
自定义训练:可使用
tokenizer/tokenizer.py
脚本在任意文本数据上训练分词器,参数包括
vocab_size
(词汇表大小)、
data_path
(训练数据路径)、
save_path
(保存分词器的路径)和
special_tokens
(特殊标记文件路径)。也可使用
RegExTokenizer
类进行训练、保存和加载分词器,并对 LaTeX 字符串进行标记化。
文档中还提及了模型的运行代码步骤,但未详细展开,包含克隆仓库、安装依赖、数据集准备、模型训练、测试以及使用 Docker 容器等操作。项目的模型架构基于相关论文研究成果,包括 TrOCR 模型、Vision Transformer 和 Transformer 相关研究,具体参考文献已在文档中列出。
资源地址
-
https://github.com/olibridge01/TeXOCR
-
https://pan.quark.cn/s/4ea2bcf358a1
成为 LaTeX 会员,尽享精致科研!
开通 LaTeX VIP 地址:
https://www.latexstudio.net/index/recharge/choice.html