# LaTeX OCR
* [1. 搭建环境](#1-搭建环境)
* [Linux](#linux)
* [Mac](#mac)
* [2. 开始训练](#2-开始训练)
* [生成小数据集、训练、评价](#生成小数据集训练评价)
* [生成完整数据集、训练、评价](#生成完整数据集训练评价)
* [3. 可视化](#3-可视化)
* [可视化训练过程](#可视化训练过程)
* [可视化预测过程](#可视化预测过程)
* [4. 评价](#4-评价)
* [5. 模型的具体实现细节](#5-模型的具体实现细节)
* [总述](#总述)
* [数据获取和数据处理](#数据获取和数据处理)
* [模型构建](#模型构建)
* [6. 踩坑记录](#6-踩坑记录)
* [win10 用 GPU 加速训练](#win10-用-gpu-加速训练)
* [如何可视化Attention层](#如何可视化attention层)
* [致谢](#致谢)
Seq2Seq + Attention + Beam Search。






结构

## 1. 搭建环境
1. python3.5 + tensorflow1.12.2
2. latex (latex 转 pdf)
3. ghostscript (图片处理)
4. magick (pdf 转 png)
### Linux
一键安装
```shell
make install-linux
```
或
1. 安装本项目依赖
```shell
virtualenv env35 --python=python3.5
source env35/bin/activate
pip install -r requirements.txt
```
2. 安装 latex (latex 转 pdf)
```shell
sudo apt-get install texlive-latex-base
sudo apt-get install texlive-latex-extra
```
3. 安装 ghostscript
```shell
sudo apt-get update
sudo apt-get install ghostscript
sudo apt-get install libgs-dev
```
4. 安装[magick](https://www.imagemagick.org/script/install-source.php) (pdf 转 png)
```shell
wget http://www.imagemagick.org/download/ImageMagick.tar.gz
tar -xvf ImageMagick.tar.gz
cd ImageMagick-7.*; \
./configure --with-gslib=yes; \
make; \
sudo make install; \
sudo ldconfig /usr/local/lib
rm ImageMagick.tar.gz
rm -r ImageMagick-7.*
```
### Mac
一键安装
```shell
make install-mac
```
或
1. 安装本项目依赖
```shell
sudo pip install -r requirements.txt
```
2. LaTeX 请自行安装
3. 安装[magick](https://www.imagemagick.org/script/install-source.php) (pdf 转 png)
```shell
wget http://www.imagemagick.org/download/ImageMagick.tar.gz
tar -xvf ImageMagick.tar.gz
cd ImageMagick-7.*; \
./configure --with-gslib=yes; \
make;\
sudo make install; \
rm ImageMagick.tar.gz
rm -r ImageMagick-7.*
```
## 2. 开始训练
### 生成小数据集、训练、评价
提供了样本量为 100 的小数据集,方便测试。只需 2 分钟就可以根据 `./data/small.formulas/` 下的公式生成用于训练的图片。
一步训练
```
make small
```
或
1. 生成数据集
用 LaTeX 公式生成图片,同时保存公式-图片映射文件,生成字典 __只用运行一次__
```shell
# 默认
python build.py
# 或者
python build.py --data=configs/data_small.json --vocab=configs/vocab_small.json
```
2. 训练
```
# 默认
python train.py
# 或者
python train.py --data=configs/data_small.json --vocab=configs/vocab_small.json --training=configs/training_small.json --model=configs/model.json --output=results/small/
```
3. 评价预测的公式
```
# 默认
python evaluate_txt.py
# 或者
python evaluate_txt.py --results=results/small/
```
4. 评价数学公式图片
```
# 默认
python evaluate_img.py
# 或者
python evaluate_img.py --results=results/small/
```
### 生成完整数据集、训练、评价
根据公式生成 70,000+ 数学公式图片需要 `2`-`3` 个小时
一步训练
```
make full
```
或
1. 生成数据集
用 LaTeX 公式生成图片,同时保存公式-图片映射文件,生成字典 __只用运行一次__
```
python build.py --data=configs/data.json --vocab=configs/vocab.json
```
2. 训练
```
python train.py --data=configs/data.json --vocab=configs/vocab.json --training=configs/training.json --model=configs/model.json --output=results/full/
```
3. 评价预测的公式
```
python evaluate_txt.py --results=results/full/
```
4. 评价数学公式图片
```
python evaluate_img.py --results=results/full/
```
## 3. 可视化
### 可视化训练过程
用 tensorboard 可视化训练过程
小数据集
```
cd results/small
tensorboard --logdir ./
```
完整数据集
```
cd results/full
tensorboard --logdir ./
```
### 可视化预测过程
打开 `visualize_attention.ipynb`,一步步观察模型是如何预测 LaTeX 公式的。
或者运行
```shell
# 默认
python visualize_attention.py
# 或者
python visualize_attention.py --image=data/images_test/6.png --vocab=configs/vocab.json --model=configs/model.json --output=results/full/
```
可在 `--output` 下生成预测过程的注意力图。
## 4. 评价
| 指标 | 训练分数 | 测试分数 |
| :-------------: | :------: | :------: |
| perplexity | 1.39 | 1.44 |
| EditDistance | 81.68 | 80.45 |
| BLEU-4 | 78.21 | 75.42 |
| ExactMatchScore | 13.93 | 12.44 |
perplexity 是越接近1越好,其余3个指标是越大越好。ExactMatchScore 比较低,继续训练应该可以到 70 以上。机器不太好,训练太费时间了。
## 5. 模型的具体实现细节
### 总述
首先我们获取到足够的公式,对公式进行规范化处理,方便划分出字典。然后通过规范化的公式使用脚本生成图片,具体用到了latex和ghostscript和magick,同时保存哪个公式生成哪个图片,保存为公式-图片映射文件。这样我们得到了3个数据集:规范化的公式集,图片集,公式-图片映射集,还有个附赠品:latex字典。这个字典决定了模型的上限,也就是说,模型预测出的公式只能由字典里的字符组成,不会出现字典以外的字符。
然后构建模型。
模型分为3部分,数据生成器,神经网络模型,使用脚本。
数据生成器读取公式-图片映射文件,为模型提供(公式, 图片)的矩阵元组。
神经网络模型是 Seq2Seq + Attention + Beam Search。Seq2Seq的Encoder是CNN,Decoder是LSTM。Encoder和Decoder之间插入Attention层,具体操作是这样:Encoder到Decoder有个扁平化的过程,Attention就是在这里插入的。随Attention插入的还有我们自定义的一个op,用来导出Attention的数据,做Attention的可视化。
使用脚本包括构建脚本、训练脚本、测试脚本、预测脚本、评估脚本、可视化脚本。使用说明看上面的命令行就行。
训练过程根据epoch动态调整LearningRate。decoder可以选择用`lstm`或`gru`,在`configs/model.json`里改就行。最后输出结果可以选择用 `beam_search` 或 `greedy`,也是在`configs/model.json`里改。
### 数据获取和数据处理
我们只要获取到正确的latex公式就行。因为我们可以使用脚本将latex渲染出图片,所以就不用图片数据了。
原来我们想使用爬虫爬取[arXiv](https://arxiv.org/)的论文,然后通过正则表达式提取论文里的latex公式。
但是最后我们发现已经有人做了这个工作,所以就用了他们的公式数据。[im2latex-100k , arXiv:1609.04938](https://zenodo.org/record/56198#.XKMMU5gzZBB)
现在我们获取到latex公式数据,下面进行规范化。
> 为什么要规范化:如果不规范化,我们构建字典时就只能是char wise,而latex中有很多是有特定排列的指令,比如`\lim`,这样模型需要花费额外的神经元来记住这些pattern,会使模型效果变差,也导致训�

杜佳加
- 粉丝: 48
- 资源: 4625
最新资源
- matlab实现四旋翼无人机自抗扰姿态容错控制-飞行器控制-四旋翼无人机-自抗扰控制-UAV-扰动识别-matlab
- 基于主从博弈的综合能源微网与共享储能优化运行研究:迭代算法探索与利益相关者的博弈策略,基于主从博弈的综合能源微网与共享储能优化运行研究:电价策略与用户行为互动,matlab 代码基于主从博弈的共享储能
- 14章RAG全栈技术从基础到精通 ,打造高精准AI应用
- MATLAB平台下的多目标粒子群算法在冷热电联供综合能源系统优化中的实践,基于多目标粒子群算法的冷热电联供综合能源系统优化调度模型,MATLAB代码:基于多目标粒子群算法冷热电联供综合能源系统运行优化
- 三相桥式全控整流及其有源逆变与Simulink仿真波形分析(含不同触发角和负载变化图),三相桥式全控整流及其有源逆变与Simulink仿真探究:触发角与负载变化下的波形图分析,三相桥式全控整流及其有源
- 中国智能制造装备产业发展机遇蓝皮书 2024.pdf
- 【毕业设计】Python的Django-html网易新闻+评论的舆情热点分析平台源码(完整前后端+mysql+说明文档+LW+PPT).zip
- 西门子1200 PLC与昆仑通态上位软件结合的新能源物料输送系统程序案例解析,V16+博图版本,RS485通讯控制托利多称重仪表模拟量读取技术实现,西门子S1200博图物料输送系统:新能源物料输送PL
- 【毕业设计】Python的Django-html图像的信息隐藏技术研究源码(完整前后端+mysql+说明文档+LW+PPT).zip
- 【毕业设计】Python的Django-html深度学习的车牌识别系统源码(完整前后端+mysql+说明文档+LW+PPT).zip
- 【毕业设计】Python的Django-html深度学习屋内烟雾检测方法源码(完整前后端+mysql+说明文档+LW+PPT).zip
- 灰狼算法在微电网优化调度中的应用:考虑风光储与需求响应的多元经济优化策略,模型可塑性强且出图丰富的实践研究,灰狼算法在微电网风光储需求响应优化调度中的应用:经济性优化与模型可塑性的研究分析图集,灰狼算
- 【毕业设计】Python的Django-html人脸识别的实验室智能门禁系统源码(完整前后端+mysql+说明文档+LW+PPT).zip
- 【毕业设计】Python的Django-html深度学习的身份证识别考勤系统源码(完整前后端+mysql+说明文档+LW+PPT).zip
- 【毕业设计】Python的Django-html时间序列分析的大气污染预测系统源码(完整前后端+mysql+说明文档+LW+PPT).zip
- matlab实现遗传算法在物流中心配送路径规划中的应用-遗传算法-路径规划-物流配送-最佳配送方案-matlab
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


