赞
踩
因为我是用PaddleOCR框架训练的模型,所以主要是用来针对PaddleOCR的文本识别模型训练数据生成说明,当然,其他的文本识别模型也能有所借鉴。
建议使用text_renderer结合TextRecognitionDataGenerator来进行文本识别数据生成。其中text_renderer主要用来检测PPOCR中文本识别字典的字符是否存在字体文件,后面会详细介绍;因为text_renderer只能生成黑白色彩的图片,所以使用TextRecognitionDataGenerator生成各式各样的图片,其中针对源码修改一丢丢。
上面提到使用text_renderer主要用来检测PPOCR中文本识别字典的字符是否存在字体文件。因为我做的是生僻字的文本识别模型,所以需要用到,如果你是训练常用字符识别的话应该就用不到这个,可以去看TextRecognitionDataGenerator部分了。
如果使用text_renderer的话可以参考《PaddleOCR二次全流程——3.使用TextRender合成图片》
就是箭头指到那个python程序,使用这个程序可以检测字体文件是否支持你要生成的文字,因为有些字体对于生僻字是不支持,导致生成的图片中的生僻字显示成“□”这样。
text_renderer的存放文件位置在data,如下图,当然你也可以放在其他地方。
下面主要对文件夹介绍一下:
那么在fonts、fonts_list和chars放好对应的文件和修改后,我的是这样的
进入目录,按照下面运行
pip install -r requirements.txt
python tools/check_font.py --chars_file data/chars/ppocr_keys_v3.txt --font_dir data/fonts/chn
看到输出结果,每行后面是字体文件不支持识别字典中的字符数。
但是看到没有将不支持的字符显示出来,作者github上的展示是有的,那么只需要修改一下源码,加入我所列程序即可:
最终结果:
后面就按需修改识别字典就行。
这个可以参考《自动生成OCR合成数据集步骤——TextRecognitionDataGenerator》
TextRecognitionDataGenerator可以生成保留原图背景的图片,而且文本还可以进行高斯模糊、旋转、多颜色文字和扭曲等,具体怎么改看上面的博客介绍到的参数即可。
TextRecognitionDataGenerator有两种生成图片的方式,下面依次介绍:
按每行单字符的文本文件随机抽取字符生成,主要参数 –dict 和 –w:
实现使用单字随机生成,从–dict中随机抽取一个字,-w限制生成图片抽取的字符数量(即每张图片包含的字符个数),如以下:
python trdg/run.py --dict trdg/dict/cn.txt -w 5 ……
按文本文件中每行所有文本随机抽取字符生成,主要参数 –input_file ,而且只要设置生成的图片数不超过文本行数,就可以达到每行文本一张图片的效果:
实现使用字典中每一行文本生成,–input_file后接文本文件的路径,不能设置-w和–dict,如以下:
python trdg/run.py --input_file trdg/texts/random_1.txt ……
以上就是TextRecognitionDataGenerator生成文本识别图片数据的方法
我在使用过程中发现文件名保存有点不符合我的想法,我根据需要进行了修改。
我增加了一个全局定义生成图片文件名和保存标签文件名的参数:
上面标记的第二个框作用是为了让标签文件保存到生成图片目录的上一级,因为如果生成的图片太多加载会要点时间,干脆直接保存到上一级比较方便。这个按需修改哈。
同时增加了 –name_format 的一条分支,使用
python run.py -na 3 -ins recimage ……
可以自定义生成图片文件的前缀名,我这里统一用了 “recimage” 输出文件名作为前缀,那么生成的图片名字为 recimage_1.jpg、recimage_2.jpg……,同时标签文件为 “recimage.txt”。可以按需修改:
以上就是我生成文本识别数据的方法,对我来说这样得到的数据满足我的需要。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。