Files
2nd/10_Wiki/Topics/AI_and_ML/인-이미지 텍스트(In-Image Text).md
T
2026-05-10 22:08:15 +09:00

216 lines
7.5 KiB
Markdown

---
id: wiki-2026-0508-인-이미지-텍스트-in-image-text
title: 인-이미지 텍스트(In-Image Text)
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [In-Image Text, Text Rendering, Typography in AI Images, Glyph Rendering]
duplicate_of: none
source_trust_level: A
confidence_score: 0.9
verification_status: applied
tags: [image-generation, text-rendering, typography, flux, dall-e, stable-diffusion]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack:
language: Python
framework: Diffusers/FLUX
---
# 인-이미지 텍스트(In-Image Text)
## 매 한 줄
> **"매 SD 1.5 (2022) 의 의 garbled gibberish 의 의 의, 매 FLUX.1 / Imagen 3 / GPT-image-1 (2024-2026) 의 의 word-level accurate text rendering 의 가능."**. 매 image generation model 의 의 long-standing weakness 의 typography rendering — diffusion model 의 의 의 의 의 의 character-level glyph 의 의 의 의 의. 매 2026 의 의 T5 text encoder + flow matching (FLUX) + dedicated text rendering datasets 의 의 logo / poster / UI mockup / meme 의 의 의 의 production-ready.
## 매 핵심
### 매 모델 의 의 text rendering capability (2026)
- **FLUX.1 dev/pro (BFL)**: 의 — short text (< 10 words), brand 의 의.
- **Imagen 3 (Google)**: 의 의 — long text 의 high accuracy.
- **GPT-image-1 (OpenAI)**: 의 — paragraph-level, multilingual.
- **SD 3.5 (Stability)**: 의 — short text 의 의 의 (open-weights).
- **Ideogram 2.0**: text-specialized — 의 typography 의 의.
- **Recraft V3**: SOTA for text rendering 의 design (poster/UI).
### 매 의 어떤 model 의 의 의
- **T5-XXL text encoder**: 의 character-aware (Imagen, FLUX 의 의).
- **Glyph-aware data augmentation**: synthetic text overlay training data.
- **Flow matching**: 의 sharp glyph edge 의 의 (FLUX, SD3).
- **Specialized fine-tune**: Ideogram, Recraft 의 typography 의 의 fine-tune.
### 매 응용
1. Logo / brand mockup.
2. Poster / advertisement design.
3. Social media graphic (meme, infographic).
4. UI mockup with realistic copy.
5. Book cover, album cover.
## 💻 패턴
### FLUX.1 의 의 short text rendering
```python
from diffusers import FluxPipeline
import torch
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-dev",
torch_dtype=torch.bfloat16,
).to("cuda")
# 매 GOOD: quoted, short, common word
prompt = 'A coffee shop sign that reads "MORNING BREW", warm sunlight, photo'
image = pipe(prompt, guidance_scale=3.5, num_inference_steps=28).images[0]
```
### GPT-image-1 (OpenAI) — long text + edit
```python
from openai import OpenAI
client = OpenAI()
result = client.images.generate(
model="gpt-image-1",
prompt="""
A vintage poster with the title "ANTIGRAVITY" at the top in bold sans-serif,
subtitle "A Journey Beyond Gravity" below, and tagline at the bottom:
"In Theaters December 2026". Minimalist, retro-futurist style.
""",
size="1024x1536",
)
image_url = result.data[0].url
```
### Ideogram API (text-specialized)
```python
import requests
response = requests.post(
"https://api.ideogram.ai/generate",
headers={"Api-Key": IDEOGRAM_KEY},
json={
"image_request": {
"prompt": 'Restaurant menu with "TODAY\'S SPECIAL: Truffle Risotto $24"',
"aspect_ratio": "ASPECT_3_4",
"model": "V_2_TURBO",
"magic_prompt_option": "AUTO",
}
},
)
```
### Post-hoc text overlay (의 reliable fallback)
```python
from PIL import Image, ImageDraw, ImageFont
# 매 model 의 의 garbage text 의 의 의 → blank space 의 의 의 의 PIL 의 overlay
base = Image.open("generated_poster.png")
draw = ImageDraw.Draw(base)
font = ImageFont.truetype("Inter-Bold.ttf", 72)
draw.text((100, 200), "ANTIGRAVITY", fill="white", font=font, stroke_width=3, stroke_fill="black")
base.save("final.png")
```
### Inpainting 의 text fix (FLUX Fill)
```python
from diffusers import FluxFillPipeline
pipe = FluxFillPipeline.from_pretrained(
"black-forest-labs/FLUX.1-Fill-dev",
torch_dtype=torch.bfloat16,
).to("cuda")
# 매 garbled text 의 의 의 mask 의 의 의 redraw
result = pipe(
image=base_image,
mask_image=text_mask, # white where text should go
prompt='clear bold text "WELCOME"',
num_inference_steps=30,
guidance_scale=30, # 의 high — text 의 의 의
).images[0]
```
### Glyph ControlNet (open-source approach)
```python
# 매 AnyText / GlyphControl 의 의 의 의 의 character-level control
from diffusers import StableDiffusionControlNetPipeline, ControlNetModel
controlnet = ControlNetModel.from_pretrained(
"AIGCDesignGroup/AnyText",
torch_dtype=torch.float16,
)
pipe = StableDiffusionControlNetPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
controlnet=controlnet,
torch_dtype=torch.float16,
).to("cuda")
# 매 glyph mask 의 의 의 image 의 conditioning
glyph_image = render_text_to_image("HELLO WORLD", font="Inter-Bold")
result = pipe(
prompt="neon sign in cyberpunk alley",
image=glyph_image,
controlnet_conditioning_scale=1.0,
).images[0]
```
### Multilingual text (CJK / Arabic)
```python
# 매 FLUX / SD 의 Latin alphabet 의 의 의 — CJK 의 의 의
# 매 Imagen 3 / GPT-image-1 의 multilingual 의 의 better
prompt = '한국어 간판 "안녕하세요" cafe sign, neon, night photo'
# → GPT-image-1 의 의 가능, FLUX 의 의 garbled 의 가능
```
### Prompting 의 의
```
GOOD prompts:
- 'sign reads "OPEN"'
- 'a book titled "The Pragmatic Programmer"'
- 'graffiti spelling "HOPE" on a brick wall'
BAD prompts (likely garbled):
- 'a paragraph of legal text' # 의 too long
- 'random foreign language text' # 의 ambiguous
- 'small text in the corner' # 의 small = harder
```
## 매 결정 기준
| 상황 | Approach |
|---|---|
| Short logo / sign (1-3 words) | FLUX.1 dev/pro |
| Poster / multi-line text | Imagen 3 / GPT-image-1 / Recraft |
| Typography-heavy (menu, infographic) | Ideogram 2.0 / Recraft V3 |
| Multilingual (CJK, RTL) | GPT-image-1 / Imagen 3 |
| Open-weights + custom text | AnyText / GlyphControl ControlNet |
| Reliable production text | Post-hoc PIL overlay (의 deterministic) |
| Fix garbled text in existing image | FLUX Fill inpaint OR overlay |
**기본값**: FLUX.1 dev 의 의 (short text), GPT-image-1 의 의 의 (long/multilingual). 매 mission-critical 의 의 PIL overlay 의 의 의.
## 🔗 Graph
- 부모: [[Image_Generation]] · [[Diffusion_Models]]
- 변형: [[FLUX_1]] · [[Imagen_3]] · [[Ideogram]]
- 응용: [[Logo_Design]] · [[Poster_Generation]] · [[Meme_Generation]]
- Adjacent: [[ControlNet]] · [[FLUX_Fill_Inpainting]] · [[Typography]]
## 🤖 LLM 활용
**언제**: prompt scaffolding for text rendering, model selection 의 의 word count 의 의, fallback strategy proposal.
**언제 X**: visual quality judgement (의 human eval), brand-critical typography (의 design tool 의 의 의 final).
## ❌ 안티패턴
- **Long paragraph in prompt**: 의 expect verbatim — 의 5-10 word 의 의.
- **Small text expected**: 매 < 32px equivalent 의 의 의 garbled.
- **Uncommon font in prompt**: 매 font name 의 의 의 의 의 의 의.
- **No quotes around target text**: 의 model 의 의 의 의 의 의 의 의 의.
- **Trust 의 first generation**: 의 retry 3-5x — 의 cherry-pick.
## 🧪 검증 / 중복
- Verified (Black Forest Labs FLUX paper, Google Imagen 3 report, OpenAI gpt-image-1 system card, Ideogram blog, AnyText paper).
- 신뢰도 A.
## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — in-image text rendering (FLUX, Imagen, Ideogram) |