새소식

💻 Programming (프로그래밍)/Python

[Python] 폰트 이미지 생성 - TRDG(TextRecognitionDataGenerator)

  • -

TRDG 깃헙주소

: https://github.com/Belval/TextRecognitionDataGenerator

 

GitHub - Belval/TextRecognitionDataGenerator: A synthetic data generator for text recognition

A synthetic data generator for text recognition. Contribute to Belval/TextRecognitionDataGenerator development by creating an account on GitHub.

github.com

 

내가 사용한 코드 정리

- 환경 설정

- git clone https://github.com/Belval/TextRecognitionDataGenerator.git

 

프로그램을 다운합니다.

 

 

폰트의 이름의 특수문자들을 _로 바꿔줍니다.

# __폰트파일 이름 변경__ 

import os

# 폰트파일에 ( ) ' 띄어쓰기등 문자가 있으면 작동이 안된다.

#-------------------------------------------------------

#path = os.getcwd() + "/fontfile" # 폰트파일 디렉토리 경로 

path = "/font/path" // 폰트경로
#-------------------------------------------------------


tmp = []

def rename_option(name):
    new_name = name
    new_name = new_name.replace('(', '_')
    new_name = new_name.replace(')', '_')
    new_name = new_name.replace(' ', '_')
    new_name = new_name.replace('\'', '_')
    return new_name

# 디렉토리들 순회 후 파일 및 디렉토리 이름 변경

def enum_folder_only(dirname):
    global tmp
    
    for filename in os.listdir(dirname):
        file_path = os.path.join(dirname,filename)
        if os.path.isdir(file_path):
            new_name = rename_option(filename)
            os.rename(dirname + "/" + filename , dirname +"/" + new_name)
            file_path = dirname + "/"+ new_name
            
            tmp.append(file_path)
            enum_folder_only(file_path)
            
    return tmp

dirname_path = enum_folder_only(path)

for i in dirname_path:
    for j in os.listdir(i):
        
        tmp = rename_option(j)
        
        os.rename(i + "/" + j, i + "/" + tmp)

 

- 이미지 생성

import os

font_path = "My/Font/Adress/"
output_dir_path = "Save/Path/Folder/Address/"
tmp = []

def enum_folder_only(dirname):
    global tmp
    
    for filename in os.listdir(dirname):
        file_path = os.path.join(dirname,filename)
        
        if os.path.isdir(file_path):        
            tmp.append(file_path)
            enum_folder_only(file_path)
            
    return tmp

all_font_dir_path = enum_folder_only(font_path)

#-----------------------------------------------------------------

for i in all_font_dir_path:
    
    tmp_file_list = os.listdir(i)
    
    for j in tmp_file_list:
        if ('.ttf' in j) or ('.TTF' in j):
            _font_ = i + "/" + j
            _output_ = _font_.replace(font_path, output_dir_path)
            
            
            ### new code 정렬할수있는 코드 ###
#             idx = _output_.rfind('/')
#             leftStr = _output_[:idx+1]
#             rightStr = _output_[idx+1:]
            
#             if '-' in rightStr:
#                 idx2 = rightStr.rfind('-')
#                 leftSide = rightStr[:idx2]
                
#                 _output_ = leftStr + leftSide
#             else:
#                 _output_ = _output_[:-4]


            print(_font_, _output_)

            # 숫자포함, 대소문자 섞인 코드
            !python TextRecognitionDataGenerator/trdg/run.py -c 800 -k 5 -rk -rs -let -fi -f 512 -b 3 -tc '#000000,#888888' -t 8 --margins 50,50,50,50 --font $_font_ --output_dir $_output_

            # 소문자만
            !python TextRecognitionDataGenerator/trdg/run.py -c 600 -k 5 -rk -ca lower -fi -f 512 -b 3 -tc '#000000,#888888' -t 8 --margins 50,50,50,50 --font $_font_ --output_dir $_output_

            # 대문자만
            !python TextRecognitionDataGenerator/trdg/run.py -c 600 -k 5 -rk -ca upper -fi -f 512 -b 3 -tc '#000000,#888888' -t 8 --margins 50,50,50,50 --font $_font_ --output_dir $_output_

        

print("done")

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.