kordoc 4.21.21 → 4.21.23

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 +6 -4
  2. package/dist/{-ZYF6HX4M.js → -FLEBKE6V.js} +25 -25
  3. package/dist/{chunk-QHNVH4TC.js → chunk-2S37CQUJ.js} +21 -21
  4. package/dist/{chunk-YM3K3LCD.js → chunk-4F6OVO2A.js} +122 -46
  5. package/dist/chunk-4F6OVO2A.js.map +1 -0
  6. package/dist/{chunk-ZZIQWSGC.js → chunk-75J4Y5ZQ.js} +2 -2
  7. package/dist/{chunk-7YAJCXCD.js → chunk-7MTKOSAF.js} +2 -2
  8. package/dist/{chunk-KBV4WFZ6.js → chunk-C3RR6Z3M.js} +4 -4
  9. package/dist/{chunk-KBV4WFZ6.js.map → chunk-C3RR6Z3M.js.map} +1 -1
  10. package/dist/{chunk-TRO4CQHJ.js → chunk-CA742RMF.js} +4 -4
  11. package/dist/{chunk-CY4QM2KQ.js → chunk-DACTHSPR.js} +2 -2
  12. package/dist/{chunk-DTZIZ5PP.cjs → chunk-EGYLKSA4.cjs} +13 -13
  13. package/dist/{chunk-DTZIZ5PP.cjs.map → chunk-EGYLKSA4.cjs.map} +1 -1
  14. package/dist/{chunk-T7PN5D4D.cjs → chunk-EVPP2BSO.cjs} +6 -6
  15. package/dist/{chunk-T7PN5D4D.cjs.map → chunk-EVPP2BSO.cjs.map} +1 -1
  16. package/dist/{chunk-TMUUDMDH.cjs → chunk-GELBKBGQ.cjs} +23 -23
  17. package/dist/{chunk-TMUUDMDH.cjs.map → chunk-GELBKBGQ.cjs.map} +1 -1
  18. package/dist/{chunk-FBJVDBMO.js → chunk-GNIOEZDG.js} +2 -2
  19. package/dist/{chunk-RBRHO7WL.js → chunk-GPIMKPEI.js} +2 -2
  20. package/dist/{chunk-MCUX2Y2C.cjs → chunk-GUU7OHIH.cjs} +2 -2
  21. package/dist/{chunk-MCUX2Y2C.cjs.map → chunk-GUU7OHIH.cjs.map} +1 -1
  22. package/dist/{chunk-5HTFWUJE.js → chunk-J25WF6DP.js} +2 -2
  23. package/dist/{chunk-HWIW3WK2.js → chunk-JA4ZWCYL.js} +3 -3
  24. package/dist/{chunk-2ZGP7A5T.js → chunk-JLG7KK4M.js} +2 -2
  25. package/dist/{chunk-3TCF5HPP.js → chunk-JUA7IACQ.js} +2 -2
  26. package/dist/{chunk-YQZOPT3A.js → chunk-L4NFUEWJ.js} +5 -5
  27. package/dist/{chunk-YQZOPT3A.js.map → chunk-L4NFUEWJ.js.map} +1 -1
  28. package/dist/{chunk-T3DTTK23.js → chunk-QRIGJUOQ.js} +26 -25
  29. package/dist/chunk-QRIGJUOQ.js.map +1 -0
  30. package/dist/{chunk-J5PBI3ZC.js → chunk-RDV2RHVH.js} +3 -3
  31. package/dist/{chunk-YHPJTLCA.js → chunk-RKWJMA2B.js} +2 -2
  32. package/dist/{chunk-FZMGF6XU.js → chunk-TAU45SJK.js} +2 -2
  33. package/dist/{chunk-BG6LUCQL.js → chunk-U6D7LUCR.js} +2 -2
  34. package/dist/{chunk-BC54LBST.js → chunk-UKLNKY7Q.js} +3 -3
  35. package/dist/{chunk-H2MS4VG3.cjs → chunk-VA43X5N4.cjs} +3 -3
  36. package/dist/{chunk-H2MS4VG3.cjs.map → chunk-VA43X5N4.cjs.map} +1 -1
  37. package/dist/{chunk-7FCNOKOR.js → chunk-VKVDMH7X.js} +2 -1
  38. package/dist/{chunk-KTLHADU4.js → chunk-XEUBMLAS.js} +2 -2
  39. package/dist/{chunk-57VNFMMS.cjs → chunk-Y7XHHV55.cjs} +28 -27
  40. package/dist/chunk-Y7XHHV55.cjs.map +1 -0
  41. package/dist/{chunk-PTF4NCFM.js → chunk-YA6UGARL.js} +2 -2
  42. package/dist/{chunk-WGMYVRSA.js → chunk-ZE77KLKN.js} +2 -2
  43. package/dist/chunks-PR2GRNLX.js +10 -0
  44. package/dist/cli.js +34 -34
  45. package/dist/{formula-P7M7IH2L.js → formula-2MTBKZKO.js} +4 -4
  46. package/dist/{formula-A3I5VAP7.cjs → formula-CY2HF27M.cjs} +9 -9
  47. package/dist/{formula-A3I5VAP7.cjs.map → formula-CY2HF27M.cjs.map} +1 -1
  48. package/dist/{formula-6XNIXZ5L.js → formula-LGLSIYDI.js} +3 -3
  49. package/dist/{image-ocr-ITNY454I.js → image-ocr-BKRQVMW6.js} +9 -9
  50. package/dist/{image-ocr-UJRSQ2T3.cjs → image-ocr-HJM5IJKU.cjs} +15 -15
  51. package/dist/{image-ocr-UJRSQ2T3.cjs.map → image-ocr-HJM5IJKU.cjs.map} +1 -1
  52. package/dist/{image-ocr-3C6W3KZO.js → image-ocr-HP65O2CC.js} +6 -6
  53. package/dist/index.cjs +653 -577
  54. package/dist/index.cjs.map +1 -1
  55. package/dist/index.js +83 -7
  56. package/dist/index.js.map +1 -1
  57. package/dist/mcp.js +28 -28
  58. package/dist/{model-bundle-LAWQH75O.js → model-bundle-M7YMF4L4.js} +5 -5
  59. package/dist/{models-6QTD2CFM.js → models-AMPRHBYB.js} +5 -5
  60. package/dist/{parse-worker-v2-FEPJG3ER.js → parse-worker-v2-NMYEMVYX.js} +14 -14
  61. package/dist/{parser-VKWUMUML.cjs → parser-J6M4WG3I.cjs} +136 -136
  62. package/dist/{parser-VKWUMUML.cjs.map → parser-J6M4WG3I.cjs.map} +1 -1
  63. package/dist/{parser-56I364YM.js → parser-LX5MOE6Q.js} +8 -8
  64. package/dist/{parser-KFCY3NIN.js → parser-M45SFXWF.js} +22 -22
  65. package/dist/pdf-ocr-4YVV5PT4.cjs +19 -0
  66. package/dist/{pdf-ocr-OKAHNEJA.cjs.map → pdf-ocr-4YVV5PT4.cjs.map} +1 -1
  67. package/dist/pdf-ocr-D73YYQJ5.js +18 -0
  68. package/dist/pdf-ocr-SLWZO4D2.js +22 -0
  69. package/dist/{profile-io-OCITHUQF.js → profile-io-CUMSC3TD.js} +3 -3
  70. package/dist/{rasterize-SFCG4YOI.js → rasterize-W6NY4ADH.js} +3 -3
  71. package/dist/{redact-doc-5SMPXIGG.js → redact-doc-7HVCZT3C.js} +25 -25
  72. package/dist/{render-FGPG5A2N.js → render-FPMJX4CU.js} +9 -9
  73. package/dist/seal-YTRVR373.js +10 -0
  74. package/dist/{setup-JQVYZO7I.js → setup-UKIYOUT6.js} +3 -3
  75. package/dist/visual-DG5EVBZD.js +20 -0
  76. package/dist/{watch-C77BUSP7.js → watch-YHKMAVJ6.js} +16 -16
  77. package/package.json +1 -1
  78. package/dist/chunk-57VNFMMS.cjs.map +0 -1
  79. package/dist/chunk-T3DTTK23.js.map +0 -1
  80. package/dist/chunk-YM3K3LCD.js.map +0 -1
  81. package/dist/chunks-MDMJRCJ7.js +0 -10
  82. package/dist/pdf-ocr-MME37BL4.js +0 -18
  83. package/dist/pdf-ocr-OKAHNEJA.cjs +0 -19
  84. package/dist/pdf-ocr-ZZ6AJL6Z.js +0 -22
  85. package/dist/seal-GA7NZDTG.js +0 -10
  86. package/dist/visual-YMG644YW.js +0 -20
  87. /package/dist/{-ZYF6HX4M.js.map → -FLEBKE6V.js.map} +0 -0
  88. /package/dist/{chunk-QHNVH4TC.js.map → chunk-2S37CQUJ.js.map} +0 -0
  89. /package/dist/{chunk-ZZIQWSGC.js.map → chunk-75J4Y5ZQ.js.map} +0 -0
  90. /package/dist/{chunk-7YAJCXCD.js.map → chunk-7MTKOSAF.js.map} +0 -0
  91. /package/dist/{chunk-TRO4CQHJ.js.map → chunk-CA742RMF.js.map} +0 -0
  92. /package/dist/{chunk-CY4QM2KQ.js.map → chunk-DACTHSPR.js.map} +0 -0
  93. /package/dist/{chunk-FBJVDBMO.js.map → chunk-GNIOEZDG.js.map} +0 -0
  94. /package/dist/{chunk-RBRHO7WL.js.map → chunk-GPIMKPEI.js.map} +0 -0
  95. /package/dist/{chunk-5HTFWUJE.js.map → chunk-J25WF6DP.js.map} +0 -0
  96. /package/dist/{chunk-HWIW3WK2.js.map → chunk-JA4ZWCYL.js.map} +0 -0
  97. /package/dist/{chunk-2ZGP7A5T.js.map → chunk-JLG7KK4M.js.map} +0 -0
  98. /package/dist/{chunk-3TCF5HPP.js.map → chunk-JUA7IACQ.js.map} +0 -0
  99. /package/dist/{chunk-J5PBI3ZC.js.map → chunk-RDV2RHVH.js.map} +0 -0
  100. /package/dist/{chunk-YHPJTLCA.js.map → chunk-RKWJMA2B.js.map} +0 -0
  101. /package/dist/{chunk-FZMGF6XU.js.map → chunk-TAU45SJK.js.map} +0 -0
  102. /package/dist/{chunk-BG6LUCQL.js.map → chunk-U6D7LUCR.js.map} +0 -0
  103. /package/dist/{chunk-BC54LBST.js.map → chunk-UKLNKY7Q.js.map} +0 -0
  104. /package/dist/{chunk-7FCNOKOR.js.map → chunk-VKVDMH7X.js.map} +0 -0
  105. /package/dist/{chunk-KTLHADU4.js.map → chunk-XEUBMLAS.js.map} +0 -0
  106. /package/dist/{chunk-PTF4NCFM.js.map → chunk-YA6UGARL.js.map} +0 -0
  107. /package/dist/{chunk-WGMYVRSA.js.map → chunk-ZE77KLKN.js.map} +0 -0
  108. /package/dist/{chunks-MDMJRCJ7.js.map → chunks-PR2GRNLX.js.map} +0 -0
  109. /package/dist/{formula-P7M7IH2L.js.map → formula-2MTBKZKO.js.map} +0 -0
  110. /package/dist/{formula-6XNIXZ5L.js.map → formula-LGLSIYDI.js.map} +0 -0
  111. /package/dist/{image-ocr-ITNY454I.js.map → image-ocr-BKRQVMW6.js.map} +0 -0
  112. /package/dist/{image-ocr-3C6W3KZO.js.map → image-ocr-HP65O2CC.js.map} +0 -0
  113. /package/dist/{model-bundle-LAWQH75O.js.map → model-bundle-M7YMF4L4.js.map} +0 -0
  114. /package/dist/{models-6QTD2CFM.js.map → models-AMPRHBYB.js.map} +0 -0
  115. /package/dist/{parse-worker-v2-FEPJG3ER.js.map → parse-worker-v2-NMYEMVYX.js.map} +0 -0
  116. /package/dist/{parser-56I364YM.js.map → parser-LX5MOE6Q.js.map} +0 -0
  117. /package/dist/{parser-KFCY3NIN.js.map → parser-M45SFXWF.js.map} +0 -0
  118. /package/dist/{pdf-ocr-MME37BL4.js.map → pdf-ocr-D73YYQJ5.js.map} +0 -0
  119. /package/dist/{pdf-ocr-ZZ6AJL6Z.js.map → pdf-ocr-SLWZO4D2.js.map} +0 -0
  120. /package/dist/{profile-io-OCITHUQF.js.map → profile-io-CUMSC3TD.js.map} +0 -0
  121. /package/dist/{rasterize-SFCG4YOI.js.map → rasterize-W6NY4ADH.js.map} +0 -0
  122. /package/dist/{redact-doc-5SMPXIGG.js.map → redact-doc-7HVCZT3C.js.map} +0 -0
  123. /package/dist/{render-FGPG5A2N.js.map → render-FPMJX4CU.js.map} +0 -0
  124. /package/dist/{seal-GA7NZDTG.js.map → seal-YTRVR373.js.map} +0 -0
  125. /package/dist/{setup-JQVYZO7I.js.map → setup-UKIYOUT6.js.map} +0 -0
  126. /package/dist/{visual-YMG644YW.js.map → visual-DG5EVBZD.js.map} +0 -0
  127. /package/dist/{watch-C77BUSP7.js.map → watch-YHKMAVJ6.js.map} +0 -0
package/dist/index.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import {
2
2
  blocksToPages,
3
+ bmpToPng,
3
4
  inlineImagesIntoMarkdown
4
- } from "./chunk-T3DTTK23.js";
5
+ } from "./chunk-QRIGJUOQ.js";
5
6
  import {
6
7
  parsePageRange
7
8
  } from "./chunk-V4BH5SRQ.js";
@@ -32,7 +33,7 @@ import {
32
33
  tidyScriptTags,
33
34
  unframeLayoutTables,
34
35
  wrapScript
35
- } from "./chunk-KTLHADU4.js";
36
+ } from "./chunk-XEUBMLAS.js";
36
37
  import {
37
38
  KordocError,
38
39
  OPTIONAL_DEP_INSTALL_HINT,
@@ -50,7 +51,7 @@ import {
50
51
  toArrayBuffer,
51
52
  unescapeHtml,
52
53
  unzipLimitBytes
53
- } from "./chunk-ZZIQWSGC.js";
54
+ } from "./chunk-75J4Y5ZQ.js";
54
55
 
55
56
  // src/plain-markdown.ts
56
57
  function toPlainMarkdown(md2) {
@@ -24450,6 +24451,66 @@ function collectAllTables(scan) {
24450
24451
  return out;
24451
24452
  }
24452
24453
 
24454
+ // src/ocr/embedded-image-ocr.ts
24455
+ var MIN_SIDE = 24;
24456
+ async function ocrEmbeddedImages(blocks, options, warnings) {
24457
+ const ocr = options?.ocr;
24458
+ if (ocr !== true && ocr !== "force" && typeof ocr !== "function") return false;
24459
+ const { parseImageDocument } = await import("./image-ocr-HP65O2CC.js");
24460
+ let inserted = false, unreadable = 0;
24461
+ let failed = null;
24462
+ const walk = async (list, depth) => {
24463
+ if (depth > 64) return;
24464
+ for (let i = 0; i < list.length; i++) {
24465
+ const b = list[i];
24466
+ if (b.children) await walk(b.children, depth + 1);
24467
+ if (b.table) {
24468
+ for (const row of b.table.cells) for (const cell2 of row) if (cell2.blocks) await walk(cell2.blocks, depth + 1);
24469
+ }
24470
+ if (b.type !== "image" || !b.imageData || failed) continue;
24471
+ const bytes = ocrBytes(b.imageData);
24472
+ if (!bytes) {
24473
+ unreadable++;
24474
+ continue;
24475
+ }
24476
+ if (await tooSmall(bytes)) continue;
24477
+ let found;
24478
+ try {
24479
+ const buf = bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
24480
+ found = (await parseImageDocument(buf, options)).blocks;
24481
+ } catch (err) {
24482
+ failed = err instanceof Error ? err.message : String(err);
24483
+ continue;
24484
+ }
24485
+ if (!found.length) continue;
24486
+ const placed = found.map((f) => ({ ...f, pageNumber: b.pageNumber, bbox: void 0 }));
24487
+ list.splice(i + 1, 0, ...placed);
24488
+ i += placed.length;
24489
+ inserted = true;
24490
+ }
24491
+ };
24492
+ await walk(blocks, 0);
24493
+ if (unreadable) warnings.push({ code: "SKIPPED_IMAGE", message: `${unreadable}\uAC1C \uADF8\uB9BC\uC740 OCR \uB85C \uC77D\uC744 \uC218 \uC5C6\uB294 \uD615\uC2DD(WMF\xB7EMF \uB4F1)\uC774\uB77C \uAC74\uB108\uB700` });
24494
+ if (failed) warnings.push({ code: "OCR_FAILED", message: `\uC0BD\uC785 \uADF8\uB9BC OCR \uC2E4\uD328 \u2014 \uADF8\uB9BC \uC18D \uAE00 \uC5C6\uC774 \uACC4\uC18D: ${failed}` });
24495
+ return inserted;
24496
+ }
24497
+ function ocrBytes(img) {
24498
+ const mime = img.mimeType.toLowerCase();
24499
+ if (mime.includes("wmf") || mime.includes("emf")) return null;
24500
+ if (mime.includes("bmp")) return bmpToPng(img.data);
24501
+ return img.data;
24502
+ }
24503
+ async function tooSmall(bytes) {
24504
+ try {
24505
+ const mod = await import("sharp");
24506
+ const sharp = typeof mod === "function" ? mod : mod.default;
24507
+ const { width, height } = await sharp(Buffer.from(bytes)).metadata();
24508
+ return !!width && !!height && (width < MIN_SIDE || height < MIN_SIDE);
24509
+ } catch {
24510
+ return false;
24511
+ }
24512
+ }
24513
+
24453
24514
  // src/table/classifier.ts
24454
24515
  var DIAGRAM_KEYWORDS = /조직도|비상\s*연락망|연락망|체계도|업무\s*체계도|기구표|배치도|흐름도|추진\s*체계/u;
24455
24516
  var KEYWORD_GATE = 0.3;
@@ -42683,12 +42744,24 @@ async function dispatch(format2, buffer, opts) {
42683
42744
  return { success: false, fileType: "unknown", error: "\uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uD30C\uC77C \uD615\uC2DD\uC785\uB2C8\uB2E4.", code: "UNSUPPORTED_FORMAT" };
42684
42745
  }
42685
42746
  }
42747
+ async function withEmbeddedImageOcr(blocks, markdown, warnings, images, options) {
42748
+ const list = [...warnings ?? []];
42749
+ if (!await ocrEmbeddedImages(blocks, options, list)) return { markdown, warnings: list.length ? list : void 0 };
42750
+ let md2 = blocksToMarkdown(blocks, { tableFormat: options?.tableFormat });
42751
+ if (options?.inlineImages && options.images !== false && images?.length) {
42752
+ try {
42753
+ md2 = inlineImagesIntoMarkdown(md2, images, { compress: true });
42754
+ } catch {
42755
+ }
42756
+ }
42757
+ return { markdown: md2, warnings: list.length ? list : void 0 };
42758
+ }
42686
42759
  function scriptsOff(r, off) {
42687
42760
  return off ? stripScriptTags(r) : r;
42688
42761
  }
42689
42762
  async function parseImage(buffer, options) {
42690
42763
  try {
42691
- const { parseImageDocument } = await import("./image-ocr-3C6W3KZO.js");
42764
+ const { parseImageDocument } = await import("./image-ocr-HP65O2CC.js");
42692
42765
  const { blocks, warnings } = await parseImageDocument(buffer, options);
42693
42766
  stripScriptTags({ blocks });
42694
42767
  return {
@@ -42713,7 +42786,9 @@ async function parseHwp3(buffer, options) {
42713
42786
  }
42714
42787
  async function parseHwpx(buffer, options) {
42715
42788
  try {
42716
- const { markdown, blocks, metadata, outline, warnings, images } = await parseHwpxDocument(buffer, options);
42789
+ const doc = await parseHwpxDocument(buffer, options);
42790
+ const { blocks, metadata, outline, images } = doc;
42791
+ const { markdown, warnings } = await withEmbeddedImageOcr(blocks, doc.markdown, doc.warnings, void 0, options);
42717
42792
  return scriptsOff({ success: true, fileType: "hwpx", markdown, blocks, metadata, outline, warnings, images: images?.length ? images : void 0, pageCount: metadata?.pageCount }, options?.scriptTags === false);
42718
42793
  } catch (err) {
42719
42794
  return { success: false, fileType: "hwpx", error: sanitizeError(err), code: classifyError(err) };
@@ -42740,7 +42815,8 @@ async function parseHwp(buffer, options) {
42740
42815
  } catch {
42741
42816
  }
42742
42817
  }
42743
- return scriptsOff({ success: true, fileType: "hwp", markdown, blocks, metadata, outline, warnings, images: images?.length ? images : void 0, pageCount: metadata?.pageCount }, options?.scriptTags === false);
42818
+ const ocred = await withEmbeddedImageOcr(blocks, markdown, warnings, images, options);
42819
+ return scriptsOff({ success: true, fileType: "hwp", markdown: ocred.markdown, blocks, metadata, outline, warnings: ocred.warnings, images: images?.length ? images : void 0, pageCount: metadata?.pageCount }, options?.scriptTags === false);
42744
42820
  } catch (err) {
42745
42821
  return { success: false, fileType: "hwp", error: sanitizeError(err), code: classifyError(err) };
42746
42822
  }
@@ -42748,7 +42824,7 @@ async function parseHwp(buffer, options) {
42748
42824
  async function parsePdf(buffer, options) {
42749
42825
  let parsePdfDocument;
42750
42826
  try {
42751
- const mod = await import("./parser-56I364YM.js");
42827
+ const mod = await import("./parser-LX5MOE6Q.js");
42752
42828
  parsePdfDocument = mod.parsePdfDocument;
42753
42829
  } catch {
42754
42830
  return {