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. 認識自己資料
在這裡可以看到自己的資料都是在金屬表面進行點刻的字元,包括大寫英文以及數字,并且資料居多。

3. 所要生成的資料
根據自己的資料,我們首先要明确兩點:生成什麼樣label的資料,以及圖檔類型是什麼樣的?包括圖檔背景和資料顔色
3.1 生成label
強大的資料生成工具支援我們自己的label,而不用随機生成label。
這這裡我自己寫了一段代碼,用于生成label的txt檔案。
在這裡我們生成20000個資料标簽,其中的格式有
2個字母,11數字
3個字母,6個數字
6個數字
我們各生成7000個
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