한국 특허 도면부호 태깅 (PNG 직접 삽입)

SkillFiles & storage

A skill that tags Korean patent drawings by drawing reference numerals directly onto PNG images. It takes a confirmed numeral scheme (kr-patent-symbol-design) and per-box mapping (instructions from kr-patent-drawing-mapping) as input, then inserts numeral text onto the drawing image using cv2 automa

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the 한국 특허 도면부호 태깅 (PNG 직접 삽입) skill

What this skill tells your AI

The instructions your AI receives, as published by lsj4232/kr_patent_skill in kr-patent-drawing-tagging/SKILL.md and read by ahel’s review.

무엇을 하는가

무부호 도면 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_onlytrue면 무수정 복사 (부호가 이미 인쇄된 도면)

anchor는 대략적이어도 된다 — 스크립트가 검출 박스와 최근접 매칭하므로 박스 중심에서 다소 어긋나도 올바르게 붙는다. 박스가 밀집한 도면만 정확히.

Step 3. 실행

두 가지 스타일 엔진 중 선택:

# (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 부분(22) 획득 (S131)" 같은 표기는 금지이고, 박스 안에는 "제2 부분 획득"만 두고 22와 S131은 박스 밖에 지시선(물결) 태그로 뺀다. 흐름도의 단계부호(S110, S341 등)도 예외 없이 밖으로 뺀다.

부호를 박스 텍스트에 섞으면 도면 텍스트와 명세서 부호 매핑 검증이 어려워지고 KIPO 도면 관행에서도 벗어난다. 위 Step 3의 (a) 인라인 스타일은 검토용 시안에만 쓰고, 출원본은 (b) KIPO 정식 작도 스타일로 낸다.

  • 흐름도: 단계부호는 주 컬럼 박스의 좌측 바깥(dx ≈ -62), 우측 분기 박스는 우측 바깥. 좌측은 대개 비어 있어 충돌이 없다.
  • 여러 항목이 줄로 나열된 박스(표 형태 개념도, 범례)는 각 줄의 y 높이에 맞춰 태그를 배치하면 지시선이 그 줄에서 나가 항목별 부호로 읽힌다. 줄 사이를 벌려 태그 간격 40px를 확보한다.
  • 화살표가 드나드는 변에는 태그를 두지 않는다(지시선이 화살표에 물린다). 유입 화살표가 상단 중앙이면 태그는 상단 좌측(dx ≈ 0.16w)으로.
  • 요소 부호는 그 요소를 실제로 그린 박스에 붙인다. 흐름도 단계 문장 안의 언급은 부호 없이 서술만 남긴다.
  • 한 박스에 태그 2개 이상 금지. 흐름도 단계 박스는 S부호만 단다(좌측 S부호 + 우측 요소 부호 조합도 위반). 요소 부호가 필요하면 옆에 실제 객체 박스를 세워 거기 단다.

부호 설계 연동 규칙 (실전 검증)

  • 방법 단계: 전체 흐름도(도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 방식).

Signals

GitHub stars
21
Forks
8
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
kr-patent-drawing-tagging
Source
github.com/lsj4232/kr_patent_skill