Skip to content
Role
1인 창업 – 기획 · 디자인 · 개발
Team
1인
Period
2026.07 – 진행 중
Tools
Python, FastAPI, HarfBuzz, SwiftUI, MCP, Ollama

원고 하나로 인쇄용 PDF부터 점자까지

GLIO

GLIO 스튜디오 라이브 화면 – 국립현대미술관 출판 지침 원고를 넣어 212쪽으로 조판하고, 원고 패널을 접어 지면을 전체 폭으로 읽는다

요약

AI에게 조판을 맡기지 않았다. 구조만 판단하게 하고, 한 글자도 바뀌면 안 되는 지면은 결정론적 코드가 그리게 했다. 원고 하나에서 인쇄용 PDF, EPUB, 접근성 PDF, 점자가 함께 나온다.

1.76배
조판 속도

실측 · 같은 원고 20,413줄 중 바뀐 줄 0

5 → 7
PDF/UA 9개 검사 중 통과

실측 · 자동 수정 전후. 대체 텍스트만 사람이 고침

96
커밋

산출물 · 전부 Claude와 함께

1인 창업 – 제품 기획 · UX · 조판 엔진 · 데스크톱 앱 · MCP 서버. 2026년 7월 시작, 진행 중.

개요

원고 하나를 넣으면 인쇄용 PDF, EPUB3, 큰글자, 접근성 PDF, 점자가 함께 나온다. 네 부분으로 만들었다.

  • 엔진 – Python · FastAPI. HarfBuzz 셰이핑, 자체 줄바꿈, 한국어 조판 규칙 데이터.
  • 스튜디오 – 의존성 없는 단일 파일 웹 UI.
  • macOS 앱 – SwiftUI. 엔진을 HTTP 대신 로컬 프로세스로 부른다. 원고와 폰트가 기기를 떠나지 않는다.
  • MCP 서버 – 작업물 분석, 사양 생성, 사전 검사, 교정지 렌더, 견적, 주문 요청 도구를 AI 클라이언트에 연다. 결제는 실행하지 않고 승인 링크만 돌려준다.

아직 출시하지 않았다. 접근성 교정을 첫 제품으로 준비하고, 조판은 그다음에 낸다.

문제

책 한 권을 만들면 인쇄용 조판, EPUB, 큰글자, 점자가 각각 따로 원고를 다시 해석한다. 교정도 그만큼 반복된다. 한국어 조판에는 일본어의 JIS X 4051 같은 표준 구현이 없다. 접근 가능한 형식은 이제 의무다. 유럽 접근성법(2025년 6월)과 한국의 디지털포용법(2026년 1월)이 시행된다.

핵심 결정

  1. 01AI는 결정만, 조판은 결정론적 코드가

    책에서는 한 글자만 바뀌어도 쓸 수 없다.

    →생성 모델은 판단만 JSON으로 낸다. 글자를 그리는 것은 엔진이다. 엔진이 LLM 모듈을 불러오지 못하게 테스트로 막았다.

  2. 02조판 엔진은 직접 만들고, IDML로 내보낸다

    상용 조판 서버는 라이선스 비용이 크다. 한국어 조판 기술이 남의 플랫폼 위에 올라가는 것도 문제였다.

    →HarfBuzz와 자체 줄바꿈(Knuth–Plass), 데이터로 정리한 한국어 줄바꿈 규칙으로 엔진을 만들었다. 디자이너가 InDesign에서 이어 작업하도록 IDML을 내보낸다.

  3. 03첫 제품은 조판이 아니라 접근성 교정

    통과와 실패가 객관적이다. 기준이 문서로 정해져 있고, 이미 동작하는 프로토타입도 있었다.

    →접근성 검사, 자동 수정, 대체 텍스트 승인을 먼저 냈다. 조판은 다음 단계로 두었다.

  4. 04유료 API 0원, 폰트는 기기 밖으로 나가지 않는다

    상용 한글 폰트는 서버에서 쓸 수 있는 라이선스를 주지 않는다.

    →규칙 엔진 → 로컬 모델 → 사용자의 구독형 AI(MCP) 3단으로 AI를 쓴다. macOS 앱은 원고와 폰트를 기기 안에서 처리한다.

나머지 결정 2건
  • 사용자는 좌표가 아니라 역할을 고른다 – 단락마다 스타일을 덮어쓸 수 있으면 제목 40개 중 하나만 다르게 보이는 사고가 생긴다. 블록의 역할만 고르게 했다. mm와 좌표는 엔진이 정한다.
  • 모르면 본문으로, 덜 해로운 쪽으로 틀린다 – 원고를 잘못 구조화하면 모든 포맷이 함께 틀린다. 저자의 Word 스타일을 먼저 읽고, 그다음 레이아웃을 추정한다. LLM은 마지막에만 선택적으로 쓴다. 확신이 없으면 본문으로 둔다.

과정

실제 책으로 검증하기 – 국립현대미술관 출판 지침

디자이너가 만든 실제 책을 기준으로 삼았다. 국립현대미술관(MMCA)의 『출판 지침』 2판(2020)에는 같은 원고(docx)와 인쇄된 결과물이 모두 남아 있다. 같은 원고를 GLIO에 넣고 나온 결과를 실제 책과 나란히 비교했다. 8월 15–16일 이틀 동안 이 책 하나로 결과 파일 114개를 내며 엔진을 고쳤다.

책을 펴는 중…

같은 원고를 GLIO가 자동 조판한 인쇄용 PDF – 263쪽 (2026.08.16 최종본)PDF 원본 열기 ↗

125×220mm 일치
판형 · 실측
300 / 263쪽
쪽수 – 실제 책 / GLIO · 실측
114개
결과 파일 (이 책 하나로) · 산출물
  • 판형은 맞췄다 – 첫 결과는 161×256mm였다. 반복하며 실제 책의 125×220mm로 맞췄다.
  • 쪽수는 다르다 – 실제 책은 300쪽, GLIO는 263쪽이다. 같은 원고가 더 촘촘히 짜였다는 뜻이다. 행간과 여백을 실제 책의 밀도에 맞추는 것이 다음 과제다.
  • 서체는 다르다 – 실제 책은 Janson · AG 최정호 · Akzidenz 같은 상용 서체를 쓴다. GLIO는 서버에서 쓸 수 있는 OFL 서체(EB Garamond · Noto Serif KR)를 쓴다.
검증 아카이브

원고와 실제 출판물이 함께 남아 있는 책 다섯 종을 넣고, 결과가 실물에 가까워질 때까지 돌렸다. 8월 14일 저녁부터 16일 자정까지 결과 PDF 483개가 쌓였다. 한 권마다 인쇄용 · 펼침면 · 사용자경로 세 갈래를 매번 함께 냈다.

출판물원고결과 파일 (산출물)실물 (실측)GLIO (실측)첫 결과 → 끝 (실측)
MMCA 출판 지침 1판 (2018)docx144개300쪽265쪽220 → 265쪽
MMCA 출판 지침 2판 (2020)docx114개300쪽263쪽219 → 263쪽
MMCA 소장품 기술지침 (2023)docx111개88쪽61쪽36 → 61쪽
한성부입니다 (전시 도록)docx + 도판목록 xlsx59개176쪽288쪽289 → 288쪽
서울시립미술관 소장품 기술지침docx + 도판목록 xlsx55개52쪽60쪽47 → 60쪽

쪽수가 늘어난 것은 실패가 아니다. 첫 결과는 각주와 도판 자리를 통째로 흘려보내고 있었다. 반복하면서 각주 87개, 도판 표기 207곳, 용어 설명 원고가 제자리를 찾았고, 그만큼 쪽이 늘었다.

MMCA 출판 지침 1판 – GLIO가 짠 10~11쪽 펼침면. 머리글, 쪽번호, 용어 대조 단이 함께 흐른다
1 / 5
MMCA 출판 지침 1판 – GLIO가 짠 10~11쪽 펼침면. 머리글, 쪽번호, 용어 대조 단이 함께 흐른다

위 다섯 장은 모두 GLIO가 만든 최종 결과 PDF에서 그대로 뽑은 지면이다. 편집하거나 다시 그리지 않았다. 『한성부입니다』에서는 한국어와 영어, 일본어가 한 지면에 놓인다.

무엇이 걸렸나

원고를 하나씩 넣을 때마다 엔진이 부서졌다. 고친 순서가 곧 기록이다.

  • RTF에서 한글이 조용히 사라졌다 – 오류도 없이 글자만 없어졌다. 인코딩 경로를 다시 짰다.
  • PDF 원고를 올리면 무한 로딩에 빠졌다 – 쪽 단위로 끊어 읽게 바꾸고, 브라우저 회귀 시험을 붙였다.
  • 한글 원고가 전부 제목이 됐다 – 개요 문단 모양을 못 읽어 본문까지 장 제목으로 올라갔다.
  • 첫 장 제목이 책 제목이 됐다 – MMCA 원고에서 「1부 미술 출판에 대하여」가 표지·속표지·판권에 찍혔고, 지은이는 워드가 넣은 「Un-named」였다. 원고 머리를 본문에서 떼고, 거기 적힌 것이 파일 속성을 이기게 했다.
  • 도판을 올리면 격자 설정이 죽었다 – 조판을 통째로 다시 짜던 것을 부분 갱신으로 바꿨다.
  • 미리보기가 느려 반복이 끊겼다 – 11배 빠르게 고치고(실측), 만드는 중이라고 알리게 했다.

아직 안 돌린 것

미술 잡지 원고 세 편과 포브스 잡지 자료는 넣지 않았다. 잡지는 단행본과 흐름이 다르다. 한 지면 안에서 단이 바뀌고, 사진이 글을 감싼다. 지금 엔진은 그 배치를 다루지 못한다.

결과

1.76배
조판 속도 · 실측
659 → 508MB
앱 크기 · 실측
57개 중 0
라이선스 감사 – 금지 라이선스 · 실측

접근성 검사에서 PDF/UA 9개 항목 중 통과가 5개에서 7개로 늘었다. 자동 수정 전후를 같은 파일로 재서 얻은 실측값이다. 남은 두 항목은 대체 텍스트라 사람이 쓴다. 조판 속도는 1.76배가 됐고, 같은 원고 20,413줄 중 바뀐 줄은 없었다. 아직 출시 전이다. 내 손에 있는 원고로만 검증했고, 외부 고객의 책으로는 확인하지 못했다.

사람이 개입하는 지점

  • 자동 – 원고 하나에서 인쇄 PDF, EPUB3, 큰글자, 접근성 PDF, 점자까지 한 번에 만든다. 조판 결과는 사람 눈이 아니라 규칙이 먼저 검사한다.
  • 사람 – 규칙이 잡지 못하는 자리는 편집자가 고친다. 그림 설명, 표의 읽는 순서, 이름의 표기가 그렇다. 도구는 초안을 끝까지 밀고, 판단은 남겨 둔다.

회고

맞았던 것

  • AI는 결정만, 그리는 것은 코드. 조판을 1.76배 빠르게 고친 뒤에도 결과 20,413줄 중 바뀐 줄이 없었다. 엔진이 LLM 모듈을 불러오지 못하게 테스트로 막은 것이 그 경계를 지켰다.
  • 라이선스도 설계다. AGPL · GPL 라이브러리는 쓰지 않고, 폰트는 OFL만 쓴다. 좋은 도구여도 배포할 수 없으면 쓸 수 없다.
  • 첫 제품을 접근성 교정으로 정했다. 통과와 실패가 문서로 정해져 있어, 고칠 자리를 매번 바로 찾았다. 조판의 좋고 나쁨은 그렇게 판정되지 않는다.

틀렸던 것

  • 판형과 구조가 맞으면 지면도 실제 책에 가까워질 줄 알았다. 판형은 맞췄지만 쪽수는 300쪽 대 263쪽으로 남았다. 밀도는 판형과 다른 문제였다.
  • 도판 중심의 도록도 같은 엔진으로 덮을 줄 알았다. 『한성부입니다』는 실물 176쪽, GLIO 288쪽이다. 글이 흐르는 책과 도판이 자리를 잡는 책은 다른 규칙을 쓴다.
  • 워드 파일의 속성을 믿었다. 지은이가 「Un-named」로 찍혔고, 1부 제목이 책 제목이 됐다. 그 뒤로는 원고에 적힌 것이 파일 속성을 이긴다.
  • 원고의 서식을 읽으면 구조를 알 수 있다고 봤다. 한글 원고에서 본문이 전부 장 제목으로 올라갔다. 확신이 없을 때 본문으로 두는 규칙을 그때 넣었다.

다음에 확인할 것

  • 행간과 여백을 실제 책의 밀도에 맞출 수 있는지. 지금은 같은 원고가 더 촘촘히 짜인다.
  • 도판 중심의 도록과 잡지 원고. 한 지면 안에서 단이 바뀌고 사진이 글을 감싸는 배치는 아직 못 다룬다.
  • IDML로 넘긴 뒤 디자이너가 InDesign에서 어디까지 이어 갈 수 있는지.
  • 내 원고가 아닌 실제 고객의 책. 다섯 종은 모두 내가 고른 책이다.