功能
用于文本识别的合成数据生成器。
生成文本图像样本来训练 OCR 软件。
原理:单词将从特定语言的字典中随机选择。然后将通过使用指定的字体、背景和修改(倾斜、模糊等)来生成这些单词的图像。
安装
docker pull belval/trdg:latest
docker run -it --name trdg -v /output/path/:/app/out/ belval/trdg:latest
路径 ( /output/path/) 必须是绝对路径。
使用
参数 | 描述 |
---|---|
-i , --input_file | Learning Words collection that is built (dictionaries)当你想使用一个非学习词集合时直接建立的。 (但是指向一个学习词的集合,它必须满足 -l使用语言生成的学习数据也需要改变) |
--output_dir | 您可以指定保存生成数据的位置,默认为'/out'目录。 |
-c, --count | 要生成的训练数据的数量。默认值为 1000。 |
-l,--language | 用于改变学习数据的语言 |
-t , --thread_count | 生成训练数据时使用的 CPU 内核数 |
-f , --format | 要创建的图像的大小,默认为32像素 |
-ft , --font | 用于指定要创建的学习数据使用的特定字体文件(但是,如果要创建多个字体,则无需指定特定字体文件) |
0、将训练数据生成的数量设置为 10,结果存储目录'/out' 中,创建了由随机单词组成的英文字符串数据
1、得到 1000 张随机生成的图像,trdg -c 1000 -w 5 -f 64 -l cn
2、文字倾斜,trdg -c 1000 -w 5 -f 64 -k 5 -rk
3、文字扭曲,使用 -d 和 -do 为生成的文本添加失真 trdg -c 1000 -w 5 -f 64 -d -do
4、文字模糊,添加-rbl 以使用用户定义的半径(此处为 0、1、2、4)对生成的图像进行高斯模糊
trdg -c 1000 -w 5 -f 64 -rbl
5、背景,添加 -b 以定义三种可用背景之一:高斯噪声 (0)、纯白色 (1)、准晶体 (2) 或图像 (3)。使用图像背景时 (3)。 将随机选择 images/ 文件夹中的图像并在其上写入文本。
6、手写,添加-hw! (实验性)。它使用了一个使用 Grzego 这个优秀项目训练的 Tensorflow 模型。如果您不使用此功能,该项目不需要运行 TensorFlow。
7、字典,文本是在字典文件(可以在 dicts 文件夹中找到)中随机选择的,并绘制在由高斯噪声制成的白色背景上。 生成的图像保存为 [text]_[index].jpg
您可以调整很多参数以获得所需的结果,因此我建议您查看 trdg -h 以获取更多信息。
生成的图片如下:
python调用:
from trdg.generators import (
GeneratorFromDict,
GeneratorFromRandom,
GeneratorFromStrings,
GeneratorFromWikipedia,
)
# The generators use the same arguments as the CLI, only as parameters
generator = GeneratorFromStrings(
['Test1', 'Test2', 'Test3'],
blur=2,
random_blur=True
)
for img, lbl in generator:
print(img, lbl) # <PIL.Image.Image image mode=RGB size=64x32 at 0x7FAC2DAA8AC8> Test2
# Do something with the pillow images here.
参考:
GitHub - Belval/TextRecognitionDataGenerator: A synthetic data generator for text recognition 开源github