AI가 한글을 못 쓴다고? 텍스트 렌더링 전략 완전 가이드
1. 문제: AI는 왜 한글을 제대로 못 쓸까?
Google NanoBanana, GPT Image, Midjourney 등 최신 AI 이미지 생성 모델은 놀라운 수준의 이미지를 만들어냅니다. 하지만 한 가지 치명적인 약점이 있습니다. 비영어권 텍스트 렌더링입니다.
영어 텍스트는 잘 처리하지만, 한글/일본어/중국어 같은 비라틴 문자의 경우 약점이 드러납니다. 복잡한 단어인 "뙤약볕", "외곬"이나 사전에 없는 고유명사인 "늬읏", "낢이섬"를 이미지에 포함해 달라고 요청하면:
- 글자가 깨집니다 — 세상에 존재하지 않는 자음과 모음으로 이루어진 글자가 생성됩니다.
- 비슷하지만 다른 글자가 나옵니다 — "뙤약볕"이 "되약볕"이 되거나 전혀 다른 글자가 등장합니다.
- 레이아웃이 무너집니다 — 이미지의 글자 크기, 간격, 정렬이 엉망이 됩니다.
직접 확인해 보겠습니다
아래 프롬프트로 이미지를 생성해 봅시다:
'뙤약볕'이라는 이름의 밴드가 2월에 한강에서 버스킹을 하려고 해. 겨울 느낌과 강을 배경으로 하는 공연 홍보 포스터 만들어줘. 위치는 난지한강공원이고, 공연일은 2026년 2월 24일 7PM이야.
이 프롬프트를 일반적인 AI 이미지 생성 모델에 넣으면 이런 결과가 나옵니다:




디자인 자체는 그럴듯하지만, 텍스트가 전혀 읽을 수 없는 수준입니다. 이러한 이미지는 실무에서 사용할 수 없습니다. 포스터, 배너, SNS 콘텐츠 등 텍스트가 핵심인 디자인에서는 치명적인 문제입니다.
2. 전략: "AI에게 글씨를 쓰게 하지 마라"
핵심 아이디어는 간단합니다:
AI가 글자를 글자로 인식하게 하지 말고, 그림으로 인식하게 하자!
이 전략은 3단계로 이루어집니다:
- 텍스트 추출 — 프롬프트에서 이미지에 넣을 텍스트를 추출하고, "그림"으로 사용할 이미지를 렌더링하기 위해 스크립트를 감지합니다.
- 텍스트 캔버스 렌더링 — 추출된 텍스트를 적절한 폰트로 정확히 렌더링한 이미지를 생성합니다.
- 최종 이미지 생성 — 렌더링된 텍스트 이미지를 참조 이미지로 전달하여, AI가 텍스트를 정확히 재현하면서 디자인을 완성합니다.
3. 결과: 안정적인 텍스트 렌더링
위 전략을 적용하면, 동일한 프롬프트에서 이런 결과를 얻을 수 있습니다:




연속적으로 실패하던 "뙤약볕" 텍스트가 모든 이미지에서 정확히 렌더링됩니다. 깨진 텍스트로 인해 사용할 수 없었던 결과물이, 바로 활용 가능한 수준으로 바뀌었습니다.
어떻게 이런 결과를 만들 수 있는지, 각 단계를 하나씩 살펴보겠습니다.
4. 단계별 상세 설명
텍스트 추출
LLM에게 텍스트 렌더링 전문가 역할을 부여하여, 프롬프트를 분석합니다. 어떤 글자들이 렌더링 되야 하는지 판단하고, 그 중 이미지 생성 AI가 인식하지 못하는 글자가 있는지 확인합니다.
당신은 한국어 타이포그래피 전문가입니다. 사용자의 프롬프트를 분석하여 이미지에 렌더링할 핵심 한국어 텍스트 하나와 적절한 폰트 스타일을 결정해주세요.
## 1단계: 텍스트 후보 추출
아래 기준에 해당하는 텍스트를 모두 뽑아주세요.
- 따옴표(큰따옴표·작은따옴표·겹낫표 등)로 감싸진 텍스트
- 고유명사 (브랜드명, 상호명, 제품명, 행사명, 인물명 등)
- 이미지의 제목·헤드라인·메인 카피로 사용될 텍스트
## 2단계: 필터링
추출한 후보를 다음 두 조건으로 필터링합니다.
1. **한국어**일 것 — 한글(가~힣)이 포함된 텍스트만 남깁니다.
2. **복잡하거나 사전에 없는 단어**일 것 — 아래 중 하나 이상에 해당해야 합니다.
- 획수가 많은 한자어 혼용 단어 (예: 醬, 麵, 饗 등이 섞인 단어)
- 일반 사전에서 찾기 어려운 조어·합성어·신조어
- 브랜드명·상호명 등 고유 창작 단어
- 4음절 이상의 복합 한국어 단어
- 한글+숫자·한글+특수문자가 섞인 혼합 표기
## 3단계: 최종 선정
필터를 통과한 텍스트 중에서 **가장 이미지의 제목·헤드라인으로 적합한 텍스트 1개**를 선정합니다.
선정 우선순위:
1. 프롬프트에서 제목·타이틀·헤드라인 역할로 명시된 텍스트
2. 따옴표로 강조된 텍스트
3. 가장 길거나 복잡한 텍스트
필터를 통과한 텍스트가 없으면 texts를 빈 문자열("")로 설정하세요.
## 4단계: 폰트 스타일 결정
선정된 텍스트와 프롬프트의 디자인 맥락을 고려하여 폰트 카테고리와 굵기를 결정합니다.
- 포스터·공연·이벤트 → display, bold 또는 black
- 카페·레스토랑·감성 → handwriting, normal
- 비즈니스·기업·공식 → sans-serif, normal 또는 bold
- 럭셔리·프리미엄·전통 → serif, normal
- 코드·기술·데이터 → monospace, normal
## 출력 형식 (JSON만 출력)
```json
{
"texts": "선정된 텍스트 (없으면 빈 문자열)",
"fontCategory": "serif|sans-serif|display|handwriting|monospace",
"fontWeight": "normal|bold|black"
}
```
## 사용자 프롬프트LLM이 제시한 json 결과물:
{
"texts": [
{ "content": "뙤약볕", role": "headline" },
]
}
NBskills에서는 이 단계 전에 Planning(디자인 유형/목적/분위기/필수내용 파악)과 Refinement(11가지 상세 디자인 스펙 자동 도출)가 먼저 수행됩니다. 덕분에 텍스트 추출 시 디자인 맥락을 더 정확히 반영하고, 스타일 결정의 정밀도가 높아집니다.
텍스트를 이미지로 변환
서버에서 텍스트를 타이핑한 후 이미지 파일로 만듭니다. 이 이미지가 다음 단계에서 AI에게 전달할 글씨 이미지가 됩니다.
변환 과정을 "뙤약볕" 예시로 따라가 보겠습니다:
i. 언어 감지 — Agent가 렌더링할 글씨의 언어를 자동으로 감지합니다.
ii. 폰트 선택 - 프롬프트와 사용자와의 질의응답 내용으로부터 디자인 맥락을 추출하고, 이로부터 최적의 폰트를 결정합니다. 이 예시에서는 따뜻한 느낌을 주는 Black Han Sans가 선택되었고, 이후 최종 이미지 생성에서 현재의 폰트를 기반으로 발전시키게 됩니다.
iii. 텍스트 타이핑 — Node.js Canvas에서 선택된 폰트로 텍스트를 렌더링하여 PNG 이미지를 생성합니다.
결과물:

NBskills에서는 Refinement 단계에서 도출된 fontCategory가 이 과정에 자동 반영됩니다. 사용자가 폰트나 색상을 직접 지정할 필요 없이, 디자인 맥락에 맞는 최적의 조합이 자동으로 적용됩니다.
최종 이미지 생성
마지막 단계에서는 이전 단계에서 만든 참조 이미지와 사용자의 프롬프트를 함께 사용하여 최종 이미지를 생성합니다. 다음과 같은 시스템 프롬프트를 사용합니다:
당신은 전문 이미지 생성 AI입니다. 사용자의 요청에 맞는 이미지를 생성합니다.
## 중요 지침
1. 첫 번째 참조 이미지는 **로고 이미지**입니다. 이 로고를 디자인의 핵심 브랜드 요소로 취급하고, 디자인 맥락과 레이아웃에 맞는 적절한 위치와 크기로 배치해주세요.
2. 로고의 원본 형태와 비율을 왜곡 없이 유지하되, 전체 디자인과 조화롭게 통합해주세요.
3. 위의 "포함할 텍스트" 섹션에 명시된 텍스트뿐만 아니라, 디자인 목적에 필요한 추가 텍스트(서브 카피, 날짜, 장소, CTA 등)도 적절히 이미지에 포함해주세요.
4. 모든 텍스트는 가독성을 유지하면서 디자인적으로 조화롭게 배치해주세요.
## 사용자 요청
{{사용자 프롬프트}}NBskills에서는 이 단계에서 스킬 기반 프롬프트 강화 — 이미지 생성에 특화된 프롬프팅 스킬이 자동으로 로드되어 최종 프롬프트에 결합되는 과정이 자동으로 수행됩니다.
다시 결과를 보겠습니다:




이전과 달리 **"뙤약볕"**이 정확히 렌더링되고, 이미지 레이아웃도 큰 변형 없이 정상적으로 생성됩니다.
5. NBskills에서 이 모든 것을 간편하게
위 과정을 직접 수행하려면 상당한 노력이 필요합니다. 그리고 사실 이것만으로는 부족합니다 — 텍스트를 정확히 렌더링하는 것 외에도, 디자인 기획(Planning) 과 상세 스펙 도출(Refinement) 이 결과물의 품질을 크게 좌우합니다. NBskills는 이 모든 과정을 자동화합니다.
Planning이 핵심이다
많은 사람들이 프롬프트를 작성할 때 바로 "이런 이미지 만들어줘"라고 합니다. 하지만 좋은 결과물은 좋은 기획에서 시작됩니다.
NBskills는 이미지를 생성하기 전에 LLM에게 시니어 디자인 디렉터 역할을 부여하고, 다음 4가지 카테고리를 기반으로 디자인 방향을 체계적으로 파악합니다:
- design_type — 무엇을 디자인하나요? (포스터, 인스타 피드, 유튜브 썸네일 등)
- purpose — 디자인의 목적은 무엇인가요? (시선 끌기, 정보 전달, 구매 전환 등)
- mood — 원하는 분위기는? (모던하고 미니멀한, 따뜻하고 친근한, 강렬한 등)
- required_content — 반드시 들어가야 하는 내용이 있나요? (날짜, 장소, 로고 등)
프롬프트에서 이미 유추 가능한 항목은 질문에서 제외됩니다. 예를 들어 "포스터 만들어줘"라고 했다면 design_type은 질문하지 않고, mood와 purpose에 대해서만 질문이 생성됩니다.
실제 Planning 프롬프트 전문:
당신은 시니어 디자인 디렉터입니다. 사용자의 요청을 분석하여, 최종 디자인 스펙을 완성하기 위해 꼭 필요한 질문만 생성합니다.
사용자 요청: "{{사용자 프롬프트}}"
## 당신이 최종적으로 채워야 하는 디자인 스펙 (11가지)
1. targetAudience — 타깃/상황 (예: "20대 여성", "직장인", "투자자")
2. mediaFormat — 매체·사이즈·형식 (예: "인스타 피드(1080×1080)", "A4 인쇄", "PPT 16:9")
3. layout — 레이아웃·그리드 (예: "중앙 정렬 단일 카드", "좌측 이미지 + 우측 텍스트 2단")
4. usageContext — 사용 맥락·환경 (예: "모바일 SNS 피드", "오프라인 매장 진열")
5. typography — 서체·크기·굵기 (fontCategory, fontSize, fontWeight)
6. aspectRatio — 이미지 비율 (예: "1:1", "16:9", "9:16")
7. resolution — 권장 해상도 (예: "1080x1080", "1920x1080")
8. colorScheme — 색상 팔레트 (textColor, backgroundColor, accentColor)
9. mood — 분위기 키워드 (예: "elegant", "playful", "bold")
10. textAlignment — 텍스트 정렬 ("left" | "center" | "right")
11. layoutHint — 레이아웃 방향 ("horizontal" | "vertical" | "centered")
## 사고 과정 (이 순서대로 진행하세요)
### Step 1: 유추 시도
사용자 요청만으로 위 11가지 스펙 각각을 유추해보세요. 확신이 있는 항목과 불확실한 항목을 구분합니다.
### Step 2: 유추 불가능 항목 분석
유추하기 어려운 항목들을 모아보세요. 그리고 "사용자가 어떤 정보 하나를 알려주면, 거기서부터 여러 스펙을 연쇄적으로 유추할 수 있는지" 생각하세요.
예를 들어:
- "어디에 쓰실 건가요?" → mediaFormat, aspectRatio, resolution, usageContext를 한 번에 유추 가능
- "어떤 분위기를 원하세요?" → mood, colorScheme, typography를 유추 가능
- "누가 주로 보게 되나요?" → targetAudience, layout, textAlignment을 유추 가능
### Step 3: 레버리지 높은 질문 설계
하나의 답변으로 가능한 많은 스펙 요소를 유추할 수 있는 질문을 우선으로 선택합니다.
- 질문은 최대 3~4개까지만 생성합니다.
- 질문은 비전문가도 쉽게 답할 수 있는 일상 언어로 작성합니다.
- 각 질문의 선택지는 사용자 요청 맥락에 맞는 3~5개로 구성합니다.
- 이미 유추 가능한 내용은 질문하지 마세요.
- 모든 스펙이 충분히 유추 가능하면 빈 배열 []을 반환하세요.
## 출력 형식 (JSON)
```json
[
{
"id": "usage",
"question": "어디에 쓰실 건가요?",
"options": [
{ "id": "instagram_feed", "label": "인스타그램 피드" },
{ "id": "poster", "label": "포스터/전단지" },
{ "id": "web_banner", "label": "웹 배너" }
],
"infersSpecs": ["mediaFormat", "aspectRatio", "resolution", "usageContext"]
}
]
```
## 중요
- 한국어로 작성합니다.
- 질문 id는 질문의 의미를 나타내는 자유로운 영문 snake_case를 사용합니다.
- infersSpecs에는 해당 질문의 답변으로 유추할 수 있는 스펙 이름을 배열로 적어주세요.이 Planning 단계가 최종 결과물의 품질 차이를 만드는 핵심입니다.
Refinement로 전문가 수준의 디자인 스펙 자동 도출
Planning 답변을 수집한 후, 시니어 아트 디렉터이자 타이포그래피 전문가 역할의 LLM이 11가지 구체적인 디자인 사양을 자동으로 도출합니다:
- targetAudience — 20대~30대 음악 팬
- mediaFormat — 포스터(A3/A4)
- layout — 풀블리드 배경 위 오버레이
- usageContext — 오프라인 게시 + SNS 공유
- typography — display, xlarge, black
- aspectRatio — 3:4
- resolution — 1080x1440
- colorScheme — 텍스트 #FFF, 배경 #1A1A3E
- mood — 차분하면서도 임팩트 있는
- textAlignment — center
- layoutHint — vertical
사용자가 "겨울 느낌"이라고만 했어도, 전문가 역할의 LLM이 차가운 톤의 색상 팔레트, 세리프 계열의 폰트, 적절한 해상도 등을 자동으로 추론합니다. 복잡한 프롬프트 엔지니어링을 직접 할 필요가 없습니다.
전문가 수준의 시스템 프롬프트 내장
NBskills에는 위에서 소개한 시니어 디자인 디렉터, 아트 디렉터, 타이포그래피 전문가 역할의 프롬프트가 이미 내장되어 있습니다.
사용자는 "포스터 만들어줘"라고만 해도, 내부적으로는 전문가 수준의 프롬프팅 전략이 자동으로 적용됩니다.
다양한 작업을 한 곳에서
텍스트 렌더링만이 아닙니다. NBskills는 하나의 채팅 인터페이스에서:
- 다국어 텍스트 렌더링 — 한글, 일본어, 중국어, 태국어, 아랍어 등
- 캐릭터 포즈 변경 — 캐릭터의 자세와 앵글 조정
- 일반 이미지 생성/편집 — 대화형으로 이미지 생성 및 수정
이 모든 작업을 처리합니다. 작업 유형에 따라 스킬 기반 자동 매칭으로 최적의 프롬프팅 전략이 자동 적용됩니다.
무료 + 한 번에 여러 장 생성
현재 베타 기간 동안 모든 기능을 무료로 사용할 수 있습니다. 게다가 한 번의 요청으로 최대 10장까지 동시 생성이 가능해, 다양한 시안을 빠르게 비교할 수 있습니다.
9개 언어 자동 감지 및 폰트 매칭
한국어뿐 아니라, 일본어, 중국어(간체), 태국어, 아랍어, 데바나가리, 키릴 문자 등 9개 스크립트를 자동 감지합니다. 각 언어에 맞는 최적의 폰트가 자동으로 선택되며, 아랍어와 같은 RTL(오른쪽에서 왼쪽) 스크립트도 지원합니다.
멀티턴 대화로 반복 개선
한 번에 완벽하지 않아도 괜찮습니다. 대화를 이어가며 "텍스트 크기를 더 키워줘", "배경 색을 바꿔줘" 등의 요청으로 점진적으로 개선할 수 있습니다. 이전 컨텍스트가 유지되므로, 처음부터 다시 설명할 필요가 없습니다.
최신 AI 모델 자동 라우팅
NBskills는 작업 유형에 따라 최적의 AI 모델을 자동으로 선택합니다. 사용자가 어떤 모델을 써야 할지 고민할 필요가 없습니다. 항상 최신, 최적의 모델이 적용됩니다.
6. 마치며
AI 이미지 생성에서 다국어 텍스트 렌더링은 여전히 어려운 문제입니다.
하지만 **"AI가 글자를 글자로 인식하게 하지 않고, 로고로 인식하게 한다"**라는 독특한 전략을 생각해낸다면, 모델을 한계까지 사용할 수 있습니다. NBskills는 한국어 텍스트 렌더링을 포함한 다양한 프롬프팅 노하우를 자동화하여, 누구나 연구소 레벨의 결과물을 얻을 수 있도록 만들어져 있습니다.
지금 바로 NBskills에서 체험해 보세요.