kordoc 4.24.7 → 4.24.8

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 (138) hide show
  1. package/README.md +6 -7
  2. package/dist/{-GQDQXRQN.js → -TLCDUU22.js} +11 -11
  3. package/dist/{chunk-E35YPWOX.js → chunk-5MQG3GJI.js} +2 -2
  4. package/dist/{chunk-MNG25FK4.cjs → chunk-73MRAQXA.cjs} +192 -176
  5. package/dist/chunk-73MRAQXA.cjs.map +1 -0
  6. package/dist/{chunk-VHAOAQZZ.cjs → chunk-7F35EPMM.cjs} +3 -3
  7. package/dist/chunk-7F35EPMM.cjs.map +1 -0
  8. package/dist/{chunk-FQVWYJNM.js → chunk-7JUF6G6Z.js} +2 -2
  9. package/dist/{chunk-OMJPCWKS.js → chunk-7XPTKW76.js} +2 -2
  10. package/dist/{chunk-MLFPEETP.js → chunk-BJABLQMB.js} +2 -2
  11. package/dist/{chunk-YQB3LPKQ.cjs → chunk-C3BOYTY5.cjs} +2 -2
  12. package/dist/chunk-C3BOYTY5.cjs.map +1 -0
  13. package/dist/{chunk-FIS3WY5Q.js → chunk-CB57N2MG.js} +2 -2
  14. package/dist/{chunk-BNIXSB6D.js → chunk-D3EHIHYN.js} +2 -2
  15. package/dist/{chunk-O4RQCDN2.js → chunk-DPB6ZVQ5.js} +33 -17
  16. package/dist/chunk-DPB6ZVQ5.js.map +1 -0
  17. package/dist/{chunk-JKZY6FX5.js → chunk-F7UWIMUA.js} +2 -2
  18. package/dist/{chunk-EIUXBJZP.js → chunk-FSWJC5RR.js} +3 -3
  19. package/dist/chunk-GS7T56RP.cjs.map +1 -1
  20. package/dist/{chunk-EIGCAAVM.js → chunk-IT5XO3UG.js} +32 -16
  21. package/dist/chunk-IT5XO3UG.js.map +1 -0
  22. package/dist/chunk-J55UQC5H.cjs.map +1 -1
  23. package/dist/{chunk-UDUEOBS5.js → chunk-J7MFKS73.js} +2 -2
  24. package/dist/{chunk-AYGMF6H5.cjs → chunk-JM7PZM6E.cjs} +3 -3
  25. package/dist/chunk-JM7PZM6E.cjs.map +1 -0
  26. package/dist/{chunk-DEDUWANG.js → chunk-K2FGQ5D5.js} +11 -11
  27. package/dist/{chunk-GMKFXPEI.js → chunk-KA6JZZIW.js} +5 -5
  28. package/dist/chunk-KA6JZZIW.js.map +1 -0
  29. package/dist/{chunk-OPNMXBUR.js → chunk-N2XN6GAQ.js} +2 -2
  30. package/dist/{chunk-EJPPVB2Y.js → chunk-NE6G6LCP.js} +2 -2
  31. package/dist/{chunk-7BZBMXWD.cjs → chunk-NW2CKOFL.cjs} +6 -6
  32. package/dist/chunk-NW2CKOFL.cjs.map +1 -0
  33. package/dist/{chunk-N2JZGYFK.js → chunk-OUJIV2AM.js} +4 -4
  34. package/dist/chunk-OUJIV2AM.js.map +1 -0
  35. package/dist/{chunk-7ICC55XY.js → chunk-RCDRTQ37.js} +2 -2
  36. package/dist/{chunk-ZQQGV7K2.js → chunk-RCT5MO53.js} +6 -6
  37. package/dist/{chunk-BLWDQEBY.js → chunk-TDB27K2Z.js} +2 -2
  38. package/dist/chunk-TK3FDAEE.cjs.map +1 -1
  39. package/dist/{chunk-WVZXPEHX.js → chunk-TTUAJYTC.js} +5 -5
  40. package/dist/chunk-TTUAJYTC.js.map +1 -0
  41. package/dist/{chunk-C4AY47C5.js → chunk-WTSID6AI.js} +2 -2
  42. package/dist/{chunk-CG2Z6NB3.js → chunk-XOUZC7MX.js} +2 -2
  43. package/dist/{chunk-DZRXJEOF.js → chunk-Z5DT55TW.js} +3 -3
  44. package/dist/{chunk-V4PS653P.cjs → chunk-ZJYNTA5R.cjs} +57 -57
  45. package/dist/chunk-ZJYNTA5R.cjs.map +1 -0
  46. package/dist/chunks-S2GGFN6W.js +10 -0
  47. package/dist/cli.js +30 -30
  48. package/dist/{formula-6XLWGUCB.js → formula-DZMBNPWT.js} +4 -4
  49. package/dist/{formula-DCC5EOSX.js → formula-PNMQ5JFJ.js} +3 -3
  50. package/dist/{formula-C55TRBHH.cjs → formula-ZLNSVWS6.cjs} +9 -9
  51. package/dist/formula-ZLNSVWS6.cjs.map +1 -0
  52. package/dist/{image-ocr-L736MGYD.js → image-ocr-BPH25SFW.js} +9 -9
  53. package/dist/{image-ocr-K3ZXDUNU.js → image-ocr-P5Q6YXTO.js} +6 -6
  54. package/dist/{image-ocr-EV7GVD3W.cjs → image-ocr-YUXCVOOP.cjs} +17 -17
  55. package/dist/image-ocr-YUXCVOOP.cjs.map +1 -0
  56. package/dist/index.cjs +340 -340
  57. package/dist/index.cjs.map +1 -1
  58. package/dist/index.js +6 -6
  59. package/dist/mcp.js +23 -23
  60. package/dist/{model-bundle-OOOJFMGR.js → model-bundle-XAM6JFZV.js} +5 -5
  61. package/dist/{models-ELFZII4R.js → models-6Q5ULSTP.js} +5 -5
  62. package/dist/page-range-QHHFTL7X.cjs.map +1 -1
  63. package/dist/{parse-worker-v2-WS35WZY5.js → parse-worker-v2-ONX5QLJZ.js} +12 -12
  64. package/dist/{parser-CNRI55MG.js → parser-54R7ENH6.js} +9 -9
  65. package/dist/{parser-K7Y44QHS.js → parser-JHXN4S6L.js} +12 -12
  66. package/dist/{parser-X6P3JBT2.cjs → parser-Z352BN56.cjs} +159 -159
  67. package/dist/parser-Z352BN56.cjs.map +1 -0
  68. package/dist/{pdf-ocr-QQPZLIHM.js → pdf-ocr-FQ4LAXM6.js} +9 -9
  69. package/dist/{pdf-ocr-MVNHXGPS.js → pdf-ocr-LFVER7IE.js} +6 -6
  70. package/dist/pdf-ocr-SMFFJYTD.cjs +31 -0
  71. package/dist/pdf-ocr-SMFFJYTD.cjs.map +1 -0
  72. package/dist/{profile-io-GSRLMU4D.js → profile-io-YW5QWKBB.js} +3 -3
  73. package/dist/{rasterize-3H5QKDH2.js → rasterize-T4S3NMQ7.js} +3 -3
  74. package/dist/{redact-doc-TLBF7J7W.js → redact-doc-CAVBR5XO.js} +11 -11
  75. package/dist/{render-FTCOQ6WO.js → render-ZW52ZX6R.js} +7 -7
  76. package/dist/seal-TQ3RLVVT.js +10 -0
  77. package/dist/{setup-WVZ47AKV.js → setup-7UGSJPJP.js} +3 -3
  78. package/dist/visual-6GXHKPCJ.js +21 -0
  79. package/dist/{watch-CA32Z7XB.js → watch-M4A7B5WS.js} +12 -12
  80. package/package.json +4 -4
  81. package/dist/chunk-7BZBMXWD.cjs.map +0 -1
  82. package/dist/chunk-AYGMF6H5.cjs.map +0 -1
  83. package/dist/chunk-EIGCAAVM.js.map +0 -1
  84. package/dist/chunk-GMKFXPEI.js.map +0 -1
  85. package/dist/chunk-MNG25FK4.cjs.map +0 -1
  86. package/dist/chunk-N2JZGYFK.js.map +0 -1
  87. package/dist/chunk-O4RQCDN2.js.map +0 -1
  88. package/dist/chunk-V4PS653P.cjs.map +0 -1
  89. package/dist/chunk-VHAOAQZZ.cjs.map +0 -1
  90. package/dist/chunk-WVZXPEHX.js.map +0 -1
  91. package/dist/chunk-YQB3LPKQ.cjs.map +0 -1
  92. package/dist/chunks-XURCANPP.js +0 -10
  93. package/dist/formula-C55TRBHH.cjs.map +0 -1
  94. package/dist/image-ocr-EV7GVD3W.cjs.map +0 -1
  95. package/dist/parser-X6P3JBT2.cjs.map +0 -1
  96. package/dist/pdf-ocr-S6GSKOPT.cjs +0 -31
  97. package/dist/pdf-ocr-S6GSKOPT.cjs.map +0 -1
  98. package/dist/seal-74R7KDRY.js +0 -10
  99. package/dist/visual-TEW6Y3NH.js +0 -21
  100. /package/dist/{-GQDQXRQN.js.map → -TLCDUU22.js.map} +0 -0
  101. /package/dist/{chunk-E35YPWOX.js.map → chunk-5MQG3GJI.js.map} +0 -0
  102. /package/dist/{chunk-FQVWYJNM.js.map → chunk-7JUF6G6Z.js.map} +0 -0
  103. /package/dist/{chunk-OMJPCWKS.js.map → chunk-7XPTKW76.js.map} +0 -0
  104. /package/dist/{chunk-MLFPEETP.js.map → chunk-BJABLQMB.js.map} +0 -0
  105. /package/dist/{chunk-FIS3WY5Q.js.map → chunk-CB57N2MG.js.map} +0 -0
  106. /package/dist/{chunk-BNIXSB6D.js.map → chunk-D3EHIHYN.js.map} +0 -0
  107. /package/dist/{chunk-JKZY6FX5.js.map → chunk-F7UWIMUA.js.map} +0 -0
  108. /package/dist/{chunk-EIUXBJZP.js.map → chunk-FSWJC5RR.js.map} +0 -0
  109. /package/dist/{chunk-UDUEOBS5.js.map → chunk-J7MFKS73.js.map} +0 -0
  110. /package/dist/{chunk-DEDUWANG.js.map → chunk-K2FGQ5D5.js.map} +0 -0
  111. /package/dist/{chunk-OPNMXBUR.js.map → chunk-N2XN6GAQ.js.map} +0 -0
  112. /package/dist/{chunk-EJPPVB2Y.js.map → chunk-NE6G6LCP.js.map} +0 -0
  113. /package/dist/{chunk-7ICC55XY.js.map → chunk-RCDRTQ37.js.map} +0 -0
  114. /package/dist/{chunk-ZQQGV7K2.js.map → chunk-RCT5MO53.js.map} +0 -0
  115. /package/dist/{chunk-BLWDQEBY.js.map → chunk-TDB27K2Z.js.map} +0 -0
  116. /package/dist/{chunk-C4AY47C5.js.map → chunk-WTSID6AI.js.map} +0 -0
  117. /package/dist/{chunk-CG2Z6NB3.js.map → chunk-XOUZC7MX.js.map} +0 -0
  118. /package/dist/{chunk-DZRXJEOF.js.map → chunk-Z5DT55TW.js.map} +0 -0
  119. /package/dist/{chunks-XURCANPP.js.map → chunks-S2GGFN6W.js.map} +0 -0
  120. /package/dist/{formula-6XLWGUCB.js.map → formula-DZMBNPWT.js.map} +0 -0
  121. /package/dist/{formula-DCC5EOSX.js.map → formula-PNMQ5JFJ.js.map} +0 -0
  122. /package/dist/{image-ocr-L736MGYD.js.map → image-ocr-BPH25SFW.js.map} +0 -0
  123. /package/dist/{image-ocr-K3ZXDUNU.js.map → image-ocr-P5Q6YXTO.js.map} +0 -0
  124. /package/dist/{model-bundle-OOOJFMGR.js.map → model-bundle-XAM6JFZV.js.map} +0 -0
  125. /package/dist/{models-ELFZII4R.js.map → models-6Q5ULSTP.js.map} +0 -0
  126. /package/dist/{parse-worker-v2-WS35WZY5.js.map → parse-worker-v2-ONX5QLJZ.js.map} +0 -0
  127. /package/dist/{parser-CNRI55MG.js.map → parser-54R7ENH6.js.map} +0 -0
  128. /package/dist/{parser-K7Y44QHS.js.map → parser-JHXN4S6L.js.map} +0 -0
  129. /package/dist/{pdf-ocr-MVNHXGPS.js.map → pdf-ocr-FQ4LAXM6.js.map} +0 -0
  130. /package/dist/{pdf-ocr-QQPZLIHM.js.map → pdf-ocr-LFVER7IE.js.map} +0 -0
  131. /package/dist/{profile-io-GSRLMU4D.js.map → profile-io-YW5QWKBB.js.map} +0 -0
  132. /package/dist/{rasterize-3H5QKDH2.js.map → rasterize-T4S3NMQ7.js.map} +0 -0
  133. /package/dist/{redact-doc-TLBF7J7W.js.map → redact-doc-CAVBR5XO.js.map} +0 -0
  134. /package/dist/{render-FTCOQ6WO.js.map → render-ZW52ZX6R.js.map} +0 -0
  135. /package/dist/{seal-74R7KDRY.js.map → seal-TQ3RLVVT.js.map} +0 -0
  136. /package/dist/{setup-WVZ47AKV.js.map → setup-7UGSJPJP.js.map} +0 -0
  137. /package/dist/{visual-TEW6Y3NH.js.map → visual-6GXHKPCJ.js.map} +0 -0
  138. /package/dist/{watch-CA32Z7XB.js.map → watch-M4A7B5WS.js.map} +0 -0
package/README.md CHANGED
@@ -105,36 +105,35 @@ await writeFile("보고서.hwpx", Buffer.from(hwpx))
105
105
 
106
106
  ## 검증 결과
107
107
 
108
- **4.22.14 · 2026-10-19 검증**(렌더 배치·PDF 글·표·OCR 은 4.24.6 · 2026-10-25). 고정 코퍼스와 참조 기준으로 측정한 결과입니다.
108
+ **4.22.14 · 2026-10-19 검증**(렌더 배치·PDF 글·표·OCR 은 4.24.8 · 2026-10-26). 고정 코퍼스와 참조 기준으로 측정한 결과입니다.
109
109
 
110
110
  | 대상 | 규모 | 결과 |
111
111
  | --- | --- | --- |
112
112
  | HWPX | 2,424문서 · 10,342표 | 표 구조 일치 **10,342/10,342 · 100%** |
113
113
  | HWP 5.x ↔ HWPX | 1,130쌍 · 4,315표 | 짝 문서의 표 구조 일치 **100%** |
114
- | PDF 글 | 744쌍 | 글자 재현율 **99.881%** · 정확도 **99.676%** · 읽기 순서 **99.307%** · 어절 F1 **99.064%** |
114
+ | PDF 글 | 744쌍 | 글자 재현율 **99.881%** · 정확도 **99.676%** · 읽기 순서 **99.309%** · 어절 F1 **99.064%** |
115
115
  | PDF 표 | 708쌍 · 2,331표 | 표 탐지 **99.83%** · 구조 일치 **98.20%** · 칸 F1 **0.9919** |
116
116
  | HWPX 재조판 | 다중줄 25,187문단 (12개 폴더) | 모든 줄 시작 일치 **24,941/25,187 · 99.02%** |
117
117
  | PDF 중첩표 (텍스트층) | 29문서 · 101표 | 구조·칸 내용 **101/101 · 100%** |
118
118
  | 법령 별표 | 272건 · 346표 | HWP **346/346**, PDF **342/346 · 98.84%** |
119
119
  | PDF 전체 | 1,911문서 중 1,729건 채점 | 글 커버리지 **99.80%** |
120
- | OCR | 53문서 · 102쪽 · 67표 | CER **0.0327** · 글자 재현율 **99.04%** · 표 구조 일치 **25/67** |
120
+ | OCR | 53문서 · 102쪽 · 67표 | CER **0.0314** · 글자 재현율 **99.05%** · 표 구조 일치 **25/67** |
121
121
  | opendataloader-bench | PDF 200문서 | 종합 기본값 **0.964** · OCR 끔 **0.939** |
122
- | HWPX 렌더 배치 (4.24.6) | 한컴 PDF 짝 · 글 조각 90,906 · 그림 4,107 | 글 위치(±1.5pt) **87,620 · 96.4%** · 그림 위치(±2pt) **4,019 · 97.9%** |
122
+ | HWPX 렌더 배치 (4.24.8) | 한컴 PDF 짝 · 글 조각 90,906 · 그림 4,107 | 글 위치(±1.5pt) **87,620 · 96.4%** · 그림 위치(±2pt) **4,019 · 97.9%** |
123
123
 
124
124
  표 구조 점수와 셀 내용·화면 재현은 별도 지표입니다. 중첩표 100%는 위 101표에 한정하며 전체 PDF·조판의 완전 일치를 뜻하지 않습니다. 채점 범위·제외 기준·옵션별 수치·재현 방법은 [벤치마크 상세](docs/benchmarks.md)에 있습니다.
125
125
 
126
126
  ## 최근 업데이트
127
127
 
128
- 최신 배포: **[4.24.7](https://github.com/chrisryugj/kordoc/releases/tag/v4.24.7)** · 2026-10-26
128
+ 최신 배포: **[4.24.8](https://github.com/chrisryugj/kordoc/releases/tag/v4.24.8)** · 2026-10-26
129
129
 
130
130
  | 버전 | 주요 변경 | 수치 변화 |
131
131
  | --- | --- | --- |
132
+ | 4.24.8 | 보안: 알려진 의존성 취약점 6건 → 0건(zod 4, MCP SDK 하위 의존성), 출시·CI 에 `npm audit` 게이트 · OCR: 숫자로 읽은 줄 머리 고리 글머리, 다음 글자와 맞닿은 「 · PDF: 머리 칸에만 클립을 건 통계표 | `npm audit` 6 → **0** · OCR CER 0.0327 → **0.0314** · 흐린 입력 OCR CER 0.0663 → **0.0638** · PDF 글 순서 99.307% → **99.309%** |
132
133
  | 4.24.7 | 견본 생성: 목차 상자를 요약 상자로 쓰지 않음, 부호 문단 아래 들여 쓴 목록 단계 · HWPML: 묶음·고정폭 빈칸과 강제 줄바꿈 · OCR: 줄 끝 배경 무늬, 머리행에 붙은 숫자 열, 붙임표·줄표 길이 | OCR CER 0.0332 → **0.0327** · 글자 재현율 99.02% → **99.04%** |
133
134
  | 4.24.6 | OCR: 예산 사업명세서의 목·내역 하위 행, 칸마다 갈린 색 머리 띠, 칸 안 위아래 두 줄 뒤집힘 · PDF: 쪽 바깥 넉 자 세로 탭 · 렌더: 쪽 번호 새로 시작 · HWPX: 들여 써 저장한 XML 의 공백 | OCR CER 0.0409 → **0.0332** · OCR 표 구조 24 → **25/67** · 렌더 글 위치 87,509 → **87,620** · PDF 글 순서 99.302% → **99.307%** |
134
135
  | 4.24.5 | PDF: 분수 막대 수식 복원, 고정폭 글줄의 가짜 무괘선 표, 덧찍은 목차 쪽 번호 · OCR: 선 없이 쌓은 하위 행, 색 머리 띠 안 흰 구분선, 글의 밑줄 표지 · HWPX·HWP: 표 아래 캡션 차례 | PDF 글 순서 99.247% → **99.302%** · 별표 수식 7 → **11/11** · OCR 표 구조 21 → **24/67** |
135
136
  | 4.24.4 | 렌더: 넘친 줄 줄이기(빈칸 20%·나머지 글자마다), 칸 안 개체가 키운 칸 높이, KoPub 대체 글꼴로 작성된 문서, 쪽 바닥 행 판정 · PDF: 옆 칸 선이 걸친 칸 변 | 렌더 글 위치 87,289 → **87,509**(새 측정 기준) · 그림 4,017 → **4,019** · PDF 표 구조 98.16% → **98.20%** |
136
- | 4.24.3 | 렌더: 한컴이 쪽에서 갈라 저장한 여러 행 칸, 엇갈린 병합 표 행 높이, 짝·홀 바탕쪽 물려받기, 묶음 안 회전 사진, 그림자 사진 · PDF: 쪽마다 갈린 행의 이어짐 보존 | 렌더 글 위치 86,954 → **87,215** · 그림 3,881 → **4,017** · 별표 PDF 재현율 0.99976 → **0.99982** |
137
- | 4.24.2 | 렌더를 한컴 PDF 와 맞춤: 쪽을 넘어온 떠 있는 표, 칸 안 개체 쌓기, 세로 오프셋 이중 계산, 마지막 행 높이, 줄바꿈 앞 공백, 쪽 번호 | 렌더 글 위치 86,508 → **86,954** / 90,550 · 그림 3,872 → **3,881** / 3,976 |
138
137
 
139
138
  이전 버전과 상세 내용은 [변경 이력](CHANGELOG.md)에 있습니다.
140
139
 
@@ -58,10 +58,10 @@ import {
58
58
  usesGaejosikMunche,
59
59
  usesLogicStructure,
60
60
  validateHwpx
61
- } from "./chunk-DEDUWANG.js";
61
+ } from "./chunk-K2FGQ5D5.js";
62
62
  import {
63
63
  blocksToChunks
64
- } from "./chunk-7ICC55XY.js";
64
+ } from "./chunk-RCDRTQ37.js";
65
65
  import {
66
66
  SPACE_EM_FIXED,
67
67
  SPACE_EM_FONT,
@@ -86,20 +86,20 @@ import {
86
86
  renderSceneToHtml,
87
87
  simulateWrap,
88
88
  simulateWrapKeepWord
89
- } from "./chunk-ZQQGV7K2.js";
90
- import "./chunk-UDUEOBS5.js";
89
+ } from "./chunk-RCT5MO53.js";
90
+ import "./chunk-J7MFKS73.js";
91
91
  import {
92
92
  blocksToPages
93
- } from "./chunk-FQVWYJNM.js";
93
+ } from "./chunk-7JUF6G6Z.js";
94
94
  import "./chunk-VKVDMH7X.js";
95
95
  import "./chunk-VQFA55IC.js";
96
96
  import "./chunk-BYMPPVT3.js";
97
- import "./chunk-BLWDQEBY.js";
97
+ import "./chunk-TDB27K2Z.js";
98
98
  import {
99
99
  blocksToMarkdown,
100
100
  flattenLayoutTables,
101
101
  hasStructuredCellContent
102
- } from "./chunk-MLFPEETP.js";
102
+ } from "./chunk-BJABLQMB.js";
103
103
  import {
104
104
  ValueCursor,
105
105
  applySplices,
@@ -113,11 +113,11 @@ import {
113
113
  isLabelCell,
114
114
  placeSealHwpx,
115
115
  scanSectionXml
116
- } from "./chunk-EIUXBJZP.js";
117
- import "./chunk-OMJPCWKS.js";
116
+ } from "./chunk-FSWJC5RR.js";
117
+ import "./chunk-7XPTKW76.js";
118
118
  import {
119
119
  VERSION
120
- } from "./chunk-E35YPWOX.js";
120
+ } from "./chunk-5MQG3GJI.js";
121
121
  import {
122
122
  DEFAULT_REDACT_RULES,
123
123
  redactMarkdown,
@@ -227,4 +227,4 @@ export {
227
227
  usesLogicStructure,
228
228
  validateHwpx
229
229
  };
230
- //# sourceMappingURL=-GQDQXRQN.js.map
230
+ //# sourceMappingURL=-TLCDUU22.js.map
@@ -2,7 +2,7 @@
2
2
 
3
3
  // src/utils.ts
4
4
  import { format } from "util";
5
- var VERSION = true ? "4.24.7" : "0.0.0-dev";
5
+ var VERSION = true ? "4.24.8" : "0.0.0-dev";
6
6
  function toArrayBuffer(buf) {
7
7
  if (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {
8
8
  return buf.buffer;
@@ -172,4 +172,4 @@ export {
172
172
  classifyError,
173
173
  partExtension
174
174
  };
175
- //# sourceMappingURL=chunk-E35YPWOX.js.map
175
+ //# sourceMappingURL=chunk-5MQG3GJI.js.map