feat: add text generation
Browse files- font_dataset/layout.py +11 -16
font_dataset/layout.py
CHANGED
@@ -15,7 +15,7 @@ short_ratio = 0.1
|
|
15 |
median_ratio = 0.6
|
16 |
long_ratio = 0.3
|
17 |
|
18 |
-
from .text import CorpusGenerationConfig
|
19 |
|
20 |
short_condition = CorpusGenerationConfig(
|
21 |
min_num_line=1, max_num_line=1, min_num_char_per_line=2, max_num_char_per_line=5
|
@@ -242,7 +242,9 @@ def RGB2RGBA(color):
|
|
242 |
return color + (255,)
|
243 |
|
244 |
|
245 |
-
def generate(
|
|
|
|
|
246 |
while True:
|
247 |
try:
|
248 |
im = Image.open(img_path)
|
@@ -274,20 +276,13 @@ def generate(img_path: str, font: DSFont) -> tuple[Image.Image, FontLabel]:
|
|
274 |
else:
|
275 |
text_direction = "ttb"
|
276 |
|
277 |
-
#
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
# # TODO: generate text
|
285 |
-
# text = 'a\n' * text_line
|
286 |
-
# else:
|
287 |
-
# text_line = random.randint(median_condition['line'], long_condition['line'])
|
288 |
-
# # TODO: generate text
|
289 |
-
# text = 'a\n' * text_line
|
290 |
-
text = "测试文本\n第二行"
|
291 |
|
292 |
# text color & stroke
|
293 |
if random.random() < gray_ratio:
|
|
|
15 |
median_ratio = 0.6
|
16 |
long_ratio = 0.3
|
17 |
|
18 |
+
from .text import CorpusGenerationConfig, CorpusGeneratorManager
|
19 |
|
20 |
short_condition = CorpusGenerationConfig(
|
21 |
min_num_line=1, max_num_line=1, min_num_char_per_line=2, max_num_char_per_line=5
|
|
|
242 |
return color + (255,)
|
243 |
|
244 |
|
245 |
+
def generate(
|
246 |
+
img_path: str, font: DSFont, corpus_manager: CorpusGeneratorManager
|
247 |
+
) -> tuple[Image.Image, FontLabel]:
|
248 |
while True:
|
249 |
try:
|
250 |
im = Image.open(img_path)
|
|
|
276 |
else:
|
277 |
text_direction = "ttb"
|
278 |
|
279 |
+
# text length
|
280 |
+
if random.random() < short_ratio:
|
281 |
+
text = corpus_manager.generate(short_condition, font, render_language)
|
282 |
+
elif random.random() < median_ratio:
|
283 |
+
text = corpus_manager.generate(median_condition, font, render_language)
|
284 |
+
else:
|
285 |
+
text = corpus_manager.generate(long_condition, font, render_language)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
286 |
|
287 |
# text color & stroke
|
288 |
if random.random() < gray_ratio:
|