한국 특허 도면 PNG에 도면부호를 직접 그려 넣는(태깅하는) 스킬. 확정된 부호 체계 (kr-patent-symbol-design)와 박스별 매핑(kr-patent-drawing-mapping의 지시서)을 입력받아, cv2 박스 자동검출 + 어두운 픽셀 충돌감지 폴백 배치로 부호 텍스트를 도면 이미지 위에 삽입하여 태깅본 PNG를 생성한다. 매핑표(md+xlsx)까지 함께 산출. "도면에 부호 넣어줘", "도면부호 태깅", "PNG에 부호 삽입", "태깅본 만들어", "부호 그려 넣어", "도면에 번호 박아줘", "reference numeral overlay" 같은 표현이 보이거나, 무부호 블록도/흐름도 도면에 부호를 입혀 출원용 도면을 만들려는 맥락에서 사용. (부호 체계 설계=symbol-design, 박스↔부호 매핑표만=drawing-mapping, 본 스킬=이미지에 실제 삽입.)
Scanned 8/31/2026
Install to Claude Code
npx -y skills add lsj4232/KR_PATENT_SKILL --skill kr-patent-drawing-tagging --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Kr Patent Drawing Tagging?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/lsj4232-kr-patent-drawing-tagging)More formats (shields.io, HTML) on the badges page.
---
name: kr-patent-drawing-tagging
description: >
한국 특허 도면 PNG에 도면부호를 직접 그려 넣는(태깅하는) 스킬. 확정된 부호 체계
(kr-patent-symbol-design)와 박스별 매핑(kr-patent-drawing-mapping의 지시서)을 입력받아,
cv2 박스 자동검출 + 어두운 픽셀 충돌감지 폴백 배치로 부호 텍스트를 도면 이미지 위에
삽입하여 태깅본 PNG를 생성한다. 매핑표(md+xlsx)까지 함께 산출. "도면에 부호 넣어줘",
"도면부호 태깅", "PNG에 부호 삽입", "태깅본 만들어", "부호 그려 넣어", "도면에 번호 박아줘",
"reference numeral overlay" 같은 표현이 보이거나, 무부호 블록도/흐름도 도면에 부호를
입혀 출원용 도면을 만들려는 맥락에서 사용. (부호 체계 설계=symbol-design,
박스↔부호 매핑표만=drawing-mapping, 본 스킬=이미지에 실제 삽입.)
---
# 한국 특허 도면부호 태깅 (PNG 직접 삽입)
## 무엇을 하는가
무부호 도면 PNG(블록도·파이프라인도·흐름도)에 도면부호를 **이미지 위에 직접 그려 넣어**
태깅본 PNG를 만든다. 검증된 파이프라인 (사건 C, 도면 14장 / 부호 98개 실전 검증):
```
도면 시각 판독 → 부호 체계 확정 → 도면별 anchor 설정(JSON) 작성
→ scripts/tag_drawings.py 실행 (cv2 박스검출 + 최근접 매칭 + 충돌감지 배치)
→ 태깅본 전수 육안 검증 (Read로 이미지 확인) → 어긋난 도면만 설정 수정 후 재실행
→ 부호매핑표 md/xlsx 산출
```
## 작업 순서
### Step 1. 입력 확보
- 도면 PNG 폴더 (숫자 파일명 `1.png`, `2.png`, … 권장)
- 확정된 부호 체계 (없으면 kr-patent-symbol-design 먼저 호출)
- **모든 도면을 Read로 시각 판독**하여 각 박스의 위치를 파악해 둔다 (anchor 좌표의 근거).
### Step 2. 설정 JSON 작성
`examples/example_config.json` 을 복사하여 사건별로 작성. 도면마다:
| 필드 | 의미 |
|---|---|
| `solo` | 태깅할 단독 박스 `[fx, fy, "부호"]` — fx/fy는 박스 중심의 이미지 폭·높이 대비 비율(0~1). 시각 판독 시 표시 좌표 ÷ 표시 크기로 추정 |
| `cyl` | 실린더(DB 등) — 내부 하단 중앙에 배치 |
| `container` | 최대 면적 박스(예: 제어부 컨테이너) 부호 — 내부 우상단 |
| `groups` | 점선 그룹: `sym`(대표 부호), `members`(멤버 박스 locator 좌표 — 검출 소진용, 무부호), `tagged`(예외적으로 부호 붙일 멤버 `[idx, "부호"]`) |
| `copy_only` | true면 무수정 복사 (부호가 이미 인쇄된 도면) |
anchor는 대략적이어도 된다 — 스크립트가 검출 박스와 **최근접 매칭**하므로 박스 중심에서
다소 어긋나도 올바르게 붙는다. 박스가 밀집한 도면만 정확히.
### Step 3. 실행
두 가지 스타일 엔진 중 선택:
```bash
# (a) 인라인 스타일 — 박스 내부 라벨 옆에 숫자
python scripts/tag_drawings.py --config <사건별 config.json>
# (b) KIPO 정식 작도 스타일 — 박스 외부 숫자 + 구불선 지시선 (레퍼런스: 사건 B 작도본)
python scripts/tag_drawings_leader.py --config <사건별 config.json>
```
leader 엔진(v2) config 확장: figure별 `pad_top/left/right/bottom`(캔버스 여백 확장 px),
solo 항목 4번째 요소로 배치 방향(`above/below/right/right_upper/left/above_left`),
groups에 `"sides"`, tagged 항목 3번째 요소로 방향 지정. 1차 실행 리포트의 강제배치(False)
항목을 보고 pad·방향을 넣어 재실행하는 2-pass가 표준. 실전 config:
`대학 고객 사건\사건 C_사건수임\도면부호태깅\config_leader.json`
- 출력: `out_dir\도NN.png` + 콘솔에 도면별 부호 수·문제 리포트
- 한글 경로의 cv2 imread 실패 → 스크립트가 `np.fromfile + imdecode`로 처리 (내장됨)
### Step 4. 전수 육안 검증 (필수)
태깅본 전부를 Read로 열어 (1) 부호가 올바른 박스에 붙었는지, (2) 라벨 텍스트와 겹치지
않는지 확인. 문제 도면만 anchor 수정 후 재실행. **검증 없이 납품 금지.**
### Step 5. 매핑표 산출
부호매핑표(md)를 작성하고 xlsx로 변환하여 태깅본과 같은 폴더에 저장:
구분(시스템/데이터/방법 단계) | 부호 | 명칭 | 등장 도면 | 관련 청구항.
## 배치 엔진 (스크립트 내장 규칙)
1. **박스 검출**: threshold(200) 반전 → findContours → 크기 필터(폭 ≥ max(80px, 3%W),
높이 ≥ max(40px, 4%H)) → IoU>0.75 중복 제거(테두리 이중 컨투어 해소). 점선 박스는
검출되지 않음(의도된 동작 — 그룹은 멤버 union으로 처리).
2. **충돌감지 폴백 배치**: 후보 위치를 순서대로 시도하고, 원본 이미지의 어두운 픽셀
(<128) 또는 기존 라벨과 겹치면 다음 후보로:
내부 우측 중앙 → 내부 우하단 → 내부 우상단 → 외부 상단 우측 → 외부 하단 우측 → 외부 우측.
중앙정렬 라벨이 넓은 박스에서도 안전.
3. **그룹 대표 부호**: 점선 그룹의 A/B/C 인스턴스 박스에 a/b/c 접미 부호를 달지 말고
그룹 우상단 외측에 대표 부호 1개. 쌍 개념 그룹은 `"250, 251"` 병기.
4. **폰트**: malgunbd.ttf, 크기 = max(28, min(W/90, 박스높이×0.40)).
## 부호 설계 연동 규칙 (실전 검증)
- 방법 단계: 전체 흐름도(도2류)의 인쇄된 S110~S160은 그대로 두고(`copy_only`),
세부 도면의 연산 박스는 **도면별 SN10 방식**(도3→S310·S320…, 도12→S1210…)이
슬롯 고갈 없이 확장 가능.
- 동일 객체·동일 연산은 도면이 달라도 **같은 부호 재사용** (예: 후행 판정 S410이
도4·도5 양쪽 등장). 단, 청구항 한정이 다른 유사 연산은 별도 부호 (도3 선별 S340
vs 도4 유효후보 선별 S420 — 청구항 2 vs 3).
- 단계 부호(S)는 동사형(연산) 박스에만, 숫자 부호는 명사형(데이터·장치) 박스에만.
- 데이터 계열은 200번대로 파이프라인 순서에 맞춰 십 단위 그룹화(210 영상 → 240 캡션
→ 260 실제 용어 → 290 진척도), 장치·자원은 100번대.
## 산출물
| 산출물 | 비고 |
|---|---|
| `도면부호태깅\도NN.png` | 태깅본 (원본 무수정 보존) |
| `부호매핑표.md` / `.xlsx` | 작도자 지시서 겸 consistency-check 입력 |
| 사건별 config.json | 재실행·수정용으로 보존 |
## 후속 스킬 연동
- **kr-patent-symbol-design** (선행): 부호 골격 확정
- **kr-patent-drawing-mapping** (선행·선택): 박스↔부호 매핑 지시서. 본 스킬 config의 원천
- **kr-patent-spec-drafting**: 태깅된 부호를 본문에서 "수신부(110)" 식으로 인용
- **kr-patent-consistency-check**: 매핑표 전 부호의 본문 최소 1회 등장 검증
- 출원용 TIFF 필요 시 `topatent` 명령 (PNG→1-bit Group4 600DPI)
## 컴파운딩 루프 (개선 메모)
### 누적 학습 항목
- (2026-07-03, 사건 C) 초판을 "내부 우측 중앙" 고정 배치로 만들면 중앙정렬
라벨이 넓은 박스에서 대량 겹침 발생 → 충돌감지 폴백이 필수. 첫 실행부터 폴백 체인 사용.
- (2026-07-03, 사건 C) 그룹 멤버 a/b/c 접미 부호(250a/250b/250c)는 스택 박스
간격이 좁아 배치 불가 + 한국 실무상 불필요 → 그룹 대표 부호 1개 방식으로 전환.
- (2026-07-03, 사건 C) MISS 0·원거리 0 리포트여도 배치 겹침은 잡지 못함 —
자동 리포트는 매칭 품질만 보장하므로 육안 검증 단계 생략 금지.
- (2026-07-07, 사건 C) 사용자가 정식 작도본(사건 B tif)을 보고 "이렇게 태깅"
요청 → 인라인 숫자가 아니라 **박스 외부 숫자 + 구불선 지시선**이 KIPO 작도 관행.
tag_drawings_leader.py(v2)로 전면 재태깅. 무부호 원본(src_dir)이 남아 있으면 지우기 작업
없이 재생성이 가장 깨끗 — 원본 폴더는 보존할 것.
- (2026-07-07) 점선그룹 테두리 추정은 union 가장자리에서 큰 공백을 만나면 스캔 중단해야 함
(도7에서 위쪽 별개 실선 박스를 점선 테두리로 오인했었음 → gap-stop 스캔으로 수정).
- (2026-07-07) 지시선이 점선 테두리를 가로질러 내부 박스에 닿는 것은 정상 관행(레퍼런스의
201/121 스타일) — path 충돌로 forced 플래그가 떠도 육안 정상이면 납품 가능.
- (2026-07-07) 이미지 가장자리에 붙은 최우측 박스(260류)·최상단/최좌측 점선그룹은
pad_right/pad_top/pad_left 캔버스 확장 없이는 부호가 잘림. 특허 도면에서 여백 추가는
자유이므로 pad 확장이 정답.
- (2026-07-07, 사건 C) **도면의 drawio 소스가 존재하면 PNG 픽셀 오버레이가 아니라
drawio XML 자체에 부호 텍스트 셀 + 지시선 엣지를 삽입할 것** — 사용자가 나중에 drawio에서
도면을 수정·재내보내기 해도 부호가 유지된다. 방법: reftag 텍스트 셀(fontStyle=1) 재배치 +
`curved=1;endArrow=none` 엣지에 S-곡선 waypoint 2개(수직벡터 ±6 오프셋)로 구불선 근사.
드로잉 좌표는 XML mxGeometry에서 직접 취득(박스 라벨/id로 매칭), 캔버스가 무한이라 pad 불필요.
검증은 draw.io CLI 내보내기: `draw.io.exe -x -f png -s 3 -b 20 -o out.png in.drawio`.
실전 스크립트: 대학 고객 사건 사건폴더 `도면부호태깅\add_leaders_drawio.py` (per-figure SPEC 방식).
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!