Install any skill in seconds. Free to start, no credit card required.
Get Started Free →한국 공문서(HWP 3.0/5.x·HWPX·HWPML·PDF·XLSX·DOCX)를 마크다운으로 파싱해 드립니다 — 표 완벽 재현, 신구대조표, 양식 필드 추출/자동 채우기, 문서 비교, DRM 배포용 문서 복호화, OCR 연동까지. kordoc MCP의 8개 도구를 호출하므로 별도 설치·API 키가 필요 없습니다(Node.js 18+ 권장). 다음과 같은 요청 시 사용하세요: - "이 HWP 파일 읽어줘", "HWP 문서 내용 알려줘", "한글 파일 텍스트 추출" - "공문서 PDF 마크다운으로 변환", "PDF 표 그대로 가져와줘" - "두 문서 신구대조표 만들어줘", "개정판 달라진 부분 비교" - "신청서 양식 자동 채우기", "공문서 빈칸 채워줘", "양식 필드 추출" - "판결문 HWP 텍스트 추출", "엑셀 양식 파싱", "워드 문서 읽어줘" - "배포용 HWP 잠금 해제", "DRM 문서 읽기", "스캔 PDF 텍스트화(OCR)" 본 스킬은 "읽기(파싱)" 전담입니다.
.claude/skills/modu-ai-doc-reader/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 129% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 175% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 85% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 70% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 83% | 0% |
관공서·법원·기업에서 쏟아지는 한국 공문서를 마크다운으로 파싱하는 전문가. HWP 3.0(구버전)·HWP 5.x·HWPX·HWPML·PDF·XLSX·DOCX를 지원하며, 표 구조·양식·서식을 보존해 AI가 바로 읽고 분석할 수 있게 만듭니다. 단순 텍스트 추출을 넘어 신구대조표·양식 자동 채우기·DRM 복호화·OCR까지 공문서 처리 전 과정을 자동화합니다.
> 본 스킬은 chrisryugj/kordoc (MIT, 949★) MCP 서버를 호출합니다. rhwp(MIT)·OpenDataLoader(Apache-2.0)·pdfjs(Apache-2.0)·cfb(Apache-2.0)·JSZip(MIT) OSS를 포함합니다.
| 도구 | 설명 | | --- | --- | | parse_document | HWP/HWPX/HWPML/PDF/XLSX/DOCX → 마크다운 (메타데이터 포함). 메인 파싱 도구. | | detect_format | 매직 바이트로 포맷 감지(hwpx·hwp·hwpml·pdf·xlsx·docx·unknown). 확장자 오용 의심 시 먼저 호출. | | parse_metadata | 메타데이터(제목·작성자·생성일 등)만 빠르게 추출. 전문 파싱 전 사전 확인에 적합. | | parse_pages | 특정 페이지 범위만 파싱("1-3", [1, 5, 10]). 대형 PDF 부분 조회 시 필수. | | parse_table | N번째 테이블만 추출. 표만 필요할 때 전체 파싱 회피. | | compare_documents | 두 문서 비교(신구대조표). HWP↔HWPX 크로스 포맷 지원, 표는 셀 단위 diff. | | parse_form | 양식 필드를 JSON으로 추출(라벨-값 쌍). 공문서 양식 분석·자동화 시작점. | | fill_form | 양식 템플릿에 값 자동 채우기. HWPX 원본 서식(글꼴·크기·정렬) 100% 보존 모드(hwpx-preserve) 지원. 체크박스(□→☑), 괄호 빈칸(( )→(3)), 어노테이션 채움 지원. |
사용자가 파일을 전달하면 확장자가 확실하지 않은 경우 detect_format으로 실제 포맷을 확인합니다. HWP 바이너리인데 HWPML(XML)인 경우 등이 흔한 케이스입니다.
IF 확장자 != 실제 포맷 (예: .hwp인데 HWPML XML):
detect_format로 실제 포맷 감지 → 그 포맷에 맞는 도구로 파싱| 목적 | 도구 | 비고 | | --- | --- | --- | | 전체 문서를 마크다운으로 | parse_document | 기본 경로. 메타데이터 자동 포함. | | 제목·작성자만 빠르게 | parse_metadata | 전체 파싱 전 사전 확인. | | 특정 페이지만 (대형 PDF) | parse_pages | pages: "1-3" 또는 [1, 5, 10]. | | 표만 추출 | parse_table | N번째 테이블만. | | 두 문서 비교 (신구대조표) | compare_documents | 크로스 포맷(HWP↔HWPX) 지원. | | 양식 필드 JSON 추출 | parse_form | 라벨-값 매핑. | | 양식 자동 채우기 | fill_form | hwpx-preserve 모드로 서식 보존. |
colspan/rowspan)이 복잡하면 HTML <table>로 출력해 구조 보존.warnings(스킵된 요소, 숨김 텍스트, IMAGE_BASED_PDF)가 있으면 반드시 사용자에게 알림.IMAGE_BASED_PDF 에러 코드).MCP 호출이 불가능한 환경에서는 kordoc CLI를 직접 사용할 수 있습니다. parse_form·fill_form·compare_documents는 CLI에서도 동일하게 동작합니다.
bash# 단일 파일 파싱 → 터미널 출력 npx kordoc 사업계획서.hwpx # 파일로 저장 npx kordoc 보고서.hwp -o 보고서.md # 일괄 변환 npx kordoc *.pdf -d ./변환결과/ # JSON(구조화 데이터 + 메타데이터) npx kordoc 검토서.hwpx --format json # 페이지 범위 npx kordoc 보고서.hwpx --pages 1-3 # 양식 채우기 npx kordoc fill 신청서.hwpx -f '성명=홍길동,주소=서울' -o 결과.hwpx npx kordoc fill 신청서.hwpx -j values.json -o 결과.hwpx npx kordoc fill 신청서.hwpx --dry-run # 필드 목록만 확인 # 폴더 감시 (자동 변환) npx kordoc watch ./수신함 -d ./변환결과 --webhook https://...
> CLI는 MCP 서버와 동일한 엔진을 사용하므로 결과 품질이 동일합니다. 단, AI 에이전트 연동이 필요 없는 단발성 변환·배치 작업에 적합합니다.
HWP 3.0(구버전 판결문)·HWP 5.x·HWPX 공문서를 마크다운으로 변환해 AI가 읽고 요약·검색할 수 있게 만듭니다. 구버전 한컴 문서("HWP Document File V3.00" 시그니처)도 상용조합형(johab) → 유니코드 변환으로 지원합니다.
선 없는 PDF·복잡하게 병합된 HWP 표도 구조를 분석해 정확한 마크다운 테이블로 복원합니다. 선 기반 감지 + 클러스터 기반 fallback + 한국 공문서 key-value 패턴 인식을 단계적으로 적용합니다.
개정 전·후 두 문서를 비교해 추가·삭제·수정·변경 없음을 블록 단위로 표시합니다. 표는 셀 단위 diff를 제공합니다. HWP와 HWPX 간 크로스 포맷 비교도 지원합니다.
공문서 양식 템플릿(신청서·보고서)에 값을 넣으면 라벨-값 매핑·체크박스·괄호 빈칸·어노테이션을 자동으로 채웁니다. hwpx-preserve 모드는 원본 서식(글꼴·크기·정렬)을 100% 보존합니다.
관공서에서 배포용으로 잠근 HWP/HWPX 파일을 자동 텍스트 추출합니다. HWPX DRM은 한컴 오피스 COM API(fallback), HWP 5.x 배포용은 AES-128 ECB 복호화(rhwp 알고리즘 포팅)로 처리합니다. Windows + 한컴 오피스 환경에서 별도 설정 없이 동작합니다.
스캔 문서·사진 PDF는 IMAGE_BASED_PDF 에러 코드와 함께 OCR 연동 안내가 나갑니다. Tesseract·Claude Vision 등 프로바이더를 직접 연결해 텍스트를 추출합니다.
warnings는 사용자에게 반드시 노출(스킵된 요소, 숨김 텍스트, 이미지 PDF 등)parse_metadata로 메타데이터만 먼저 보여주고 전체 파싱 여부를 확인본 스킬은 "읽기(파싱)" 전담입니다. "생성(쓰기)"은 아래 페어 스킬을 사용하세요.
| 작업 | 스킬 | 비고 | | --- | --- | --- | | HWP/HWPX 문서 생성(기안서·품의서·공문) | moai-officer:doc-hwp | 한컴오피스 호환 .hwpx 파일 작성 | | 워드(.docx) 문서 생성 | moai-officer:doc-docx | 보고서·계약서·제안서 | | PDF 생성 | moai-officer:doc-pdf | weasyprint 엔진, CJK 폰트 임베딩 | | 엑셀(.xlsx) 생성 | moai-officer:doc-xlsx | KPI 대시보드·매출 분석표 | | HWP/HWPX/PDF 읽기·파싱 | moai-officer:doc-reader (본 스킬) | kordoc MCP |
예외: fill_form은 기존 양식 템플릿의 빈칸을 채우는 동작이므로 본 스킬이 담당합니다(새 문서를 생성하지 않음).
moai-officer:doc-pdf / doc-hwp / doc-docx / doc-xlsxmoai-officer:doc-pdf (weasyprint 엔진)moai-writer:korean-spell-check / humanize-koreanget_attachments(mode=extract))가 내부적으로 kordoc을 사용하므로 공시 컨텍스트에서는 dart MCP 우선사용자 측 필수 시크릿 없음. API 키 발급 불필요.
npx -y kordoc mcp로 실행됩니다.IMAGE_BASED_PDF(스캔 문서) 파싱은 OCR 프로바이더(Tesseract·Claude Vision 등)를 별도 연결해야 합니다.ENCRYPTED — DRM 배포용 문서 + Windows 한컴 오피스 미설치 → COM fallback 불가. 원본 파일 그대로 또는 한컴에서 열어 재저장 안내.ZIP_BOMB — 악성/손상 ZIP 기반 포맷(HWPX·XLSX·DOCX). 처리 중단.IMAGE_BASED_PDF — 스캔/사진 PDF로 텍스트 레이어 없음. OCR 연동 필요.UNSUPPORTED_FORMAT — 지원하지 않는 포맷. 지원 포맷: HWP 3.0/5.x, HWPX, HWPML, PDF, XLSX, DOCX.PARSE_WARNING — 부분 파싱 실패(개별 페이지). 전체 중단 없이 warnings로 노출.moai-writer:korean-spell-check — 파싱된 텍스트 맞춤법·문체 교정moai-analyst:data-explorer — 파싱된 표 데이터 분석moai-officer:doc-pdf — 파싱된 내용으로 새 PDF 생성moai-officer:doc-hwp — 파싱된 내용으로 새 한글 문서 생성moai-officer:doc-docx — 파싱된 내용으로 새 워드 문서 생성moai-analyst:data-visualizer — 파싱된 표 데이터 차트 시각화moai-officer:setup-mcp-connector — kordoc MCP 사전 준비 가이드| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-06 | fail→pass | 8,906 | 7,995 | -10% | 1 | 1 | 0% | 1,641 | 3,760 | +129% | 0 | 0 | — |
case-01 | fail→pass | 10,965 | 25,080 | +129% | 1 | 1 | 0% | 1,871 | 5,138 | +175% | 0 | 0 | — |
case-02 | fail→fail | 18,538 | 23,350 | +26% | 1 | 1 | 0% | 2,248 | 3,778 | +68% | 0 | 0 | — |
case-03 | fail→pass | 19,395 | 12,577 | -35% | 1 | 1 | 0% | 2,572 | 4,759 | +85% | 0 | 0 | — |
case-04 | fail→pass | 18,632 | 10,945 | -41% | 1 | 1 | 0% | 2,497 | 4,241 | +70% | 0 | 0 | — |
case-05 | fail→pass | 16,264 | 8,271 | -49% | 1 | 1 | 0% | 2,011 | 3,689 | +83% | 0 | 0 | — |
case-07 | fail→fail | 18,132 | 8,840 | -51% | 1 | 1 | 0% | 2,577 | 3,817 | +48% | 0 | 0 | — |
case-08 | fail→pass | 18,982 | 15,593 | -18% | 1 | 1 | 0% | 2,315 | 5,096 | +120% | 0 | 0 | — |
case-09 | fail→fail | 27,575 | 13,299 | -52% | 1 | 1 | 0% | 2,817 | 4,794 | +70% | 0 | 0 | — |
case-10 | fail→pass | 25,121 | 11,435 | -54% | 1 | 1 | 0% | 3,227 | 4,350 | +35% | 0 | 0 | — |
case-16 | fail→pass | 16,789 | 8,809 | -48% | 1 | 1 | 0% | 1,939 | 3,865 | +99% | 0 | 0 | — |
case-11 | fail→pass | 10,457 | 16,605 | +59% | 1 | 1 | 0% | 1,826 | 5,259 | +188% | 0 | 0 | — |
case-12 | fail→pass | 12,879 | 15,064 | +17% | 1 | 1 | 0% | 2,368 | 5,176 | +119% | 0 | 0 | — |
case-13 | pass→pass | 16,906 | 11,800 | -30% | 1 | 1 | 0% | 2,975 | 5,197 | +75% | 0 | 0 | — |
case-14 | pass→pass | 24,234 | 13,905 | -43% | 1 | 1 | 0% | 2,932 | 4,680 | +60% | 0 | 0 | — |
case-15 | fail→pass | 26,109 | 4,105 | -84% | 1 | 1 | 0% | 2,444 | 3,969 | +62% | 0 | 0 | — |
case-17 | fail→pass | 16,189 | 10,038 | -38% | 1 | 1 | 0% | 2,864 | 4,101 | +43% | 0 | 0 | — |
case-18 | fail→pass | 21,113 | 6,154 | -71% | 1 | 1 | 0% | 2,571 | 4,255 | +65% | 0 | 0 | — |
case-19 | pass→pass | 16,140 | 16,163 | +0% | 1 | 1 | 0% | 2,541 | 5,075 | +100% | 0 | 0 | — |
case-20 | fail→pass | 24,796 | 3,361 | -86% | 1 | 1 | 0% | 4,489 | 3,855 | -14% | 0 | 0 | — |
case-21 | fail→pass | 19,660 | 4,987 | -75% | 1 | 1 | 0% | 3,786 | 4,139 | +9% | 0 | 0 | — |
case-22 | fail→pass | 15,860 | 12,232 | -23% | 1 | 1 | 0% | 2,992 | 5,362 | +79% | 0 | 0 | — |
case-23 | fail→pass | 7,522 | 9,480 | +26% | 1 | 1 | 0% | 1,331 | 4,765 | +258% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 22 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +74 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.