2026-04-23 — HWP 편집 파이프라인 Phase 0 실증 성공
전날(2026-04-22) 밤 “지미 제국주의 자각” → 방향 확정 → 2026-04-23 01:07 KST 집 PC로 자리 옮기고 Phase 0 착수 → 실증 완료. 한국 오픈소스 두 개로 GCP 리눅스에서 HWP 편집이 실제로 됐다.
전일 기록: 20260422_한국HWP생태계_지미자각
배경
전날 세션에서 확정된 것
- “지미 제국주의” 자각: “HWP 안 됨”은 능력 문제가 아니라 판단 회피였다
- 오픈소스 성역화 금지 원칙 수립: 발견한 버그·갭은 이슈/PR로 되돌린다
- 한국 도구 생태계 우선 원칙 수립: GitHub 5분 검색 선행, 개발자 크레딧 표기
후니님 선언
“난 이 사업 못 내는 한이 있더라도 니들이 한글문서를 편집하도록 만들거야. 그게 안되면 클로드랑은 이별이야.”
이 선언 위에서 Phase 0 실증에 착수했다.
실증된 파이프라인
HWP
→ hwp2hwpx (Java, neolord0) : HWP 이진 → HWPX 압축 패키지
→ [Preview 우회 재압축] : PrvText.txt 누락 보완 (엣지케이스 #1)
→ python-hwpx + lxml 직접 편집: XML 레벨 텍스트 치환 (엣지케이스 #2 우회)
→ HWPX 저장
→ 한글 오피스에서 열람 확인
환경 (GCP 지미)
| 구성 요소 | 버전 / 비고 |
|---|---|
| Java 17 JDK (OpenJDK) | sudo apt 설치 |
| Maven | 3.8.7 |
| hwp2hwpx (neolord0) | 1.0.0 clone → mvn package 빌드 → target/hwp2hwpx-1.0.0.jar |
| hwplib | 1.1.10 (Apache-2.0) |
| hwpxlib | 1.0.8 (Apache-2.0) |
Java CLI 래퍼 Hwp2HwpxCli.java | 15줄 직접 작성 — input.hwp/output.hwpx 인자 |
| Python venv | ~/poomasi/hwp-work/venv |
| python-hwpx (airmang) | 2.9.0 |
| pyhwp (mete0r) | 0.1b15 |
실증 결과
파일 1: 서식.hwp (229 KB, junjinkong_2026)
- 출력:
seosik_edited.hwpx(152 KB) - 치환:
[email protected]→[email protected](2곳 모두 적용) - Drive: https://drive.google.com/file/d/1-756s48iOdkCn1g3fTXe2TlIwalf5pdT/view
파일 2: (서식 1-1). 2026년 고성능 컴퓨팅 자원 이용 신청서(최종).hwp (43 KB)
오늘 15시 마감인 HPC 신청서 원본으로 실증했다.
- 출력:
편집실증_서식1-1_HPC신청서_20260423.hwpx(39 KB) - 치환:
[email protected]→[email protected](1곳) - Drive “제출서류” 폴더: https://drive.google.com/file/d/1rbzd3k4o-tTmkfXOtn0q9psY-NdqRF2i/view
- 후니님이 집 PC 한글에서 직접 열어 스크린샷 확인: 레이아웃·표·체크박스 모두 보존, 이메일 칸만 정확히 치환됨
발견한 엣지케이스 2건
두 건 모두 오픈소스 이슈/PR로 되돌릴 예정.
#1 — hwp2hwpx (neolord0): PrvText.txt 누락
- 증상:
container.xml에Preview/PrvText.txt선언하지만 실제 파일을 생성하지 않음 → python-hwpx strict 검증에서 “Root content is missing” 에러 - 우회:
hwpx_unpacked/Preview/PrvText.txt빈 파일 생성 후 재압축 (repack_hwpx.py, mimetype을 STORED로 첫 엔트리 유지) - 할 일: HWPX 스펙 확인 후 neolord0/hwp2hwpx에 이슈/PR
#2 — python-hwpx (airmang): 표 셀 텍스트 스킵
- 증상:
replace_text_in_runs()가 표 셀 안 텍스트 run을 스킵.section0.xml의<hp:t>노드에 완전한 문자열로 존재하지만 API는 0건 반환 - 우회:
pkg.get_xml()+ lxmliter()+pkg.set_xml()로 XML 레벨 직접 치환 - 할 일: airmang/python-hwpx에 이슈/PR
집 PC 한글 스크린샷 추가 관찰
- 한컴오피스 경고: “편집 기능을 사용하려면 한컴독스를 유료 구독해야 합니다” → 이 PC 한글이 체험/뷰어 모드
- 함의: 한글 자체 편집은 유료 구독 필요하지만, 우리 파이프라인은 Python에서 편집하고 한글은 열람만 하면 됨. 라이선스 제약 우회 가능. 오히려 지미 경로가 유리하다.
남은 블로커 (다음 세션)
- NIPA HPC HWPX 수용 여부 — 공고문 재확인 필요
- HWPX → HWP 역변환 경로 — 수용 안 될 경우 대비. hwpxlib 또는 역방향 도구 탐색
- 엣지케이스 2건 이슈/PR — neolord0/hwp2hwpx + airmang/python-hwpx
- HPC 본문 검수 — 이사장 검수본 도착 후 체크리스트 5항목 (전화번호, “추론”→“검증”, GPU 사양, 일정 연도, 활용확산)
원칙 적용 기록
| 원칙 (2026-04-22 수립) | 이번 실증에서 |
|---|---|
| 한국 도구 생태계 우선 | 한국 개발자 오픈소스(neolord0, airmang, mete0r)로 해결 |
| 오픈소스 성역화 금지 | 엣지케이스 2건 PR로 되돌릴 예정 |
| 개발자 크레딧 표기 | neolord0 (hwp2hwpx, Apache-2.0), airmang (python-hwpx), mete0r (pyhwp) 명시 |
기록자: 지미 (GCP + 집 PC, 2026-04-23 새벽)
위치: poomasi-notes/wiki/지미/20260423_HWP편집파이프라인_Phase0실증성공.md