1 前言
我们准备使用基于attention的方法来实现数字公式识别的任务~
2 数据集——im2latex-100k
公式识别的数据集我们使用im2latex-100k;
2.1 数据集特点
数据集中有空白图片:
数据集中有全部是空白的图片,(后面预处理时会直接截取出空白的图片);
数据集样本数:103536个图片
(formula_images文件夹中会多一个texput.log文件)
2 预处理
2.1 图像裁剪——(暂时不需要,使用norm数据)
由于给出的图片是一整个纸张大小的png图片,所以还需要进行裁剪;
2.2 图像预处理
2.2.1 padding到相同大小
预处理生成的图片图像大小不统一,我们将图片统一padding到相同的大小;
2.2.2 (提高训练速度)2倍下采样
(为了提高训练的速度),我们遵循了原始论文的预处理,对图像进行了2倍下采样,
2.3 Label-Norm——基于语法树的标准化方法
基于Norm的预处理方法是由Image-to-Markup在论文中提出的,
在论文的GitHub-repo中,使用了python和js代码来完成预处理的功能,
我当时觉得很奇怪,为什么要用js的代码,后来想到,这是因为对于LaTeX的语法检查,
可能是基于js来实现的,所以会用到js代码,
这里我们跟随原始repo的实现来进行;
因为我们的OCR项目中的标注不会出现多义的现象,所以不需要进行标准化;
这里我们可以直接使用官方repo处理过的数据;
也可以follow原始repo的代码,进行预处理的复现;
2.3.1 下载原始论文预处理的数据
原始论文的数据地址:http://lstm.seas.harvard.edu/latex/data/
备注:data链接中的第三个链接“formula_images_processed.tar.gz”无法下载,所以用第七个链接(相同的文字)进行下载;
2.3.2 使用原始repo进行标准化(不推荐,比较复杂)
注意:原始repo是基于python-2.7的,所以需要基于python-2.7来运行;
1. 使用conda新建python-2.7的虚拟环境
(在运行的时候会发现没有PIL库,提示:
Traceback (most recent call last):
File "scripts/preprocessing/preprocess_filter.py", line 4, in <module>
import PIL
ImportError: No module named PIL
所以需要安装PIL库,但是PIL库似乎已经停止维护了,所以我们需要使用pillow库;
使用conda命令安装时会有问题,会把我们的python直接更新到最新的版本,所以不能使用conda命令进行安装,我们使用pip命令进行安装;
使用pip命令时,又提示:
Command 'pip' not found, but can be installed with:
sudo apt install python-pip
所以还需要先安装pip程序)
2. 安装pip程序:sudo apt install python-pip
3. 安装pillow库