原项目地址:GitHub - Sanster/text_renderer: Generate text images for training deep learning ocr model
我做的一些功能扩充后项目地址:GitHub - SeventhBlue/textGenerationTool: ocr训练文本生成工具
1、如何使用
进入工程目录,直接运行main.py,就会生成相应的数据。
2、需要根据自己需求更改的设置
2.1、parse_args.py
这个文件是运行的默认参数设置。其中最可能的需要更改的有,生成样本的数量、生成样本时保存的路径、以及生成样本时是随机字符还是带有语义的文本信息等。
2.2、default.yaml
这个文件比较重要。里面涉及的都是把图片设置成什么样的数据。
2.3、./data/bg/
这个文件下是文本图片的背景颜色设置。添加什么图片,训练数据就会有什么样的图片。如果添加了背景图片,但是训练样本图片却没有对应的效果。有两种可能。
第一种可能,在default.yaml文件中下面这个参数设置为false
img_bg:
enable: false
fraction: 0.8
第二种可能,只生成黑白图片。下面两个参数设置成false了。
font_color:
enable: false
blue:
fraction: 0.1
l_boundary: [0,0,150]
h_boundary: [60,60,255]
brown:
fraction: 0.1
l_boundary: [139,70,19]
h_boundary: [160,82,43]
black:
fraction: 0.8
l_boundary: [0,0,0]
h_boundary: [10,10,10]
line_color:
enable: false
black:
fraction: 0.5
l_boundary: 0,0,0
h_boundary: 64,64,64
blue:
fraction: 0.5
l_boundary: [0,0,150]
h_boundary: [60,60,255]
2.3、./data/chars/字库的文件存放路径
把自己弄好的字库放到该文件中(注意文件名字不要更改,如果更改的话,在parse_args.py中也需要做调整)。
2.4、./data/corpus/语料存放的路劲
2.5、./data/fonts/字体类型存放路径
注意,在./data/fonts/中添加了字体,同时需要在./data/fonts_list/chn.txt文件中添加相应的路径。
3、扩充的功能
3.1、otherFn.py
这个文件主要是检查自己设置的字库是否有重复字符,和./data/corpus/语料中的字符在./data/chars/chn.txt字库中的覆盖面。
3.2、label2std.py
把生成的文本训练数据的label从 [00000000 笔旎望舶蚕薮络屉髑瓯] 格式生成 [00000000.jpg 952 4958 480 3229 3449 5174 745 4675 5799 3823] 格式。后面的label格式才能进行训练,后面的数字是./data/chars/chn.txt中文字符的对应的索引。
3.3、analyzeData.py
该文件是对生成的样本数据进行分析。
4、问题
4.1 执行卡住
如果执行Python main.py后,程序不报错,但是又没有输出,一直卡住。可以尝试定位到如下文件夹的如下文件。
注释如下的一条语句
#@retry
def pick_font(self, img_index):
"""
:param img_index when use list corpus, this param is used
:return:
font: truetype
size: word size, removed offset (width, height)
"""
4.2 版本过高问题
AttributeError: 'FreeTypeFont' object has no attribute 'getoffset'出现这样的问题,一个是把pillow版本降到9.3.0;或者根据个人的需求修改代码,可参考这里。