최근 들어 나는 꽤 직관적인 느낌이 있습니다.
이번 이미지 생성 모델의 물결에서 많은 모델은 이제 단순히 ‘글자처럼 보이는 것’을 그리는 수준을 넘어, 정말로 글자를 제대로 써내기 시작했습니다.
이 일은 사실 한 번 멈추어 생각해 볼 만합니다.
만약 앞선 2년 동안의 생성 결과를 돌아보면, 꽤 안정적인 허점을 발견하게 됩니다:
화면 분위기, 구도, 빛과 그림자는 이미 강했는데, 그림에 간판, 포스터 제목, 패키지 문구, UI 텍스트가 등장하기만 하면 대개 흠이 드러났습니다. 영어는 글자가 뒤섞이고, 중국어는 획이 빠지고, 작은 글자는 더 심하게 엉망이었습니다. 이 문제가 얼마나 심했냐면, visual text generation을 다룬 많은 논문이 첫 문단에서 다음과 같이 말할 정도였습니다. 현재 text-to-image는 전체적인 fidelity가 높지만, 시선을 text area로 옮기면 결함이 아주 뚜렷합니다. oai_citation:0‡arXiv
하지만 최근에는 상황이 조금 달라졌습니다.
제가 직접 본 몇 가지 새로운 결과는 ‘가끔 몇 글자씩 맞출 수 있다’는 수준을 넘어섰습니다. 제목, 슬로건, 장면 속 간판 글자를 처리할 때 안정성이 예전보다 훨씬 높아졌다는 걸 분명히 느꼈습니다. 그래서 궁금해졌습니다: 이건 결국 어떻게 해결된 걸까요?
모델이 커지고 데이터가 많아져서 텍스트 문제까지 슬쩍 배운 걸까요? 아니면 연구계가 이미 슬쩍 완전히 다른 풀이 방식으로 바꿔 둔 걸까요?
저는 최근 2~3년간의 논문들을 한번 둘러봤고, 꽤 분명한 결론을 얻었습니다:
텍스트 문제는 prompt engineering으로 조금씩 다듬어 만들어낸 것도 아니고, 모델이 ‘저절로 익힌’ 것도 아닙니다. 본질적으로 별개의 문제로 떼어 내 다시 모델링한 것입니다. oai_citation:1‡arXiv
이 글에서는 이 호기심을 따라가며 다음 세 가지를 명확히 풀어보고 싶습니다:
- 이미지 생성이 텍스트를 만나면 왜 특히 쉽게 무너지는가;
- 최근의 방법들은 이 문제를 어떻게 해결했는가;
- 왜 점점 이 노선이 prompt가 스스로 타이포그래피 능력을 길러내기를 기대하는 대신, glyph-first 시스템으로 가야 하는가.
먼저 가장 핵심적인 점: 텍스트는 일반적인 이미지 콘텐츠가 아닙니다
이 문제를 이해할 때 첫걸음은 attention을 들여다보거나 OCR loss를 분석하는 것이 아니라, 먼저 한 가지를 인정하는 것입니다:
텍스트는 ‘구름, 나무, 옷, 벽면 질감’처럼 같은 종류의 객체가 아닙니다.
대부분의 일반적인 이미지 콘텐츠는 연속적입니다.
구름은 조금 흐려져도 여전히 구름이고, 나뭇결은 조금 틀려도 여전히 나뭇결입니다.
하지만 텍스트는 다릅니다. 텍스트는 오류 허용도가 매우 낮은 이산적인 기호 체계입니다. 글자 하나에서 획 하나가 빠지거나 구조 하나가 잘못되면, 곧바로 읽을 수 없게 될 수 있습니다.
이것이 초기 많은 모델에 아주 미묘한 인상을 준 이유이기도 합니다:
멀리서는 꽤 그럴듯한데, 가까이 보면 맞지 않습니다.
‘여기에는 글자가 있어야 한다’는 느낌은 들지만, 자세히 보면 사실은 텍스트처럼 생긴 질감일 뿐, 읽을 수 있는 텍스트가 아닙니다.
GlyphControl은 2023년부터 이 문제를 아주 직설적으로 말했습니다. 시각적 텍스트 생성은 일반 T2I task의 자연스러운 확장이 아니며, 정확한 텍스트를 안정적으로 생성하려면 추가 glyph 조건 정보가 반드시 필요합니다. AnyText도 비슷한 판단을 합니다. 이미지 전체의 품질이 이미 높아도, 텍스트 영역에 초점을 맞추는 순간 문제가 그대로 드러납니다. oai_citation:2‡arXiv
왜 예전의 모델은 ‘글자가 있는 것처럼’ 보이면서도 제대로 쓰지 못했나?
모델 구조만 놓고 보면, 이 문제의 발생은 꽤 자연스럽습니다.
전통적인 text-to-image의 조건 주입은 기본적으로 이 경로입니다:
- 이미지 latent / patch token을 Query로 사용
- 텍스트 token을 Key / Value로 사용
- 이미지가 생성되는 동안 계속 텍스트 조건을 ‘읽도록’ 하기
이 메커니즘은 일반적인 semantic alignment에 매우 효과적입니다.
예를 들어 prompt에 red car on snow가 있으면, 모델은 쉽게 learns:
- 어떤 영역이
car을 살펴봐야 하는지 - 어떤 영역이
snow를 살펴봐야 하는지 - 어떤 부분이
red의 영향을 더 많이 받는지
하지만 문제는 텍스트 token이 semantics를 제공하는 것이지, glyph를 제공하는 것은 아니라는 점입니다.
token ‘A’는 문자 A의 시각적 구조가 아니고, token ‘春’도 ‘春’자의 구체적인 획 배열이 아닙니다.
따라서 시스템이 semantic token만 소비한다면, 더 잘 배우게 되는 것은 다음과 같습니다:
여기에 ‘텍스트가 들어가야 한다’는 느낌이 있어야 한다
이 아니라:
여기에는 반드시 이 문자가 있어야 하고, 획도 정확해야 하며, 경계도 분명해야 하고, 인접한 문자끼리도 서로 부딪히지 않아야 한다
이것이 지난 2~3년간의 논문들이 거의 한 방향으로 수렴한 이유입니다:
semantic conditioning만으로는 안 됩니다. 텍스트를 ‘언어 프롬프트’에서 ‘명시적인 glyph 조건’으로 승급시켜야 합니다.
GlyphControl은 그렇고, AnyText도 그렇고, FLUX-Text도 그렇고, TextPixs도 그렇습니다. oai_citation:3‡arXiv
연구계는 이 문제를 어떻게 단계별로 분해해 나갔나?
최근 몇 년의 작업을 이어서 살펴보면, ‘어느 한 논문이 갑자기 신기한 모듈을 발명했다’기보다 꽤 분명한 진화 과정을 거쳤다는 생각이 듭니다.
첫 번째 단계: ‘텍스트 생성’을 독립된 문제로 인정하기
이 단계에서 가장 중요한 것은 기술 세부가 아니라, 문제가 다시 명명되었다는 점입니다.
GlyphControl의 핵심은 visual text generation에 glyph-conditional control가 필요하며, character-aware text encoder나 더 큰 범용 모델이 스스로 배우게 하기만 해서는 안 된다고 명확히 제시했다는 점입니다. 논문은 또 LAION-Glyph 데이터셋을 구축하고, OCR-based metrics, CLIP score, FID로 결과를 평가했습니다. 이 움직임은 중요합니다. 텍스트 렌더링은 전용 benchmark와 지표를 가질 자격이 있다는 뜻이기 때문입니다. oai_citation:4‡arXiv
AnyText는 이를 한 단계 더 체계화했습니다. 텍스트 생성뿐 아니라 다국어 텍스트 생성과 편집을 하나의 확산 프레임워크에 넣고, AnyWord-3M 데이터셋과 AnyText-benchmark를 도입했습니다. 논문도 분명히 말합니다. 이제 텍스트 영역의 문제는 일반적인 이미지 fidelity의 부수적 현상으로 취급할 수 없고, 독립적으로 모델링해야 합니다. oai_citation:5‡arXiv
즉, 첫 단계에서 실제로 바뀐 것은 다음과 같습니다:
모두가 더 이상 ‘왜 모델은 아직 글자를 쓰지 못하나’를 묻지 않고,
‘글자 쓰기를 전용 task로 본다면, 어떻게 표현하고, 어떻게 훈련하고, 어떻게 평가해야 할까’를 묻기 시작했습니다.
두 번째 단계: semantic-first에서 glyph-first로
제가 보기엔 가장 핵심적인 전환입니다.
예전 방식은 본질적으로 semantic-first였습니다:
먼저 문자열의 의미 표현을 모델에 준 다음, 이미지 공간에서 모델이 스스로 문자 형태를 ‘깨닫도록’ 기대했습니다.
하지만 시간이 지나면서 이 길의 천장이 높지 않다는 사실을 알게 됐습니다.
semantic과 glyph는 애초에 다르기 때문입니다. 어떤 단어의 meaning을 안다고 해서, 그것을 그림에 어떻게 써야 하는지까지 아는 것은 아닙니다.
그래서 GlyphControl의 해법은 매우 직접적이었습니다:
‘여기에 SALE을 쓰세요’라고만 알려주는 게 아니라, SALE의 glyph instruction도 명시적으로 넘겨줍니다. 그래야 사용자는 텍스트 내용뿐 아니라 위치와 크기까지 제어할 수 있습니다. oai_citation:6‡arXiv
AnyText도 같은 방향으로 더 나아갔고, 그 설계에는 특히 중요한 두 모듈이 있습니다:
- Auxiliary latent module: glyph, position, masked image를 입력받아 텍스트와 관련된 latent feature를 생성함;
- Text embedding module: OCR 모델로 stroke information을 인코딩한 뒤, 해당 embedding을 caption embedding과 융합함.
이것만으로도 꽤 명확한 신호가 나옵니다:
진짜로 효과적인 텍스트 생성은 prompt를 조금 더 많이 먹이는 게 아니라, glyph, position, region처럼 원래 제대로 표현되지 않던 것들을 모델이 직접 소비할 수 있는 조건으로 바꾸는 것입니다. oai_citation:7‡arXiv
여기까지 읽으며 느낀 감각은 꽤 강합니다:
이건 ‘프롬프트 이해력 최적화’가 아니라, 입력 공간 자체를 다시 정의하는 일입니다.
세 번째 단계: 문제는 ‘glyph가 있느냐’가 아니라 ‘glyph를 어떻게 시스템에 넣느냐’
glyph conditioning이共识가 된 뒤, 연구 초점은 한 층 더 깊이 내려갔습니다.
더 이상 ‘glyph를 줘야 하는가’를 다투지 않고, 다음과 같은 질문들을 연구하기 시작했습니다:
- glyph를 추가 입력으로만 주면 충분할까?
- 아니면 backbone을 더 깊이 바꿔야 할까?
- 훈련 목표도 함께 바꿔야 할까?
FLUX-Text는 제가 보기엔 매우 전형적인 사례입니다.
화려한 ‘새 세계관’을 펼치는 방식은 아니지만, 꽤 현실적으로 접근했습니다. FLUX-Fill 같은 강한 base model 위에서 비교적 가벼운 glyph와 text embedding 모듈로 텍스트 이해와 생성을 강화하면서, 기존 생성 능력은 최대한 유지하는 방식입니다. 더 중요한 점은 Regional Text Perceptual Loss를 명시적으로 제안했다는 것입니다. 즉, 텍스트 영역은 별도로 최적화해야 합니다. oai_citation:8‡arXiv
이 부분은 사실 특별히 중요합니다.
텍스트 영역은 보통 작습니다. 그런데 훈련 목표가 여전히 전체 이미지에 대해 균일하다면, 대부분의 gradient는 배경에서 나옵니다. 모델은 당연히 ‘이미지를 예쁘게 만드는 것’을 ‘글자를 정확히 쓰는 것’보다 먼저 배우게 됩니다. FLUX-Text의 메시지는 어느 정도 다음과 같습니다:
텍스트가 중요하다고 말하면서, loss function 안에서는 계속 배경 소음의 작은 일부로만 취급할 수는 없다. oai_citation:9‡arXiv
네 번째 단계: ‘단어 수준 조건’에서 ‘문자 수준 결합’까지 더 내려가기
이제 문제는 더 세분화됩니다.
glyph를 줬다고 해서 문자끼리 간섭하지 않는다는 뜻은 아닙니다.
모델의 문제가 더 이상 ‘무엇을 써야 하는지 전혀 모른다’가 아닌 경우가 많습니다:
- 인접한 문자들이 서로 달라붙음
- 한 문자의 구조가 다른 문자로 넘어감
- 전체 문자열은 대략적인 형태를 보이지만, 개별 문자는 불안정함
이럴 때 TextPixs 같은 연구가 흥미롭습니다.
몇 가지 아주 목적지향적인 일을 했습니다:
- 듀얼 스트림 인코딩: semantic text stream + glyph visual stream
- character-aware attention
- OCR-in-the-loop feedback
- attention segregation loss
이 방법의 핵심 직관은 단순합니다:
텍스트는 단어 수준의 정렬만으로 충분하지 않고, 문자 수준으로 정렬해야 합니다.
일반 T2I에서는 보통 token-level control면 충분합니다. 하지만 텍스트 렌더링은 다릅니다. 문자는 최종 가독성의 최소 단위입니다. 문자 사이의 attention이 안정적으로 분리되지 않으면, 시스템은 ‘이건 텍스트 한 줄이구나’라는 전체적인 느낌은 얻어도 각각의 글자를 제대로 쓰지 못합니다. TextPixs도 목표를 분명히 합니다. readable, meaningful, correctly spelled text 문제를 해결하는 것입니다. oai_citation:10‡arXiv
다섯 번째 단계: 모델이 ‘철자를 처음부터 배우는’ 대신 ‘텍스트를 장면에 통합하는’ 일을 맡아야 할지도 모른다
더 새로운 연구들을 살펴볼 때, 제가 가장 interested한 건 정확률이 얼마나 올랐는지가 아니라, 문제 정의가 변하기 시작했다는 점입니다.
예를 들어 TextFlux의 접근은 분명합니다:
OCR-free DiT model for high-fidelity multilingual scene text synthesis를 내세우면서, glyph accuracy와 scene integration에 초점을 둡니다. oai_citation:11‡arXiv
이것은 꽤 큰 paradigm shift를 뜻합니다:
- 기존 문제: 모델이 semantic에서 spelling을 스스로 배우게 하는 법
- 새로운 문제: 신뢰할 수 있는 문자 표현을 장면 속에 자연스럽게 통합하는 법
점점 후자가 더 장기적인 방향일 수 있다고 느껴집니다.
범용 이미지 모델에게 다음 두 가지를 동시에 맡긴다면:
- 복잡한 시각 세계를 생성하고
- 타이포그래피 엔진처럼 문자를 정확히 출력해야 한다면
모델은 내재적으로 어색해질 수밖에 없습니다.
하지만 spelling을 최대한 구조화하고 명시화해, 모델이 융합──즉, 스타일, 재질, 조명, 원근, 가장자리 전환──에 집중하게 하면 이 길은 오히려 더 합리적입니다.
이것이 지금 이 연구 노선을 다음과 같이 이해하게 된 이유입니다:
‘모델이 드디어 글자를 쓰게 됐다’가 아니라,
‘시스템이 더 이상 텍스트를 일반적인 질감으로 취급하지 않게 됐다’.
이 접근들을 한 문장으로 압축하면, 결국 세 단계입니다
세부 사항까지 펼치지 않고 최근 몇 년의 노선을 압축하면, 결국 다음 세 단계입니다:
첫 번째 단계: 텍스트를 의미 프롬프트에서 glyph 조건으로 승급시키기
즉, prompt-only에서 glyph-first로 이동하는 것입니다.
GlyphControl과 AnyText 같은 방법들이 이 점을 가장 먼저 분명히 보여줬습니다. oai_citation:12‡arXiv
두 번째 단계: 텍스트 영역을 전체 이미지에서 따로 분리해 최적화하기
즉, 전체 이미지의 loss가 텍스트 영역을 계속淹没하지 않게 하는 것입니다.
FLUX-Text 같은 regional text loss 방식이 전형적입니다. oai_citation:13‡arXiv
세 번째 단계: 제어 단계를 단어 수준에서 문자 수준으로, 다시 장면 통합 수준까지 발전시키기
TextPixs는 문자 수준 결합 단계를 대표하고, 이후 일부 연구는 scene integration을 더 강조합니다. oai_citation:14‡arXiv
내 생각: 이것은 이미지 생성이 ‘그림을 그리는 능력’에서 ‘실제로 쓸 수 있는 능력’으로 나아가는 분기점일지도 모릅니다
이번에 논문들을 살펴보면서 가장 크게 느낀 것은 ‘아, 어떤 모듈이 이렇게 clever하구나’가 아니라, 다음이었습니다:
텍스트 문제는 정말 하나의 분기점처럼 보입니다.
지난 많은 시각 생성 모델은 주로 ‘그럴듯한 이미지를 생성하는 문제’를 해결했습니다.
하지만 장면이 포스터, 패키지, UI, 간판, 광고, 정보 카드가 되면 평가 기준이 바로 바뀝니다:
- 화면이 아무리 예뻐도 글자가 틀리면 쓸 수 없음;
- 분위기가 아무리 좋아도 제목이 흐리면 생산 과정에 넣을 수 없음;
- 텍스트 편집이 불안정하면 실제 디자인 워크플로에 연결하기 어려움.
따라서 텍스트 렌더링은 표면上看 작은 세부 사항 같지만, 실제로는 전체 시스템을 더 엔지니어링하고 구조화된 방향으로 밀어냅니다.
모델이 과거에는 회피할 수 있었던 문제에 답하도록 강요하는 것입니다:
당신은 ‘예쁘게 보이는 시각적 질감’을 생성하고 있나요,
아니면 ‘사람이 읽고 사용할 수 있는 정보’를 생성하고 있나요?
최근 이 논문들이 제시한 공통 답은 대략 다음과 같습니다:
만약 후자를 생성하고 싶다면, 텍스트를 다시 일반적인 이미지 콘텐츠로 취급하지 마세요.
참고 논문
[1] Yukang Yang et al., GlyphControl: Glyph Conditional Control for Visual Text Generation, NeurIPS 2023. glyph-conditional control를 제안하고 LAION-Glyph와 OCR-based 평가를 구축함. oai_citation:15‡arXiv
[2] Yuxiang Tuo et al., AnyText: Multilingual Visual Text Generation and Editing, 2023/2024. auxiliary latent module, text embedding module, AnyWord-3M / AnyText-benchmark를 제안함. oai_citation:16‡arXiv
[3] Rui Lan et al., FLUX-Text: A Simple and Advanced Diffusion Transformer Baseline for Scene Text Editing, 2025. 경량 glyph/text embedding과 text fidelity를 강조하고, 텍스트 영역을 인식하는 최적화 방식을 도입함. oai_citation:17‡arXiv
[4] TextPixs: Glyph-Conditioned Diffusion with Character-Aware Attention and OCR-in-the-Loop Feedback for Accurate Text Rendering, 2025. dual-stream, character-aware attention, OCR-in-the-loop, 문자 수준 정확도를 강조함. oai_citation:18‡arXiv