kordoc 4.21.11 → 4.21.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/README.md +21 -5
  2. package/dist/{-VONBNRVD.js → -4UPN43UD.js} +11 -11
  3. package/dist/{chunk-PUAKSOZD.js → chunk-3YD3SAQW.js} +178 -170
  4. package/dist/chunk-3YD3SAQW.js.map +1 -0
  5. package/dist/{chunk-KGA6PQUQ.cjs → chunk-57EOUEB4.cjs} +13 -13
  6. package/dist/{chunk-KGA6PQUQ.cjs.map → chunk-57EOUEB4.cjs.map} +1 -1
  7. package/dist/{chunk-J772QFJ5.js → chunk-6EB77P5L.js} +2 -2
  8. package/dist/{chunk-N2GL4NZH.js → chunk-B7CZZBKZ.js} +2 -2
  9. package/dist/{chunk-4UMTGSRH.js → chunk-C7OK4MBX.js} +3 -3
  10. package/dist/{chunk-S7J7VI4R.js → chunk-DAR2TMBL.js} +10 -10
  11. package/dist/{chunk-FUXOABQZ.js → chunk-DI7WHDXG.js} +2 -2
  12. package/dist/{chunk-OZG342GJ.cjs → chunk-DU2HC36X.cjs} +196 -108
  13. package/dist/chunk-DU2HC36X.cjs.map +1 -0
  14. package/dist/{chunk-2LFYBDX2.js → chunk-FFBZG5MK.js} +2 -2
  15. package/dist/{chunk-4U5ISDBU.js → chunk-FW7QWLBL.js} +3 -3
  16. package/dist/{chunk-5MNDRMFV.js → chunk-HCCQTNDS.js} +2 -2
  17. package/dist/{chunk-YRWSOFJW.js → chunk-HIUHLJQD.js} +2 -2
  18. package/dist/{chunk-5JRL2VQ6.cjs → chunk-IS2EXA5D.cjs} +6 -6
  19. package/dist/{chunk-5JRL2VQ6.cjs.map → chunk-IS2EXA5D.cjs.map} +1 -1
  20. package/dist/{chunk-OEF4V654.js → chunk-JGAY3BHY.js} +3 -3
  21. package/dist/{chunk-LZGPS3FH.js → chunk-JQBUWC6W.js} +2 -2
  22. package/dist/{chunk-WAYSJYK4.js → chunk-K23A2CP7.js} +2 -2
  23. package/dist/{chunk-BVWRQNWQ.cjs → chunk-LOO3UV25.cjs} +3 -3
  24. package/dist/{chunk-BVWRQNWQ.cjs.map → chunk-LOO3UV25.cjs.map} +1 -1
  25. package/dist/{chunk-L652BNX6.js → chunk-LXYM2EST.js} +2 -2
  26. package/dist/{chunk-6FUFKXB2.js → chunk-N4UL5NEO.js} +258 -90
  27. package/dist/chunk-N4UL5NEO.js.map +1 -0
  28. package/dist/{chunk-B6UZYIAR.js → chunk-NX5A22B6.js} +2 -2
  29. package/dist/{chunk-ZTNZ4UZM.js → chunk-QOIZF57S.js} +2 -2
  30. package/dist/{chunk-Q2F3ZGGS.js → chunk-RMMMNE2V.js} +4 -4
  31. package/dist/{chunk-NI3RMQTS.js → chunk-UAEY6VPV.js} +6 -6
  32. package/dist/{chunk-MZPJOJO2.cjs → chunk-V7LTELVS.cjs} +3 -3
  33. package/dist/{chunk-MZPJOJO2.cjs.map → chunk-V7LTELVS.cjs.map} +1 -1
  34. package/dist/{chunk-GLZ4XPKX.js → chunk-VC2SS3OH.js} +2 -2
  35. package/dist/{chunk-JDEWFE46.js → chunk-VXNR2JYB.js} +2 -2
  36. package/dist/{chunk-WSSCBJSU.cjs → chunk-WPZOIIM2.cjs} +2 -2
  37. package/dist/{chunk-WSSCBJSU.cjs.map → chunk-WPZOIIM2.cjs.map} +1 -1
  38. package/dist/{chunk-NMXMBYRP.js → chunk-YJ4J6EG5.js} +2 -2
  39. package/dist/{chunk-SWV27B56.js → chunk-YM4AEOS4.js} +2 -2
  40. package/dist/chunks-A67IJS56.js +10 -0
  41. package/dist/cli.js +30 -30
  42. package/dist/{formula-AYKY6JN4.cjs → formula-BCWYXJPE.cjs} +9 -9
  43. package/dist/{formula-AYKY6JN4.cjs.map → formula-BCWYXJPE.cjs.map} +1 -1
  44. package/dist/{formula-E7IFGURT.js → formula-N4TZPWWU.js} +4 -4
  45. package/dist/{formula-ROYY4OPC.js → formula-ZFB6JGOW.js} +3 -3
  46. package/dist/{image-ocr-SIO5GLQK.js → image-ocr-4Y23NCW4.js} +9 -9
  47. package/dist/{image-ocr-YZHJHHPA.js → image-ocr-7YHK7Q4C.js} +6 -6
  48. package/dist/{image-ocr-CVVWQHOV.cjs → image-ocr-RE7BFBGV.cjs} +15 -15
  49. package/dist/{image-ocr-CVVWQHOV.cjs.map → image-ocr-RE7BFBGV.cjs.map} +1 -1
  50. package/dist/index.cjs +276 -276
  51. package/dist/index.js +5 -5
  52. package/dist/mcp.js +22 -22
  53. package/dist/{model-bundle-5JREYZVZ.js → model-bundle-WISSN6YF.js} +5 -5
  54. package/dist/{models-MW56BJEC.js → models-SG4VHU65.js} +5 -5
  55. package/dist/{parse-worker-v2-MGIF63HD.js → parse-worker-v2-VNLAK2VC.js} +33 -16
  56. package/dist/parse-worker-v2-VNLAK2VC.js.map +1 -0
  57. package/dist/{parser-VUJQJDZI.cjs → parser-KYZD3NNB.cjs} +257 -234
  58. package/dist/parser-KYZD3NNB.cjs.map +1 -0
  59. package/dist/{parser-53TGQ4FC.js → parser-V3R7TKU5.js} +37 -14
  60. package/dist/parser-V3R7TKU5.js.map +1 -0
  61. package/dist/{parser-W46CWSPY.js → parser-VPVVJDB3.js} +34 -11
  62. package/dist/parser-VPVVJDB3.js.map +1 -0
  63. package/dist/pdf-ocr-G2SX5FKB.cjs +19 -0
  64. package/dist/{pdf-ocr-BQG3O6HQ.cjs.map → pdf-ocr-G2SX5FKB.cjs.map} +1 -1
  65. package/dist/pdf-ocr-KNNBYXVO.js +22 -0
  66. package/dist/pdf-ocr-PP2GGLS3.js +18 -0
  67. package/dist/{profile-io-AYQO4RLD.js → profile-io-72YURUWT.js} +3 -3
  68. package/dist/{rasterize-U23B3ZK4.js → rasterize-UPE2IZLP.js} +3 -3
  69. package/dist/{redact-doc-FV5NHVRH.js → redact-doc-GW6ILR52.js} +11 -11
  70. package/dist/{render-TLLHZCMS.js → render-2XLPO3ZA.js} +7 -7
  71. package/dist/seal-VLJCGOP7.js +10 -0
  72. package/dist/{setup-HWI3THDP.js → setup-GE4JKPHY.js} +3 -3
  73. package/dist/visual-7NPMIPSC.js +20 -0
  74. package/dist/{watch-7UBV5B5E.js → watch-XBVNOG6B.js} +12 -12
  75. package/package.json +7 -2
  76. package/dist/chunk-6FUFKXB2.js.map +0 -1
  77. package/dist/chunk-OZG342GJ.cjs.map +0 -1
  78. package/dist/chunk-PUAKSOZD.js.map +0 -1
  79. package/dist/chunks-CKWDRCT2.js +0 -10
  80. package/dist/parse-worker-v2-MGIF63HD.js.map +0 -1
  81. package/dist/parser-53TGQ4FC.js.map +0 -1
  82. package/dist/parser-VUJQJDZI.cjs.map +0 -1
  83. package/dist/parser-W46CWSPY.js.map +0 -1
  84. package/dist/pdf-ocr-BQG3O6HQ.cjs +0 -19
  85. package/dist/pdf-ocr-EWS374FU.js +0 -22
  86. package/dist/pdf-ocr-GKRBJXT4.js +0 -18
  87. package/dist/seal-BLZIPLWT.js +0 -10
  88. package/dist/visual-PW74S3AP.js +0 -20
  89. /package/dist/{-VONBNRVD.js.map → -4UPN43UD.js.map} +0 -0
  90. /package/dist/{chunk-J772QFJ5.js.map → chunk-6EB77P5L.js.map} +0 -0
  91. /package/dist/{chunk-N2GL4NZH.js.map → chunk-B7CZZBKZ.js.map} +0 -0
  92. /package/dist/{chunk-4UMTGSRH.js.map → chunk-C7OK4MBX.js.map} +0 -0
  93. /package/dist/{chunk-S7J7VI4R.js.map → chunk-DAR2TMBL.js.map} +0 -0
  94. /package/dist/{chunk-FUXOABQZ.js.map → chunk-DI7WHDXG.js.map} +0 -0
  95. /package/dist/{chunk-2LFYBDX2.js.map → chunk-FFBZG5MK.js.map} +0 -0
  96. /package/dist/{chunk-4U5ISDBU.js.map → chunk-FW7QWLBL.js.map} +0 -0
  97. /package/dist/{chunk-5MNDRMFV.js.map → chunk-HCCQTNDS.js.map} +0 -0
  98. /package/dist/{chunk-YRWSOFJW.js.map → chunk-HIUHLJQD.js.map} +0 -0
  99. /package/dist/{chunk-OEF4V654.js.map → chunk-JGAY3BHY.js.map} +0 -0
  100. /package/dist/{chunk-LZGPS3FH.js.map → chunk-JQBUWC6W.js.map} +0 -0
  101. /package/dist/{chunk-WAYSJYK4.js.map → chunk-K23A2CP7.js.map} +0 -0
  102. /package/dist/{chunk-L652BNX6.js.map → chunk-LXYM2EST.js.map} +0 -0
  103. /package/dist/{chunk-B6UZYIAR.js.map → chunk-NX5A22B6.js.map} +0 -0
  104. /package/dist/{chunk-ZTNZ4UZM.js.map → chunk-QOIZF57S.js.map} +0 -0
  105. /package/dist/{chunk-Q2F3ZGGS.js.map → chunk-RMMMNE2V.js.map} +0 -0
  106. /package/dist/{chunk-NI3RMQTS.js.map → chunk-UAEY6VPV.js.map} +0 -0
  107. /package/dist/{chunk-GLZ4XPKX.js.map → chunk-VC2SS3OH.js.map} +0 -0
  108. /package/dist/{chunk-JDEWFE46.js.map → chunk-VXNR2JYB.js.map} +0 -0
  109. /package/dist/{chunk-NMXMBYRP.js.map → chunk-YJ4J6EG5.js.map} +0 -0
  110. /package/dist/{chunk-SWV27B56.js.map → chunk-YM4AEOS4.js.map} +0 -0
  111. /package/dist/{chunks-CKWDRCT2.js.map → chunks-A67IJS56.js.map} +0 -0
  112. /package/dist/{formula-E7IFGURT.js.map → formula-N4TZPWWU.js.map} +0 -0
  113. /package/dist/{formula-ROYY4OPC.js.map → formula-ZFB6JGOW.js.map} +0 -0
  114. /package/dist/{image-ocr-SIO5GLQK.js.map → image-ocr-4Y23NCW4.js.map} +0 -0
  115. /package/dist/{image-ocr-YZHJHHPA.js.map → image-ocr-7YHK7Q4C.js.map} +0 -0
  116. /package/dist/{model-bundle-5JREYZVZ.js.map → model-bundle-WISSN6YF.js.map} +0 -0
  117. /package/dist/{models-MW56BJEC.js.map → models-SG4VHU65.js.map} +0 -0
  118. /package/dist/{pdf-ocr-EWS374FU.js.map → pdf-ocr-KNNBYXVO.js.map} +0 -0
  119. /package/dist/{pdf-ocr-GKRBJXT4.js.map → pdf-ocr-PP2GGLS3.js.map} +0 -0
  120. /package/dist/{profile-io-AYQO4RLD.js.map → profile-io-72YURUWT.js.map} +0 -0
  121. /package/dist/{rasterize-U23B3ZK4.js.map → rasterize-UPE2IZLP.js.map} +0 -0
  122. /package/dist/{redact-doc-FV5NHVRH.js.map → redact-doc-GW6ILR52.js.map} +0 -0
  123. /package/dist/{render-TLLHZCMS.js.map → render-2XLPO3ZA.js.map} +0 -0
  124. /package/dist/{seal-BLZIPLWT.js.map → seal-VLJCGOP7.js.map} +0 -0
  125. /package/dist/{setup-HWI3THDP.js.map → setup-GE4JKPHY.js.map} +0 -0
  126. /package/dist/{visual-PW74S3AP.js.map → visual-7NPMIPSC.js.map} +0 -0
  127. /package/dist/{watch-7UBV5B5E.js.map → watch-XBVNOG6B.js.map} +0 -0
package/README.md CHANGED
@@ -12,7 +12,7 @@ HWP 3.x·5.x, HWPX, HWPML, PDF, XLS·XLSX, DOCX, PPTX, PNG·JPG·WebP를 Markdow
12
12
  [English](README-EN.md) · [상세 사용법](docs/usage.md) · [벤치마크](docs/benchmarks.md) · [변경 이력](CHANGELOG.md)
13
13
 
14
14
  - 📊 **PDF 공개 벤치 종합 0.963** — opendataloader-bench 200문서. 공개 12개 파서 비교 1위(2026-09-29 기록). [측정 조건](docs/benchmarks.md)
15
- - 🇰🇷 **한국 공문서 표 구조 100%** — 원본 HWPX 2,424문서의 보이는 표 **10,342개 전부 구조 일치**. [4.21.11 검증](docs/benchmarks.md)
15
+ - 🇰🇷 **한국 공문서 표 구조 100%** — 원본 HWPX 2,424문서의 보이는 표 **10,342개 전부 구조 일치**. [4.21.13 검증](docs/benchmarks.md)
16
16
 
17
17
  [![Kordoc 활용하기 — 영상 보기](./docs/video-demo.jpg)](https://youtu.be/Q13GmgDcIw0)
18
18
 
@@ -98,27 +98,29 @@ await writeFile("보고서.hwpx", Buffer.from(hwpx))
98
98
 
99
99
  ## 검증 결과
100
100
 
101
- **4.21.11 · 2026-10-10 배포 검증**. 고정 코퍼스와 참조 기준으로 측정한 결과입니다.
101
+ **4.21.13 · 2026-10-10 배포 검증**. 고정 코퍼스와 참조 기준으로 측정한 결과입니다.
102
102
 
103
103
  | 대상 | 규모 | 결과 |
104
104
  | --- | --- | --- |
105
105
  | HWPX | 2,424문서 · 10,342표 | 표 구조 일치 **10,342/10,342 · 100%** |
106
106
  | HWP 5.x ↔ HWPX | 1,130쌍 · 4,315표 | 짝 문서의 표 구조 일치 **100%** |
107
- | PDF 글 | 744쌍 | 글자 재현율 **99.83%** · 정확도 **99.64%** · 읽기 순서 **99.16%** · 어절 F1 **98.86%** |
107
+ | PDF 글 | 744쌍 | 글자 재현율 **99.83%** · 정확도 **99.64%** · 읽기 순서 **99.16%** · 어절 F1 **98.87%** |
108
108
  | PDF 표 | 708쌍 · 2,331표 | 표 탐지 **99.83%** · 구조 일치 **97.98%** · 칸 F1 **0.991** |
109
109
  | PDF 전체 | 1,911문서 중 1,729건 채점 | 글 커버리지 **99.80%** |
110
110
  | OCR | 53문서 · 102쪽 | CER **0.0412** · 글자 재현율 **99.03%** |
111
111
 
112
112
  표 구조 점수와 셀 내용·화면 재현은 별도 지표입니다. 채점 범위·제외 기준·전 벤치 문서별 비교는 [벤치마크 상세](docs/benchmarks.md)에 있습니다.
113
113
 
114
- 외부 PDF 벤치 **opendataloader-bench 200문서**는 4.21.11 배포 측정에서 기본값 종합 **0.963**, OCR 끔 **0.939**입니다. [옵션별 결과와 재현 방법](docs/benchmarks.md#pdf--markdown--opendataloader-bench)
114
+ 외부 PDF 벤치 **opendataloader-bench 200문서**는 4.21.13 배포 측정에서 기본값 종합 **0.963**, OCR 끔 **0.939**입니다. [옵션별 결과와 재현 방법](docs/benchmarks.md#pdf--markdown--opendataloader-bench)
115
115
 
116
116
  ## 최근 업데이트
117
117
 
118
- 최신 배포: **[4.21.11](https://github.com/chrisryugj/kordoc/releases/tag/v4.21.11)** · 2026-10-10
118
+ 최신 배포: **[4.21.13](https://github.com/chrisryugj/kordoc/releases/tag/v4.21.13)** · 2026-10-10
119
119
 
120
120
  | 버전 | 주요 변경 |
121
121
  | --- | --- |
122
+ | 4.21.13 | PDF 법령 별표 쪽 넘김 행 — 번호 열이 다음 차례면 새 행, "가)" 항목도 다음 항목 머리로, 쪽을 넘는 긴 칸은 두 행을 덮는 한 칸으로; parse-worker 가 닫힌 stdout 에서 조용히 끝남(#142) (법령 별표 PDF 표 구조 일치 96.82 → 97.40%, 문서별 하락 0) |
123
+ | 4.21.12 | PDF 칸 숫자 줄·걸친 글상자·배분 이름표·첨자 겹침 — 칸을 채운 숫자 줄만 잇기, 서로 걸친 글상자는 글로, 숫자 행 배분 두 음절 붙이기, 붙은 첨자 겹침 허용 0.25em (PDF 어절 F1 98.86 → 98.87%·ODL 표 TEDS 0.9799 → 0.9802, 문서별 하락 0) |
122
124
  | 4.21.11 | PDF 목차·라벨탭 상자·칸 첨자 — 목차 리더 걷기, 제목 칩 상자를 글로, 목차 칸 제목·쪽 번호 짝짓기, 서식 칸 붙은 첨자 흡수 (PDF 글 정확도 99.58 → 99.64%·OCR CER 0.0421 → 0.0412, 문서별 하락 0 — 열화 OCR 은 표본 쪽 셋 이동) |
123
125
  | 4.21.10 | PDF 흐름도 표·괄호 풀이 — 선 격자 표를 품은 클러스터 후보 거름, 짧은 괄호 풀이 앞 줄 꺾임 이음 (PDF 어절 F1 98.84 → 98.85%·OCR CER 0.0443 → 0.0421, 문서별 하락 0) |
124
126
  | 4.21.9 | PDF 줄 꺾임 이음 — 낱말 가운데 꺾임·겹조사·계사·접미사·명사+하다, 본문 위 첨자 행 흡수 (PDF 어절 F1 98.81 → 98.84%·글 커버리지 99.79 → 99.80%, 문서별 하락 0) |
@@ -146,6 +148,20 @@ await writeFile("보고서.hwpx", Buffer.from(hwpx))
146
148
 
147
149
  4.18.8 셀 편집은 같은 수의 비어 있지 않은 줄에 한정됩니다. 빈 줄·줄 추가/삭제·리터럴 `<br>`·모호한 매핑은 계속 건너뜁니다. [전체 변경 이력](CHANGELOG.md)
148
150
 
151
+ ## 자주 묻는 질문
152
+
153
+ **Q. HWP·HWPX 파일을 Markdown으로 바꾸려면?**
154
+ `npx kordoc 문서.hwp -o 문서.md` 한 줄입니다. 한컴오피스 없이 파일을 직접 읽으며, 여러 파일은 `npx kordoc *.hwpx -d ./output`으로 한 번에 바꿉니다.
155
+
156
+ **Q. Claude·Cursor 같은 AI가 한글 문서를 읽게 하려면?**
157
+ `npx -y kordoc setup`으로 MCP를 등록하면 AI가 파일 경로만 받아 HWP·PDF·엑셀을 읽고, 비교하고, 양식을 채웁니다.
158
+
159
+ **Q. 인터넷이 막힌 폐쇄망에서도 되나요?**
160
+ 됩니다. `KORDOC_OFFLINE=1`이 외부 통신을 모두 막고, OCR도 API 키 없이 로컬 CPU에서 돕니다. [폐쇄망 설치](docs/offline-deployment.md)
161
+
162
+ **Q. RAG 색인용으로 쓸 수 있나요?**
163
+ `--format chunks`가 제목 경로를 붙인 구조 청크와 독립 표 청크를 냅니다. 표를 HTML 없이 받으려면 `--table-format gfm`(API는 `tableFormat: "gfm"`)을 씁니다. Python·Java에서는 [Python SDK](sdk/python/README.md)·[Java SDK](sdk/java/README.md)로 부릅니다.
164
+
149
165
  ## 문서·보안
150
166
 
151
167
  - [상세 사용법](docs/usage.md): 전체 CLI·MCP 도구·API·지원 포맷
@@ -54,17 +54,17 @@ import {
54
54
  unknownFontWarnings,
55
55
  usesGaejosikMunche,
56
56
  validateHwpx
57
- } from "./chunk-S7J7VI4R.js";
57
+ } from "./chunk-DAR2TMBL.js";
58
58
  import {
59
59
  blocksToPages
60
- } from "./chunk-2LFYBDX2.js";
60
+ } from "./chunk-FFBZG5MK.js";
61
61
  import {
62
62
  applySplices,
63
63
  buildParagraphSplices,
64
64
  buildRangeSplices,
65
65
  placeSealHwpx,
66
66
  scanSectionXml
67
- } from "./chunk-OEF4V654.js";
67
+ } from "./chunk-JGAY3BHY.js";
68
68
  import {
69
69
  DEFAULT_REDACT_RULES,
70
70
  redactMarkdown,
@@ -72,7 +72,7 @@ import {
72
72
  } from "./chunk-3WSNLH4B.js";
73
73
  import {
74
74
  blocksToChunks
75
- } from "./chunk-GLZ4XPKX.js";
75
+ } from "./chunk-VC2SS3OH.js";
76
76
  import {
77
77
  SPACE_EM_FIXED,
78
78
  SPACE_EM_FONT,
@@ -97,20 +97,20 @@ import {
97
97
  renderSceneToHtml,
98
98
  simulateWrap,
99
99
  simulateWrapKeepWord
100
- } from "./chunk-NI3RMQTS.js";
100
+ } from "./chunk-UAEY6VPV.js";
101
101
  import "./chunk-7FCNOKOR.js";
102
- import "./chunk-SWV27B56.js";
102
+ import "./chunk-YM4AEOS4.js";
103
103
  import "./chunk-VQFA55IC.js";
104
- import "./chunk-NMXMBYRP.js";
104
+ import "./chunk-YJ4J6EG5.js";
105
105
  import {
106
106
  blocksToMarkdown,
107
107
  flattenLayoutTables,
108
108
  hasStructuredCellContent
109
- } from "./chunk-ZTNZ4UZM.js";
110
- import "./chunk-JDEWFE46.js";
109
+ } from "./chunk-QOIZF57S.js";
110
+ import "./chunk-VXNR2JYB.js";
111
111
  import {
112
112
  VERSION
113
- } from "./chunk-L652BNX6.js";
113
+ } from "./chunk-LXYM2EST.js";
114
114
  export {
115
115
  AGENCY_COMMON_NAME,
116
116
  BUILTIN_TEMPLATES,
@@ -204,4 +204,4 @@ export {
204
204
  usesGaejosikMunche,
205
205
  validateHwpx
206
206
  };
207
- //# sourceMappingURL=-VONBNRVD.js.map
207
+ //# sourceMappingURL=-4UPN43UD.js.map