kordoc 4.24.13 → 4.24.15

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 +7 -7
  2. package/dist/{-NBCZTPBD.js → -CCZTES5C.js} +11 -11
  3. package/dist/{chunk-XWWQGSEP.js → chunk-4EVUCAW5.js} +2 -2
  4. package/dist/{chunk-VPKZB6Y7.cjs → chunk-4ZNM7XRW.cjs} +6 -6
  5. package/dist/{chunk-VPKZB6Y7.cjs.map → chunk-4ZNM7XRW.cjs.map} +1 -1
  6. package/dist/{chunk-XGESPSWE.cjs → chunk-6KQWC2KN.cjs} +3 -3
  7. package/dist/{chunk-XGESPSWE.cjs.map → chunk-6KQWC2KN.cjs.map} +1 -1
  8. package/dist/{chunk-QW2H2HHS.js → chunk-6WEHXC2D.js} +315 -6
  9. package/dist/chunk-6WEHXC2D.js.map +1 -0
  10. package/dist/{chunk-PUHBCAXI.js → chunk-7Y4MVNYA.js} +11 -11
  11. package/dist/{chunk-CKOCIQU6.js → chunk-7YCKDE5X.js} +2 -2
  12. package/dist/{chunk-FJ3IKKDV.js → chunk-DULJ7PPP.js} +315 -6
  13. package/dist/chunk-DULJ7PPP.js.map +1 -0
  14. package/dist/{chunk-KTXDK5A6.js → chunk-E5H5WHJH.js} +2 -2
  15. package/dist/{chunk-A232MW5F.js → chunk-EY3PT2X7.js} +2 -2
  16. package/dist/{chunk-W52B6GOE.cjs → chunk-GDE4YE2P.cjs} +3 -3
  17. package/dist/{chunk-W52B6GOE.cjs.map → chunk-GDE4YE2P.cjs.map} +1 -1
  18. package/dist/{chunk-UVQOPGOA.js → chunk-GZ3BY2LV.js} +14 -9
  19. package/dist/chunk-GZ3BY2LV.js.map +1 -0
  20. package/dist/{chunk-ZUMOEVMV.js → chunk-HZFYPOBJ.js} +3 -3
  21. package/dist/{chunk-OVQWOOS3.js → chunk-IGLRJCO6.js} +2 -2
  22. package/dist/{chunk-A4CYMI55.js → chunk-K37LMDT5.js} +2 -2
  23. package/dist/{chunk-X2E5QCKO.js → chunk-KMSLXG5F.js} +2 -2
  24. package/dist/{chunk-DMPX4KLC.js → chunk-KOHEEPQV.js} +2 -2
  25. package/dist/{chunk-37MTSMUF.js → chunk-MTAQVHCB.js} +2 -2
  26. package/dist/{chunk-2H2VYPM2.cjs → chunk-OICA67AT.cjs} +2 -2
  27. package/dist/{chunk-2H2VYPM2.cjs.map → chunk-OICA67AT.cjs.map} +1 -1
  28. package/dist/{chunk-QAGPSWGH.js → chunk-PCHGHLUP.js} +2 -2
  29. package/dist/{chunk-BC4LVU4D.js → chunk-SLHWOJNZ.js} +2 -2
  30. package/dist/{chunk-ZSCDH3NU.js → chunk-T7MDUY5X.js} +2 -2
  31. package/dist/{chunk-QVEAR6IR.js → chunk-UGO3UFXX.js} +48 -7
  32. package/dist/chunk-UGO3UFXX.js.map +1 -0
  33. package/dist/{chunk-WAWREGAC.js → chunk-UV2ZS65C.js} +2 -2
  34. package/dist/{chunk-4I2CKMKU.js → chunk-VNB2IKVA.js} +3 -3
  35. package/dist/{chunk-IQGXY63Y.js → chunk-VSYLST4K.js} +49 -8
  36. package/dist/chunk-VSYLST4K.js.map +1 -0
  37. package/dist/{chunk-QZ2H4ZTO.cjs → chunk-X2XZXDBZ.cjs} +390 -81
  38. package/dist/chunk-X2XZXDBZ.cjs.map +1 -0
  39. package/dist/{chunk-WOVJRXIA.js → chunk-XW7L76FE.js} +2 -2
  40. package/dist/{chunk-BJBPBU5B.js → chunk-Y3VNNGB2.js} +2 -2
  41. package/dist/{chunk-U2VAABMK.cjs → chunk-YAK4U7CC.cjs} +194 -153
  42. package/dist/chunk-YAK4U7CC.cjs.map +1 -0
  43. package/dist/chunks-74SE5QB2.js +10 -0
  44. package/dist/cli.js +30 -30
  45. package/dist/{formula-WFL6JRCR.js → formula-54IFKOYU.js} +3 -3
  46. package/dist/{formula-M4FM364X.js → formula-EW7XLBSA.js} +4 -4
  47. package/dist/{formula-ZKZGV6JV.cjs → formula-Q4MFVPEO.cjs} +9 -9
  48. package/dist/{formula-ZKZGV6JV.cjs.map → formula-Q4MFVPEO.cjs.map} +1 -1
  49. package/dist/{image-ocr-47CBNIS5.js → image-ocr-GWF2XELH.js} +9 -9
  50. package/dist/{image-ocr-YJISJPKE.js → image-ocr-I7UGQZF5.js} +6 -6
  51. package/dist/{image-ocr-2V3M3ZEA.cjs → image-ocr-OGJ6A3ML.cjs} +17 -17
  52. package/dist/{image-ocr-2V3M3ZEA.cjs.map → image-ocr-OGJ6A3ML.cjs.map} +1 -1
  53. package/dist/index.cjs +368 -363
  54. package/dist/index.cjs.map +1 -1
  55. package/dist/index.js +14 -9
  56. package/dist/index.js.map +1 -1
  57. package/dist/mcp.js +23 -23
  58. package/dist/{model-bundle-7W344HDI.js → model-bundle-43YHGZCC.js} +5 -5
  59. package/dist/{models-TBHMNI7M.js → models-O3NS6OPX.js} +5 -5
  60. package/dist/{parse-worker-v2-JUYUEXCY.js → parse-worker-v2-OXW3CQOW.js} +12 -12
  61. package/dist/{parser-RNJ4KSDF.js → parser-B3RVTCOY.js} +9 -9
  62. package/dist/{parser-R44KTBZX.cjs → parser-FMVOWRG4.cjs} +159 -159
  63. package/dist/{parser-R44KTBZX.cjs.map → parser-FMVOWRG4.cjs.map} +1 -1
  64. package/dist/{parser-EKQCZLML.js → parser-H6OY6UWW.js} +12 -12
  65. package/dist/pdf-ocr-5Z6GDYBQ.cjs +35 -0
  66. package/dist/{pdf-ocr-74BOCXAT.cjs.map → pdf-ocr-5Z6GDYBQ.cjs.map} +1 -1
  67. package/dist/{pdf-ocr-ZAF4P74R.js → pdf-ocr-NE6Y4I6O.js} +6 -6
  68. package/dist/{pdf-ocr-EE5KGFVX.js → pdf-ocr-QHW74LO6.js} +9 -9
  69. package/dist/{profile-io-RU3RVIYV.js → profile-io-2IOYOBGP.js} +3 -3
  70. package/dist/{rasterize-UNCPM26D.js → rasterize-ZLPDGEZY.js} +3 -3
  71. package/dist/{redact-doc-BFE4UZCY.js → redact-doc-CDFM5S7S.js} +11 -11
  72. package/dist/{render-3DXTLKIA.js → render-VXAEYSJA.js} +7 -7
  73. package/dist/seal-YSBFBEXC.js +10 -0
  74. package/dist/{setup-7POQAKDG.js → setup-CBWVQJID.js} +3 -3
  75. package/dist/visual-MJVIFZHH.js +21 -0
  76. package/dist/{watch-37YCXJWW.js → watch-2SA3CTRT.js} +12 -12
  77. package/package.json +1 -1
  78. package/dist/chunk-FJ3IKKDV.js.map +0 -1
  79. package/dist/chunk-IQGXY63Y.js.map +0 -1
  80. package/dist/chunk-QVEAR6IR.js.map +0 -1
  81. package/dist/chunk-QW2H2HHS.js.map +0 -1
  82. package/dist/chunk-QZ2H4ZTO.cjs.map +0 -1
  83. package/dist/chunk-U2VAABMK.cjs.map +0 -1
  84. package/dist/chunk-UVQOPGOA.js.map +0 -1
  85. package/dist/chunks-IXFBIZPW.js +0 -10
  86. package/dist/pdf-ocr-74BOCXAT.cjs +0 -35
  87. package/dist/seal-3LBTETDG.js +0 -10
  88. package/dist/visual-7SVIGIJC.js +0 -21
  89. /package/dist/{-NBCZTPBD.js.map → -CCZTES5C.js.map} +0 -0
  90. /package/dist/{chunk-XWWQGSEP.js.map → chunk-4EVUCAW5.js.map} +0 -0
  91. /package/dist/{chunk-PUHBCAXI.js.map → chunk-7Y4MVNYA.js.map} +0 -0
  92. /package/dist/{chunk-CKOCIQU6.js.map → chunk-7YCKDE5X.js.map} +0 -0
  93. /package/dist/{chunk-KTXDK5A6.js.map → chunk-E5H5WHJH.js.map} +0 -0
  94. /package/dist/{chunk-A232MW5F.js.map → chunk-EY3PT2X7.js.map} +0 -0
  95. /package/dist/{chunk-ZUMOEVMV.js.map → chunk-HZFYPOBJ.js.map} +0 -0
  96. /package/dist/{chunk-OVQWOOS3.js.map → chunk-IGLRJCO6.js.map} +0 -0
  97. /package/dist/{chunk-A4CYMI55.js.map → chunk-K37LMDT5.js.map} +0 -0
  98. /package/dist/{chunk-X2E5QCKO.js.map → chunk-KMSLXG5F.js.map} +0 -0
  99. /package/dist/{chunk-DMPX4KLC.js.map → chunk-KOHEEPQV.js.map} +0 -0
  100. /package/dist/{chunk-37MTSMUF.js.map → chunk-MTAQVHCB.js.map} +0 -0
  101. /package/dist/{chunk-QAGPSWGH.js.map → chunk-PCHGHLUP.js.map} +0 -0
  102. /package/dist/{chunk-BC4LVU4D.js.map → chunk-SLHWOJNZ.js.map} +0 -0
  103. /package/dist/{chunk-ZSCDH3NU.js.map → chunk-T7MDUY5X.js.map} +0 -0
  104. /package/dist/{chunk-WAWREGAC.js.map → chunk-UV2ZS65C.js.map} +0 -0
  105. /package/dist/{chunk-4I2CKMKU.js.map → chunk-VNB2IKVA.js.map} +0 -0
  106. /package/dist/{chunk-WOVJRXIA.js.map → chunk-XW7L76FE.js.map} +0 -0
  107. /package/dist/{chunk-BJBPBU5B.js.map → chunk-Y3VNNGB2.js.map} +0 -0
  108. /package/dist/{chunks-IXFBIZPW.js.map → chunks-74SE5QB2.js.map} +0 -0
  109. /package/dist/{formula-WFL6JRCR.js.map → formula-54IFKOYU.js.map} +0 -0
  110. /package/dist/{formula-M4FM364X.js.map → formula-EW7XLBSA.js.map} +0 -0
  111. /package/dist/{image-ocr-47CBNIS5.js.map → image-ocr-GWF2XELH.js.map} +0 -0
  112. /package/dist/{image-ocr-YJISJPKE.js.map → image-ocr-I7UGQZF5.js.map} +0 -0
  113. /package/dist/{model-bundle-7W344HDI.js.map → model-bundle-43YHGZCC.js.map} +0 -0
  114. /package/dist/{models-TBHMNI7M.js.map → models-O3NS6OPX.js.map} +0 -0
  115. /package/dist/{parse-worker-v2-JUYUEXCY.js.map → parse-worker-v2-OXW3CQOW.js.map} +0 -0
  116. /package/dist/{parser-RNJ4KSDF.js.map → parser-B3RVTCOY.js.map} +0 -0
  117. /package/dist/{parser-EKQCZLML.js.map → parser-H6OY6UWW.js.map} +0 -0
  118. /package/dist/{pdf-ocr-EE5KGFVX.js.map → pdf-ocr-NE6Y4I6O.js.map} +0 -0
  119. /package/dist/{pdf-ocr-ZAF4P74R.js.map → pdf-ocr-QHW74LO6.js.map} +0 -0
  120. /package/dist/{profile-io-RU3RVIYV.js.map → profile-io-2IOYOBGP.js.map} +0 -0
  121. /package/dist/{rasterize-UNCPM26D.js.map → rasterize-ZLPDGEZY.js.map} +0 -0
  122. /package/dist/{redact-doc-BFE4UZCY.js.map → redact-doc-CDFM5S7S.js.map} +0 -0
  123. /package/dist/{render-3DXTLKIA.js.map → render-VXAEYSJA.js.map} +0 -0
  124. /package/dist/{seal-3LBTETDG.js.map → seal-YSBFBEXC.js.map} +0 -0
  125. /package/dist/{setup-7POQAKDG.js.map → setup-CBWVQJID.js.map} +0 -0
  126. /package/dist/{visual-7SVIGIJC.js.map → visual-MJVIFZHH.js.map} +0 -0
  127. /package/dist/{watch-37YCXJWW.js.map → watch-2SA3CTRT.js.map} +0 -0
@@ -2,7 +2,7 @@
2
2
 
3
3
  // src/utils.ts
4
4
  import { format } from "util";
5
- var VERSION = true ? "4.24.13" : "0.0.0-dev";
5
+ var VERSION = true ? "4.24.15" : "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-WAWREGAC.js.map
175
+ //# sourceMappingURL=chunk-UV2ZS65C.js.map
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  parse
4
- } from "./chunk-PUHBCAXI.js";
4
+ } from "./chunk-7Y4MVNYA.js";
5
5
  import {
6
6
  classifyError,
7
7
  sanitizeError,
8
8
  toArrayBuffer
9
- } from "./chunk-WAWREGAC.js";
9
+ } from "./chunk-UV2ZS65C.js";
10
10
 
11
11
  // src/cli/worker-parse.ts
12
12
  import { readFileSync, statSync } from "fs";
@@ -26,4 +26,4 @@ async function parseWorkerFile(absPath, options) {
26
26
  export {
27
27
  parseWorkerFile
28
28
  };
29
- //# sourceMappingURL=chunk-4I2CKMKU.js.map
29
+ //# sourceMappingURL=chunk-VNB2IKVA.js.map
@@ -5,15 +5,15 @@ import {
5
5
  HEADING_RATIO_H3,
6
6
  tidyScriptTags,
7
7
  toTex
8
- } from "./chunk-BJBPBU5B.js";
8
+ } from "./chunk-Y3VNNGB2.js";
9
9
  import {
10
10
  ensureModelsIn,
11
11
  getModelsDir
12
- } from "./chunk-QAGPSWGH.js";
12
+ } from "./chunk-PCHGHLUP.js";
13
13
  import {
14
14
  safeMax,
15
15
  safeMin
16
- } from "./chunk-OVQWOOS3.js";
16
+ } from "./chunk-IGLRJCO6.js";
17
17
 
18
18
  // src/ocr/models.ts
19
19
  import { join } from "path";
@@ -696,8 +696,8 @@ function gapGlyphs(gray, w, h, ink) {
696
696
  }
697
697
  return k ? sx / k / cw : 0.5;
698
698
  };
699
- if (c.y0 <= bandT + bh * 0.15 && top >= 0.7 && bottom <= 0.5 && stem(c.y0 + band, c.y1) <= 0.35) return "\u300C";
700
- if (c.y1 >= bandB - bh * 0.15 && bottom >= 0.7 && top <= 0.5 && stem(c.y0, c.y1 - band) >= 0.65) return "\u300D";
699
+ if (c.y0 <= bandT + bh * 0.2 && top >= 0.7 && bottom <= 0.5 && stem(c.y0 + band, c.y1) <= 0.35) return "\u300C";
700
+ if (c.y1 >= bandB - bh * 0.2 && bottom >= 0.7 && top <= 0.5 && stem(c.y0, c.y1 - band) >= 0.65) return "\u300D";
701
701
  return null;
702
702
  };
703
703
  if (flushDot) mark = ".";
@@ -972,12 +972,30 @@ function leadingBullet(gray, w, h, ink, firstX, squareMax = 0.92) {
972
972
  const boxed = cl.length === 1 && midRuns === 2 && edgeFull(y0, 1) && edgeFull(y1 - 1, -1) && thin(run(x0, my0, 1, 0), run(x1 - 1, my0, -1, 0));
973
973
  const top = run(mx0, y0, 0, 1), bottom = run(mx0, y1 - 1, 0, -1);
974
974
  const shadow = !boxed ? null : thin(bottom, top) ? "\u2750" : thin(top, bottom) ? "\u274F" : null;
975
+ const diamond = (() => {
976
+ if (rel < 0.5 || rel > 1) return false;
977
+ const half = ch / 2, cyc = y0 + half;
978
+ let ok = 0;
979
+ for (let y = y0; y < y1; y++) {
980
+ let l = -1, r = -1;
981
+ for (let x = x0; x < x1; x++) if (cl.some((c) => label[y * w + x] === c.id)) {
982
+ if (l < 0) l = x;
983
+ r = x;
984
+ }
985
+ const want = cw * (1 - Math.abs(y + 0.5 - cyc) / half);
986
+ if (l >= 0 && Math.abs(r - l + 1 - want) <= Math.max(2, cw * 0.15)) ok++;
987
+ }
988
+ return ok >= ch * 0.85;
989
+ })();
975
990
  let mark = null;
991
+ if (diamond) mark = cl.length >= 2 && core ? "\u25C8" : cl.length === 1 && fill >= 0.4 ? "\u25C6" : cl.length === 1 ? "\u25C7" : null;
992
+ if (mark) return { mark, covers: firstX <= x1 + ch * 0.3 };
976
993
  if (shadow && rel >= 0.6 && rel <= 0.92) mark = shadow;
977
994
  else if (hollowSquare && rel >= 0.6 && rel <= squareMax) mark = "\u25A1";
978
995
  else if (filledSquare && rel >= 0.6 && rel <= 0.92) mark = "\u25A3";
979
996
  else if (nested && fill < 0.45 && rel >= 0.6) mark = "\u25CE";
980
997
  else if (cl.length === 1 && fill >= 0.9 && rel >= 0.28 && rel <= 0.6) mark = "\u25AA";
998
+ else if (cl.length === 1 && fill >= 0.9 && rel > 0.6 && rel <= 1) mark = "\u25A0";
981
999
  else if (cl.length === 1 && fill >= 0.65 && fill <= 0.88 && rel >= 0.5 && rel <= 0.8) mark = "\u25CF";
982
1000
  if (!mark) return null;
983
1001
  return { mark, covers: firstX <= x1 + ch * 0.3 };
@@ -3298,6 +3316,17 @@ var WrapLexicon = class {
3298
3316
  heads = /* @__PURE__ */ new Set();
3299
3317
  /** 줄 안 이웃 어절의 앞 어절 한글 꼬리 + 뒤 어절 첫 음절("지식재산 보") — 어절 머리 증거의 거부권 */
3300
3318
  spacedHeads = /* @__PURE__ */ new Set();
3319
+ /** 쪽 줄 흐름에서 넓은 줄 사이 기준선 간격(글자 크기별) — 줄 둘뿐인 묶음은 묶음 안에 견줄 간격이 없어 넓은 줄 간격 본문을 문단 경계로 봤다 */
3320
+ pitches = [];
3321
+ /** 줄 흐름의 이웃한 넓은 두 줄(같은 글자 크기) 사이 간격 하나를 더한다 */
3322
+ addPitch(fontSize, pitch) {
3323
+ if (fontSize > 0 && pitch > 0 && pitch < 4 * fontSize) this.pitches.push({ fs: fontSize, pitch });
3324
+ }
3325
+ /** 이 글자 크기(±15%) 본문의 줄 간격 — 표본 넷 이상의 중앙값, 없으면 undefined */
3326
+ bodyPitch(fontSize) {
3327
+ const ps = this.pitches.filter((p) => Math.abs(p.fs - fontSize) <= 0.15 * fontSize).map((p) => p.pitch).sort((a, b) => a - b);
3328
+ return ps.length >= 4 ? ps[ps.length >> 1] : void 0;
3329
+ }
3301
3330
  /** 줄 글 한 줄을 증거로 더한다 — 탭(큰 갭)으로 나뉜 조각은 다른 칸·단이라 조각 사이는 어절 경계 증거로 쓰지 않는다 */
3302
3331
  addLine(text) {
3303
3332
  for (const seg of text.replace(MARKUP, "").split(" ")) {
@@ -3558,7 +3587,8 @@ function bodyLineJoins(lines, lex) {
3558
3587
  for (let i = 0; i + 1 < lines.length; i++) {
3559
3588
  const a = lines[i], b = lines[i + 1];
3560
3589
  const fs = a.fontSize;
3561
- const others = i === i1 ? p2 : p1;
3590
+ const own = i === i1 ? p2 : p1;
3591
+ const others = Number.isFinite(own) ? own : lex?.bodyPitch(fs) ?? Infinity;
3562
3592
  const maxPitch = Number.isFinite(others) ? Math.min(BODY_MAX_PITCH_ABS_EM * fs, Math.max(BODY_MAX_PITCH_EM * fs, others * BODY_PITCH_REL)) : BODY_MAX_PITCH_EM * fs;
3563
3593
  const wordWrap = ragged && !full(a) && nextWordNoRoom(a, b) && !MULTI_LEVEL_NUMBER.test(b.text.trimStart());
3564
3594
  const wraps = fs > 0 && (full(a) || wordWrap) && a.right - a.left >= BODY_MIN_WIDTH_EM * fs && a.y - b.y > 0 && a.y - b.y < maxPitch && Math.abs(b.fontSize - fs) <= 0.15 * fs && !startsNewItem(a.text, b.text);
@@ -9357,7 +9387,18 @@ function extractPageBlocksWithLines(items, pageNum, opList, pageWidth, pageHeigh
9357
9387
  return attachSideTabBlocks(tab, body, pageNum);
9358
9388
  }
9359
9389
  const lex = lexicon ?? new WrapLexicon();
9360
- for (const line of streamLines(items)) lex.addLine(mergeLineSimple(line));
9390
+ {
9391
+ let prev = null;
9392
+ for (const line of streamLines(items)) {
9393
+ lex.addLine(mergeLineSimple(line));
9394
+ const fs = dominantStyle(line)?.fontSize ?? 0;
9395
+ const left = Math.min(...line.map((i) => i.x)), right = Math.max(...line.map((i) => i.x + i.w));
9396
+ const y = line.reduce((n, i) => n + i.y, 0) / line.length;
9397
+ const wide = fs > 0 && right - left >= 12 * fs;
9398
+ if (wide && prev && Math.abs(prev.fs - fs) <= 0.15 * fs) lex.addPitch(fs, prev.y - y);
9399
+ prev = wide ? { y, fs } : null;
9400
+ }
9401
+ }
9361
9402
  const extracted = extractLines(opList.fnArray, opList.argsArray);
9362
9403
  let { horizontals, verticals } = extracted;
9363
9404
  const rawRules = extracted.horizontals.concat(extracted.shortH);
@@ -10417,4 +10458,4 @@ export {
10417
10458
  UNRULED_REGION_TABLES,
10418
10459
  mergeOcrImageRegions
10419
10460
  };
10420
- //# sourceMappingURL=chunk-IQGXY63Y.js.map
10461
+ //# sourceMappingURL=chunk-VSYLST4K.js.map