# 정확한 텍스트와 숫자를 위해 “밑그림” 사용하기

> Clean Markdown view of GeekNews topic #29174. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=29174](https://news.hada.io/topic?id=29174)
- GeekNews Markdown: [https://news.hada.io/topic/29174.md](https://news.hada.io/topic/29174.md)
- Type: GN+
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2026-05-05T08:27:32+09:00
- Updated: 2026-05-05T08:27:32+09:00
- Original source: [samcollins.blog](https://samcollins.blog/underdrawings/)
- Points: 1
- Comments: 1

## Topic Body

- **underdrawing**은 결정론적 도구로 숫자와 텍스트 위치가 들어간 밑그림 이미지를 먼저 만들고, 이미지 생성 모델이 그 위에 시각적 스타일을 입혀 정확도를 높이는 방식임  
- 50개의 디딤돌을 나선형으로 배치하고 1부터 50까지 번호를 붙이는 과제에서 **Gemini 3 Pro**와 **ChatGPT Images 2**는 underdrawing 없이 숫자와 순서를 안정적으로 맞추지 못했음  
- 같은 과제에 underdrawing을 함께 넣은 **Gemini 3.0 Pro**는 번호, 버튼 개수와 순서, 나선형 형태가 맞는 결과를 만들었음  
- 구현은 **SVG/HTML** 같은 도구로 숫자와 텍스트를 원하는 위치와 방향에 배치해 이미지로 내보낸 뒤, 멀티모달 이미지 모델에 해당 이미지와 텍스트 프롬프트를 함께 넣는 식으로 가능함  
- 이 방식은 매번 완벽하지는 않지만, 텍스트와 숫자 배치가 중요한 이미지 생성에서 결정론적 배치와 생성 모델의 시각적 표현 능력을 나눠 쓰게 해줌  
  
---  
  
### 핵심 맥락과 구현 방식  
- 100단계 모험 보드 이미지를 만들려는 과정에서 나온 패턴이며, “윤곽을 주고 그 위에 칠하게 한다”는 방식으로 정리됨  
- ## 결정론적 레이어  
  - **SVG/HTML**은 시각적으로는 건조하지만 수학적 배치와 정밀도에 강함  
  - 숫자와 텍스트를 원하는 위치와 방향에 맞춰 배치하고, 해당 픽셀이 포함된 이미지로 내보내면 됨  
  - 형식은 SVG, Python, Mermaid 등 원하는 도구를 사용할 수 있음  
- ## 생성형 레이어  
  - **이미지 생성 모델**은 시각적으로 뛰어난 결과를 만들지만 수학과 텍스트에서는 신뢰성이 낮음  
  - Gemini 3.0 Pro처럼 이미지와 텍스트를 입력받아 이미지를 출력할 수 있는 멀티모달 이미지 모델에 underdrawing 이미지와 텍스트 프롬프트를 함께 넣음  
  - 예시 1단계 프롬프트는 50개의 디딤돌을 반시계 방향 안쪽 나선으로 배치하고 각 돌에 1부터 50까지 연속 번호를 넣은 SVG를 만들게 함  
  - 예시 2단계 프롬프트는 해당 이미지를 장인 초콜릿과 사탕이 나선형 경로로 놓인 저각도 기울어진 사진풍 클레이메이션 디오라마로 변환하게 함  
- ## 자동화와 한계  
  - Claude Code나 Codex로 각 단계를 대신 수행할 수 있음  
  - 결과는 좋지만 매번 완벽하지는 않으며, 최종 결과물에서도 “71”은 보이지 않음

## Comments



### Comment 56850

- Author: neo
- Created: 2026-05-05T08:27:32+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=47977990) 
- LLM이 본질적으로 잘하는 일과 못하는 일, 즉 불가능하다는 뜻은 아니지만 **근본적 제약** 때문에 성공 가능성이 낮은 일을 더 깊이 이해해 가는 흐름이 반가움  
  소프트웨어 아키텍처는 사람이 정하고 함수 구현은 LLM에 맡기는 방식, 데이터 분석 자체를 시키기보다 SQL 질의를 쓰게 하는 방식과 비슷함  
  어떤 작업 단위가 LLM에 잘 맞고 어떤 것은 아닌지에 대한 더 명확한 **작업 분류 체계와 연구**가 있으면 좋겠고, 직관은 조금씩 생기지만 아직 많은 사람이 여기서 자주 넘어지는 걸 봄
  - “아키텍처는 사람이 정하고 함수는 LLM이 쓰게 한다”는 방식은 얼마 전까지만 해도 **LLM 코딩 보조 도구** 초기 사용자들이 권장하던 사용법이었음  
    먼저 개요를 만들게 하고, 각 함수를 따로 구현하게 하는 식이었고, 애니메이션 작업에서 따온 용어로 이 접근을 보여주는 블로그 글도 HN에 몇 번 올라왔음
  - LLM과 관련해 **근본적 제약**이라는 표현이 자주 나오지만, 그런 제약이 존재한다는 엄밀한 증명은 아직 하나도 없음  
    2년 전만 해도 문자 세기나 음운 처리처럼 “근본적 제약” 때문에 불가능하다고 하던 작업들이 지금은 도구 없이도 별문제가 아닌 경우가 많아졌음

- 이미지 생성 프롬프트를 읽을 때마다 모델이 명백히 무시한 매우 구체적인 디테일이 보임  
  여기서도 마지막 두 이미지의 초콜릿/사탕은 장인 수제 느낌과는 거리가 멀고, 너무 **멸균된 대량생산품**처럼 보이며, 시점도 정확하지 않음  
  모델이 대부분을 무시한다면 왜 이렇게 장황한 프롬프트를 쓰는지 의문임
  - “스튜디오 조명”을 요청했더니 사진 안에 **스튜디오 조명 장비**를 잔뜩 넣어버린 예시가 마음에 들었음
  - 사탕들은 실제로 장인 수제처럼 보이려는 게 아니라, 훈련 데이터에서 회사들이 **artisanal**이라고 홍보하고 라벨 붙인 이미지와 맞추려는 것임  
    rustic, homemade, amateur 같은 표현이 태깅과 더 잘 맞을 수도 있음
  - 이미지 생성을 몇 번 써봤을 때도 정확히 이런 부분에서 계속 실패했음  
    처음엔 내 **프롬프트 작성 능력 부족**이라고 여겼지만, 이런 불일치를 의식하고 보기 시작하면 꽤 흔하게 드러남
  - 자세한 프롬프트 대부분은 **AI가 생성한 것**이라고 봄
  - 이걸 전부 떠올리는 데 얼마나 걸렸을지 궁금함  
    마지막처럼 작은 “버튼”들이 나선형으로 배열된 이미지를 원했다면, 사탕처럼 보이지도 않지만, Blender를 잘 못하는 편이어도 오후 하나면 만들 수 있었을 것 같음

- AI 생성 이미지에서 **텍스트와 숫자**를 안정적으로 얻는 간단한 기법을 찾았음  
  이미지 모델들이 이미 이렇게 하지 않는 게 의외라서, 꽤 유용하게 쓰고 있어 공유하고 싶었음
  - 어떤 면에서는 **ControlNet** 사용과 비슷함  
    SVG만 기반 이미지로 쓰는 같은 기법을 한동안 써왔고, 잘 작동함
  - 매우 인상적이고, 단순하며, 안정적임  
    이미지 생성 연구소들이 곧 받아들일 것 같음
  - 이건 일종의 **사고의 연쇄(chain of thought)**, 즉 [https://arxiv.org/abs/2201.11903](<https://arxiv.org/abs/2201.11903>)와 비슷한 것 아닌가 싶음  
    사용자가 모델이 0-shot으로 풀게 하는 대신 1-shot 또는 k-shot으로 해결책을 돕는 구조임  
    비슷한 기법을 매우 효과적으로 써봤고, 분야가 너무 새롭고 빠르게 움직여 공통 용어가 아직 부족한 느낌이라 블로그와 예시는 매우 유용함  
    다만 이 현상이 이미 더 작은 커뮤니티나 다른 이름으로 관찰되고 이해됐을 가능성도 있어 보임
  - 요약하면 먼저 **SVG로 올바른 윤곽**을 만든 뒤, 그 이미지를 텍스트 프롬프트와 함께 Gemini 3.0 Pro에 보내 정확한 숫자와 텍스트가 들어가도록 렌더링하게 하는 방식임

- 이건 올바른 구조를 가진 첫 이미지를 코드로 만든 **img2img**일 뿐임
  - 맞음, 정확히 그 방식임  
    Stable Diffusion 초창기부터 생성 모델을 써왔다면 꽤 흔하고 유용한 기법으로, 스케치(SVG, 손그림 등)를 임시 **ControlNet**처럼 써서 생성 모델 출력을 유도하는 것임  
    예전에는 건축 시각화를 배치할 때 비슷한 접근을 썼음  
    소파, 의자나 다른 가구를 특정 위치에 두고 싶으면 Poser 같은 도구로 주요 “세트 피스” 위치를 대략 잡은 단순 장면을 만들고, 거기서 깊이 지도를 생성해 당시 SDXL 같은 생성 모델에 넣어 객체 배치를 유도할 수 있었음
  - 대체로 저자가 말한 그대로이고, 입문자를 위해 맥락을 조금 붙인 것에 가까움
  - 맞지만, 그 코드를 만들 때 다른 **코드 생성 모델**을 쓸 수 있음

- 이 해킹은 확실히 “아, 왜 이걸 생각 못 했지” 싶은 부류의 요령임  
  다음에 이미지 생성이 기대에 못 미칠 때 쓸 수 있게 되어 반가움
  - 원래 Stable Diffusion 앱에도 이미 **image-to-image**가 있었음  
    다만 성능이 지금만큼 좋지 않았을 뿐이라, 이게 왜 새롭다고 여겨지는지 잘 모르겠음

- 표준적인 반론은 이것임: LLM이 정말 지능적이라면 왜 이 **2단계 과정**이 더 나은 결과를 낸다는 걸 스스로 알아내지 못하나?
  - 기본 수준에서 이미지 모델은 텍스트 토큰을 입력받아 이미지 토큰을 내보내는 구조일 뿐임  
    전략을 세우고, 결과를 검토하고, 다시 시도하려면 그 위에 **에이전트형 프로세스**가 필요함  
    Nano Banana와 gpt-image-2에는 이런 것이 조금 들어간 듯하지만, 모델에게 코드를 한 번에 쓰게 하는 것과 도구를 갖춘 에이전트 하네스가 처리하게 하는 것의 차이와 비슷함  
    아주 기본적인 에이전트도 ChatGPT 단독보다 더 나은 코드를 만들 수 있음
  - LLM은 대체로 “이미지 만들기”류 프롬프트를 약간 다듬어서 별도 모델에 넘기도록 **하드코딩**되어 있기 때문임
  - 모르는 건 모르는 것임
  - 사실 지능적이지 않기 때문임
  - 아무도 그렇게 하라고 요청하지 않았음

- 이런 방식은 오래전부터 해왔고, **깊이 지도**나 선화를 써서 실루엣을 제어하는 것과 비슷함

- 결론부의 “작동하지만, 사실은 그렇지도 않다”는 느낌이 좋았음  
  LLM/생성 AI 열풍답게, 아주 좁은 예시 하나를 맞추려고 복잡한 노력을 들였지만 거의 되는 듯하면서도 결국 제대로 되지는 않는다는 걸 글 전체로 보여줌
  - 일부라도 작동하면 유용함  
    사람이 숫자가 맞는지 확인하기는 쉽고, 틀리면 이미지를 다시 생성하면 됨  
    모델 없이 처음부터 이미지를 만드는 것보다 **몇 자릿수는 더 쉬움**

- 흔한 과제인 “자전거 타는 펠리컨의 SVG”에는 반대 방향 접근을 해볼 수 있겠다고 생각했음  
  SVG를 바로 뱉게 하면 당연히 품질이 나쁠 가능성이 큼  
  하지만 이미지 생성은 멋진 **사실적 이미지**를 쉽게 만들 수 있으니, 먼저 이미지를 생성하고 모델이 그걸 추적해 SVG로 만들게 하면 괜찮은 자전거-펠리컨 SVG를 얻는 좋은 방법일 수 있음  
  결국 사람도 메모장에 숫자만 입력해서 SVG 예술품을 만드는 경우는 드물고, 핵심은 여전히 그것을 이미지로 보고 생각하는 데 있음

- 사람이 정확히 하려는 방식과도 비슷해 보임  
  예술가에게 수정이나 스케치 없이 한 번에 큰 원형 배열의 돌을 순서대로 번호까지 넣어 그리라고 하면, **배치 오류**가 생겨도 이상하지 않음
