10,923
Writer42 실제 손글씨로 확보된 글자 수
00_MASTER_LOG.md
현재 작업은 실제 손글씨 글자 이미지를 기반으로 TTF를 만들고, 사람이 쓰지 않은 1만 자 이상의 한글까지 같은 필체처럼 커버할 수 있는지 검증하는 POC입니다. 결론은 명확합니다. 많이 쓴 글자는 벡터화로 안정적이고, 적게 쓴 글자를 전체 한글로 확장하는 증강 구간이 병목입니다.
10,923
Writer42 실제 손글씨로 확보된 글자 수
00_MASTER_LOG.md
11,172
현대 한글 전체 음절 커버리지 목표
REPORT_15
0.4583
최신 holdout OCR 정확도, floor 0.8 미달
run_0023
AI Hub 한국어 글자체 이미지의 음절 이미지와 메타데이터를 분석해, 연속 id와 동일 속성 블록으로 한 사람의 글자 묶음을 추정했습니다. 이 묶음은 내부 이름으로 Writer42이며, 메모에는 여·42·직장인 실필적으로 기록돼 있습니다.
Own-My-Geul 118자, AI Hub 제작 템플릿 399자, 내부 가정 최소셋 약 300자.
KS X 1001 공통 한글 2,350자와 현대 한글 전체 11,172자. 실제 서비스에서는 빈칸과 대체폰트가 나와서는 안 됩니다.
초성·중성·종성의 위치와 조합은 글자마다 달라집니다. 단순 획 두께나 threshold 조정만으로는 한글 구조가 쉽게 무너집니다.
OCR이 맞아도 같은 사람처럼 보이지 않으면 실패입니다. 최신 실험에서 OCR 후보가 늘어도 Writer-ID 점수가 급락했습니다.
LLM 주관 평가가 아니라 글자 정답, OCR, 구조 IoU, Writer-ID를 동시에 봐야 합니다. smoke pass와 holdout pass도 분리해야 합니다.
자유 필사는 필체 분위기와 OCR 연구에 유용하지만, 폰트 제작에는 라벨이 확정된 템플릿이 직행 경로입니다. 칸 위치가 라벨이 되면 세그멘테이션과 OCR 추측을 줄이고, 쓴 글자는 그대로 글리프가 됩니다.
대표 글자 또는 KS/자모 커버셋을 칸 단위로 수집
칸 좌표로 글자 이미지와 라벨을 안정적으로 연결
이진화 후 potrace와 fontTools로 TTF 생성
없는 글자는 자모·형제 부품·rescue source로 조립
OCR, Writer-ID, Windows 렌더와 설치 QA까지 확인
현재 제품화 기준선은 M4 routed full Hangul TTF입니다. 라우터가 exact source, sibling rescue, compound jong rescue를 기록하며, KS X 1001과 현대 한글 전체 coverage를 모두 100%로 만들었습니다. 다만 스타일 polish는 아직 별도 과제입니다.
2,350 / 2,350
KS X 1001 공통 한글 coverage
REPORT_15
11,172 / 11,172
현대 한글 전체 coverage
REPORT_15
pass
Windows private render와 per-user install QA
REPORT_16
| 게이트 | 목적 | 현재 floor | 왜 필요한가 |
|---|---|---|---|
| OCR | 글자가 읽히는지 확인 | 0.8 | 필체가 좋아도 읽히지 않으면 폰트로 실패 |
| Writer-ID | Writer42처럼 보이는지 확인 | P(W42) 0.5 / Top1 0.8 | OCR 후보가 다른 사람 필체로 붕괴하는 것을 방지 |
| Structure IoU | GT와 구조적으로 맞는지 확인 | 0.6 | threshold나 굵기 조정이 구조를 깨는지 탐지 |
| run | 의미 | OCR | P(W42) | 판정 |
|---|---|---|---|---|
| run_0015 | STE + OCR identity CE가 24자 smoke에서 세 게이트를 첫 동시 통과 | 1.0000 | 0.8284 | smoke pass |
| run_0018 | 36자 train / 24자 holdout 분리. shared refiner가 baseline보다 OCR을 낮춤 | 0.2917 | 0.1921 | reject |
| run_0019 | per-glyph OCR guard로 baseline 회귀를 막음 | 0.3333 | 0.2110 | floor 미달 |
| run_0020 | morphology 후보군으로 OCR을 0.5000까지 올렸지만 필체가 붕괴 | 0.5000 | 0.0533 | style collapse |
| run_0022 | blend + style floor로 이번 묶음 최고 style-safe 점수 | 0.4583 | 0.2184 | OCR floor 미달 |
| run_0023 | style floor를 50%로 완화했지만 OCR 회복 없이 최신 reject 유지 | 0.4583 | 0.1657 | reject_holdout_ocr_floor |
왼쪽 atlas는 GT, candidate, diff를 글자별로 비교합니다. run_0015는 smoke에서 OCR과 style을 동시에 통과했지만, run_0023은 holdout에서 여전히 OCR floor에 못 미치고 Writer42 확률도 낮습니다.
1.0000
run_0015 smoke OCR
P(W42) 0.8284 · IoU 0.7100
0.4583
run_0023 holdout OCR
P(W42) 0.1657 · floor 0.8 미달
실제 글자 기반 벡터화, TTF 생성, full Hangul coverage, Windows 렌더/설치 QA는 기준선이 있습니다.
OCR guard와 candidate pool은 holdout OCR을 baseline 0.3333에서 0.5000까지 밀어 올릴 수 있음을 보였습니다.
OCR을 올리는 후보가 Writer42 필체를 깨뜨립니다. style floor를 붙이면 필체는 조금 회복되지만 OCR이 0.4583에서 멈춥니다.
style_rejected_correct_count가 높은 글자를 per-glyph로 추출하고, raw·morphology·blend 중 무엇이 필체를 깨는지 분류합니다.
단순 굵기 변형 대신 자모 구조를 보존하는 후보 생성, OCR-aware affine, writer-id constrained refinement를 우선합니다.
150자, 500자, 1,000자, 2,350자 reference curve를 만들고, 실제로 쓸 만해지는 최소 친필량을 정량화합니다.
| 구분 | 파일 | 사용한 내용 |
|---|---|---|
| 데이터 | 00_MASTER_LOG.md | Writer42 10,923자, 여/42/직업 메타, 소량 증강 병목 |
| 수집 | 03_assets/sample_handwriting/README.md | 자유 필사와 칸 템플릿 입력 형태, 118/399자 템플릿 맥락 |
| coverage | REPORT_15, REPORT_16 | KS 2,350자, 현대 한글 11,172자 coverage와 Windows QA |
| POC18 | 20260706_POC18_AUTORESEARCH_HANDOFF.md | run_0015~run_0023 흐름, latest verdict, next_track |
| latest | run_0023/report.json | holdout OCR 0.458333, P(W42) 0.1657, reject_holdout_ocr_floor |