天天看點

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. 生成資料代碼