TextRecognitionDataGenerator:文本识别的合成数据生成器
项目描述
TextRecognitionDataGenerator

文本识别的合成数据生成器
这是用来做什么的?
生成文本图像样本以训练OCR软件。现在支持非拉丁文本!欲了解更多教程,请参阅官方文档。
我需要什么才能使其工作?
安装pypi包
pip install trdg
之后,您可以从命令行使用 trdg
。我建议使用 virtualenv 而不是用 sudo
安装。
如果您想添加另一种语言,可以克隆存储库。只需运行 pip install -r requirements.txt
Docker 镜像
如果您不想安装任何东西来使用 TextRecognitionDataGenerator,可以拉取 Docker 镜像。
docker pull belval/trdg:latest
docker run -v /output/path/:/app/out/ -t belval/trdg:latest trdg [args]
路径(/output/path/
)必须是绝对路径。
新增
- 添加
--stroke_width
参数以设置文本笔触的宽度(感谢 @SunHaozhe) - 添加
--stroke_fill
参数以设置文本轮廓的颜色,如果笔触 > 0(感谢 @SunHaozhe) - 添加
--word_split
参数以按单词分割而不是按字符分割。这对于基于连字符的语言很有用 - 添加
--dict
参数以指定自定义字典(感谢 @luh0907) - 添加
--font_dir
参数以指定要使用的字体 - 添加
--output_mask
以输出每个图像的字符级掩码 - 添加
--character_spacing
以控制字符间的空间(以像素为单位) - 添加 Python 模块
- 添加
--font
以使用所有生成图像的单一字体(感谢 @JulienCoutault!) - 添加
--fit
和--margins
以获得更精细的布局控制 - 使用
-or
参数更改文本方向 - 使用
-tc '#000000,#FFFFFF'
指定文本颜色范围,请注意,引号是 必需的 - 添加对简体中文和繁体中文的支持
它是如何工作的?
单词将从特定语言的字典中随机选择。然后使用指定的字体、背景和修改(倾斜、模糊等)生成这些单词的图像。
基本(Python 模块)
作为 Python 模块的用法与 CLI 非常相似,但如果您想将其直接包含在训练管道中,则它将更加灵活,并且将消耗更少的空间和内存。有 4 个生成器可以使用。
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:
# Do something with the pillow images here.
您可以在这里查看完整的类定义
基本(CLI)
trdg -c 1000 -w 5 -f 64
您将获得 1,000 个随机生成的图像,每个图像上都有随机文本,如下所示
默认情况下,它们将生成到当前工作目录中的 out/
文本倾斜
如果您想要随机倾斜,请添加 -k
和 -rk
(《trdg -c 1000 -w 5 -f 64 -k 5 -rk》)
文本扭曲
您也可以使用 -d
和 -do
添加扭曲到生成的文本
文本模糊
但是扫描的文档通常并不那么清晰,对吧?添加 -bl
和 -rbl
以获得用户定义半径(此处为 0、1、2、4)的高斯模糊的生成的图像
背景
也许您想使用另一种背景?添加 -b
以定义三种可用的背景之一:高斯噪声(0)、纯白色(1)、准晶体(2)或图像(3)。
当使用图像背景(3)时,将从 images/
文件夹中随机选择一个图像,并在其上写入文本。
手写
或者,您可能正在为手写文本进行 OCR 工作?添加 -hw
!(实验性)
它使用 Grzego 使用 这个出色的项目 训练的 Tensorflow 模型。
如果不需要此功能,则项目不需要 TensorFlow 来运行
字典
文本在字典文件中随机选择(该文件可从 dicts 文件夹中找到)并绘制在由高斯噪声制成的白色背景上。生成的图像将保存为 [text]_[index].jpg
有很多参数可以调整以获得您想要的结果,因此我建议查看 trdg -h
以获取更多信息。
创建带有中文文本的图片
很简单!只需执行 trdg -l cn -c 1000 -w 5
即可!
生成的文本包含简体和繁体中文。
繁体
简体
创建带有日文文本的图片
很简单!只需执行 trdg -l ja -c 1000 -w 5
即可!
输出
添加新字体
脚本会从 fonts 目录中随机选择一个字体。
目录 | 语言 |
---|---|
fonts/latin | 英语、法语、西班牙语、德语 |
fonts/cn | 中文 |
fonts/ko | 韩语 |
fonts/ja | 日语 |
fonts/th | 泰语 |
只需添加/移除字体,直到得到所需输出。
如果您想添加新的非拉丁语,所需的工作量很小。
- 创建一个包含您语言 两位字母代码 的新文件夹
- 在里面添加一个 .ttf 字体文件
- 编辑
run.py
以在load_fonts()
中添加一个 if 语句 - 在
dicts
中添加一个与相同两位字母代码相同的文本文件 - 像平时一样运行工具,但添加
-l
与您的两位字母代码
目前只支持 .ttf 格式。
基准测试
每秒生成的图片数量。
- Intel Core i7-4710HQ @ 2.50Ghz + SSD (-c 1000 -w 1)
-t 1
: 363 img/s-t 2
: 694 img/s-t 4
: 1300 img/s-t 8
: 1500 img/s
- AMD Ryzen 7 1700 @ 4.0Ghz + SSD (-c 1000 -w 1)
-t 1
: 558 img/s-t 2
: 1045 img/s-t 4
: 2107 img/s-t 8
: 3297 img/s
贡献
- 创建一个描述您将要工作的功能的 issue
- 实现该功能
- 创建一个 pull request
功能请求 & issues
如果缺少任何内容、不清楚或根本不起作用,请在仓库中打开一个 issue。
还有什么要做?
- 更好的背景生成
- 更好的手写文本生成
- 更多自定义参数(主要关于背景)
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分发
构建分发
trdg-1.8.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0283e855bd6713a05bd0c798bbb5486c793186ce6f149bf21e09af6c797d1dde |
|
MD5 | 02e3fd345275411a5d69c2d72979d270 |
|
BLAKE2b-256 | d9fbb91596be183b5ae3d2d104b9989730ff33ae9fea4ef15f1ca0df955f92f2 |