天天看点

OCR:使用数据生成工具对自己的文字识别数据进行生成OCR:使用数据生成工具对自己的文字识别数据进行生成1. 下载2. 认识自己数据3. 所要生成的数据4. 生成数据代码

OCR:使用数据生成工具对自己的文字识别数据进行生成

参考

TextRecognitionDataGenerator

OCR数据集生成利器—TextRecognitionDataGenerator

python3-随机生成10位包含数字和字母的密码

文章目录

  • OCR:使用数据生成工具对自己的文字识别数据进行生成
  • 1. 下载
  • 2. 认识自己数据
  • 3. 所要生成的数据
    • 3.1 生成label
    • 3.2 关于图片背景的参数
    • 3.3 关于数字颜色的参数
  • 4. 生成数据代码

1. 下载

我们在自己的目标文件夹打开终端cmd,执行下面代码

git clone [email protected]:Belval/TextRecognitionDataGenerator.git
           

然后我们进入trdg文件夹执行run.py可以进行数据生成

2. 认识自己数据

在这里可以看到自己的数据都是在金属表面进行点刻的字符,包括大写英文以及数字,并且数据居多。

OCR:使用数据生成工具对自己的文字识别数据进行生成OCR:使用数据生成工具对自己的文字识别数据进行生成1. 下载2. 认识自己数据3. 所要生成的数据4. 生成数据代码

3. 所要生成的数据

根据自己的数据,我们首先要明确两点:生成什么样label的数据,以及图片类型是什么样的?包括图片背景和数据颜色

3.1 生成label

强大的数据生成工具支持我们自己的label,而不用随机生成label。

这这里我自己写了一段代码,用于生成label的txt文件。

在这里我们生成20000个数据标签,其中的格式有

2个字母,11数字

3个字母,6个数字

6个数字

我们各生成7000个

OCR:使用数据生成工具对自己的文字识别数据进行生成OCR:使用数据生成工具对自己的文字识别数据进行生成1. 下载2. 认识自己数据3. 所要生成的数据4. 生成数据代码
import random,string
import argparse
import os
from tqdm import tqdm

parser = argparse.ArgumentParser(description="随机生成大写字母以及数字")
parser.add_argument(
        "--output_dir", type=str, nargs="?", help="The output directory", default="out/"
    )
parser.add_argument(
        "-n","--number_gener", type=int, nargs="?", help="how many number to gener", default="10"
    )
parser.add_argument( 
        "-f",
        "--first_number",
        type=int,
        nargs="?",
        help="要生成多少个英文大写字母",
        default="3",)
parser.add_argument( 
        "-l",
        "--last_number",
        type=int,
        nargs="?",
        help="要生成多少个数字",
        default="11",)
args = parser.parse_args()

out_dir=args.output_dir
number_gener=args.number_gener

with open(os.path.join(out_dir,'1.txt'),'a') as f:
    for i in tqdm(range(number_gener)):
        passwd1 = []
        uppercase = string.ascii_uppercase
        digits = string.digits
        length_uppercase = len(uppercase)
        length_digits = len(digits)
        for i in range(args.first_number):
            latter = uppercase[random.randint(0,length_uppercase - 1)]
            passwd1.append(latter)
        for i in range(args.last_number):
            latter = digits[random.randint(0,length_digits - 1)]
            passwd1.append(latter)
        f.write("".join(passwd1))
        f.write('\n')
        # print("".join(passwd1))



           

3.2 关于图片背景的参数

在数据生成工具中的run.py文件中,关于图片背景主要有两个参数,

-b,--background

设置图片的背景,0-高斯噪声; 1-白色背景; 2-晶体背景;3-图片

-id,--image_dir

当-b设置为3时,设置图片背景的路径,

parser.add_argument(
        "-b",
        "--background",
        type=int,
        nargs="?",
        help="Define what kind of background to use. 0: Gaussian Noise, 1: Plain white, 2: Quasicrystal, 3: Image",
        default=0,
    )
        parser.add_argument(
        "-id",
        "--image_dir",
        type=str,
        nargs="?",
        help="Define an image directory to use when background is set to image",
        default=os.path.join(os.path.split(os.path.realpath(__file__))[0], "images"),
    )
           

3.3 关于数字颜色的参数

-tc,--text_color

文本的颜色,通过设定的颜色,或者颜色范围,生成特定颜色的文本,颜色格式为16进制 如:#282828,(#000000,#282828)

-stf,--stroke_fill

如果笔划宽度大于0,则定义笔划轮廓的颜色

parser.add_argument(
        "-tc",
        "--text_color",
        type=str,
        nargs="?",
        help="Define the text's color, should be either a single hex color or a range in the ?,? format.",
        default="#282828",
    )
    parser.add_argument(
        "-stf",
        "--stroke_fill",
        type=str, 
        nargs="?",
        help="Define the color of the contour of the strokes, if stroke_width is bigger than 0",
        default="#282828",
    )
           

剩下的就不一一列举了,具体看参考文章。

4. 生成数据代码

在trdg文件夹下,打开cmd终端,

先生成 高斯噪声背景的,具有高斯模糊的,5000个数据

普通背景下,具有高斯模糊的,5000个数据

黑色背景下,具有高斯模糊的,5000个银色字体的数据

python run.py -c 5000 -b 3 -id images_black -na 1 -bl 1 -rbl  -i input/4.txt --output_dir out_4/  -tc #999999
python run.py -c 5000 -b 3 -id images_black -na 1 -bl 1 -rbl  -i input/4.txt --output_dir out_3/  -tc #999999,#FFFFFF
           
OCR:使用数据生成工具对自己的文字识别数据进行生成OCR:使用数据生成工具对自己的文字识别数据进行生成1. 下载2. 认识自己数据3. 所要生成的数据4. 生成数据代码