kordoc 4.2.7 → 4.2.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.
- package/dist/{-7TEU6IRU.js → -SCTT2TBZ.js} +9 -9
- package/dist/{chunk-VWXA47AW.cjs → chunk-2BTKLDNX.cjs} +4 -4
- package/dist/{chunk-VWXA47AW.cjs.map → chunk-2BTKLDNX.cjs.map} +1 -1
- package/dist/{chunk-T6BTWUTC.js → chunk-4FTXKIGT.js} +2 -2
- package/dist/{chunk-ESV4KOSE.js → chunk-55QIELGV.js} +3 -3
- package/dist/{chunk-G2AS6ICC.js → chunk-7GEBDS6B.js} +2 -2
- package/dist/{chunk-YTRJDQ4Q.cjs → chunk-CELJIGBQ.cjs} +3 -3
- package/dist/{chunk-YTRJDQ4Q.cjs.map → chunk-CELJIGBQ.cjs.map} +1 -1
- package/dist/{chunk-PK5GLL5C.js → chunk-COHHXQSP.js} +2 -2
- package/dist/{chunk-FSUCQ6ZM.js → chunk-EOVJ27WC.js} +3 -3
- package/dist/{chunk-5HFKMCAX.js → chunk-FS3XQ3ZQ.js} +2 -2
- package/dist/{chunk-NAWC6HTC.js → chunk-GKSFNCVP.js} +2 -2
- package/dist/chunk-GKSFNCVP.js.map +1 -0
- package/dist/{chunk-AES6PHIG.js → chunk-IJUAWDOS.js} +3 -3
- package/dist/{chunk-2CHFQQXM.js → chunk-JP5MNHUK.js} +2 -2
- package/dist/{chunk-GJO3ORFW.js → chunk-LM7C6HI2.js} +1 -1
- package/dist/chunk-LM7C6HI2.js.map +1 -0
- package/dist/{chunk-HH4SD5RE.cjs → chunk-OQNFGKRY.cjs} +2 -2
- package/dist/{chunk-HH4SD5RE.cjs.map → chunk-OQNFGKRY.cjs.map} +1 -1
- package/dist/{chunk-YAQRGQUJ.js → chunk-QZCAIFUW.js} +2 -2
- package/dist/{chunk-RS5OID2J.cjs → chunk-ROKHZE76.cjs} +9 -9
- package/dist/{chunk-RS5OID2J.cjs.map → chunk-ROKHZE76.cjs.map} +1 -1
- package/dist/{chunk-62DHK6KT.js → chunk-UKEZ46VL.js} +2 -2
- package/dist/{chunk-NKERQ6GB.js → chunk-URKX77GB.js} +2 -2
- package/dist/{chunk-IVX3YLQH.js → chunk-WP4VD5T7.js} +2 -2
- package/dist/chunk-WP4VD5T7.js.map +1 -0
- package/dist/{chunk-LPRNVK4G.js → chunk-YNAPK4H6.js} +54 -30
- package/dist/chunk-YNAPK4H6.js.map +1 -0
- package/dist/chunks-KKYJDJT7.js +10 -0
- package/dist/cli.js +17 -17
- package/dist/{image-ocr-OS4ETBOL.js → image-ocr-ANSXR5KJ.js} +4 -4
- package/dist/{image-ocr-UX4QM35J.cjs → image-ocr-GHQ6YKJH.cjs} +9 -9
- package/dist/{image-ocr-UX4QM35J.cjs.map → image-ocr-GHQ6YKJH.cjs.map} +1 -1
- package/dist/{image-ocr-PGQ7JPDP.js → image-ocr-ORATZW73.js} +5 -5
- package/dist/index.cjs +480 -456
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +49 -25
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +15 -15
- package/dist/{parser-2JAC5WMM.js → parser-BPVTYM5K.js} +5 -5
- package/dist/{parser-T74C7Q57.js → parser-GZDOZCHM.js} +6 -6
- package/dist/{parser-GAZROLSA.cjs → parser-KTNIUF2N.cjs} +24 -24
- package/dist/{parser-GAZROLSA.cjs.map → parser-KTNIUF2N.cjs.map} +1 -1
- package/dist/pdf-ocr-6XKLXZTF.cjs +13 -0
- package/dist/{pdf-ocr-2SKGRXIR.cjs.map → pdf-ocr-6XKLXZTF.cjs.map} +1 -1
- package/dist/pdf-ocr-HWPNMKKC.js +12 -0
- package/dist/{pdf-ocr-3A3QLPID.js → pdf-ocr-W2PA2K3U.js} +5 -5
- package/dist/{profile-io-6GX564CO.js → profile-io-I2TH44EO.js} +3 -3
- package/dist/{rasterize-4V7PKE7A.js → rasterize-QBA43YAQ.js} +2 -2
- package/dist/render-MDJDKKNH.js +10 -0
- package/dist/seal-Z52JR2GX.js +10 -0
- package/dist/{watch-JVRAAJNA.js → watch-7V6X7LHV.js} +9 -9
- package/package.json +1 -1
- package/dist/chunk-GJO3ORFW.js.map +0 -1
- package/dist/chunk-IVX3YLQH.js.map +0 -1
- package/dist/chunk-LPRNVK4G.js.map +0 -1
- package/dist/chunk-NAWC6HTC.js.map +0 -1
- package/dist/chunks-TLAOHNPB.js +0 -10
- package/dist/pdf-ocr-2SKGRXIR.cjs +0 -13
- package/dist/pdf-ocr-WBOTDQ4D.js +0 -12
- package/dist/render-2AF7GZVN.js +0 -10
- package/dist/seal-2ES6UAN6.js +0 -10
- /package/dist/{-7TEU6IRU.js.map → -SCTT2TBZ.js.map} +0 -0
- /package/dist/{chunk-T6BTWUTC.js.map → chunk-4FTXKIGT.js.map} +0 -0
- /package/dist/{chunk-ESV4KOSE.js.map → chunk-55QIELGV.js.map} +0 -0
- /package/dist/{chunk-G2AS6ICC.js.map → chunk-7GEBDS6B.js.map} +0 -0
- /package/dist/{chunk-PK5GLL5C.js.map → chunk-COHHXQSP.js.map} +0 -0
- /package/dist/{chunk-FSUCQ6ZM.js.map → chunk-EOVJ27WC.js.map} +0 -0
- /package/dist/{chunk-5HFKMCAX.js.map → chunk-FS3XQ3ZQ.js.map} +0 -0
- /package/dist/{chunk-AES6PHIG.js.map → chunk-IJUAWDOS.js.map} +0 -0
- /package/dist/{chunk-2CHFQQXM.js.map → chunk-JP5MNHUK.js.map} +0 -0
- /package/dist/{chunk-YAQRGQUJ.js.map → chunk-QZCAIFUW.js.map} +0 -0
- /package/dist/{chunk-62DHK6KT.js.map → chunk-UKEZ46VL.js.map} +0 -0
- /package/dist/{chunk-NKERQ6GB.js.map → chunk-URKX77GB.js.map} +0 -0
- /package/dist/{chunks-TLAOHNPB.js.map → chunks-KKYJDJT7.js.map} +0 -0
- /package/dist/{image-ocr-OS4ETBOL.js.map → image-ocr-ANSXR5KJ.js.map} +0 -0
- /package/dist/{image-ocr-PGQ7JPDP.js.map → image-ocr-ORATZW73.js.map} +0 -0
- /package/dist/{parser-2JAC5WMM.js.map → parser-BPVTYM5K.js.map} +0 -0
- /package/dist/{parser-T74C7Q57.js.map → parser-GZDOZCHM.js.map} +0 -0
- /package/dist/{pdf-ocr-3A3QLPID.js.map → pdf-ocr-HWPNMKKC.js.map} +0 -0
- /package/dist/{pdf-ocr-WBOTDQ4D.js.map → pdf-ocr-W2PA2K3U.js.map} +0 -0
- /package/dist/{profile-io-6GX564CO.js.map → profile-io-I2TH44EO.js.map} +0 -0
- /package/dist/{rasterize-4V7PKE7A.js.map → rasterize-QBA43YAQ.js.map} +0 -0
- /package/dist/{render-2AF7GZVN.js.map → render-MDJDKKNH.js.map} +0 -0
- /package/dist/{seal-2ES6UAN6.js.map → seal-Z52JR2GX.js.map} +0 -0
- /package/dist/{watch-JVRAAJNA.js.map → watch-7V6X7LHV.js.map} +0 -0
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
parseFormatProfileJson
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-URKX77GB.js";
|
|
5
5
|
import {
|
|
6
6
|
BODY_FONTS,
|
|
7
7
|
BULLET2_CHARS,
|
|
@@ -21,27 +21,27 @@ import {
|
|
|
21
21
|
markdownToHwpx,
|
|
22
22
|
parse,
|
|
23
23
|
unknownFontWarnings
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-YNAPK4H6.js";
|
|
25
25
|
import "./chunk-7FCNOKOR.js";
|
|
26
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-LM7C6HI2.js";
|
|
27
27
|
import {
|
|
28
28
|
detectFormat,
|
|
29
29
|
detectZipFormat
|
|
30
30
|
} from "./chunk-TCJRGFYY.js";
|
|
31
31
|
import "./chunk-MOL7MDBG.js";
|
|
32
|
-
import "./chunk-
|
|
32
|
+
import "./chunk-55QIELGV.js";
|
|
33
33
|
import "./chunk-DZIXKL7E.js";
|
|
34
|
-
import "./chunk-
|
|
34
|
+
import "./chunk-COHHXQSP.js";
|
|
35
35
|
import {
|
|
36
36
|
blocksToMarkdown
|
|
37
|
-
} from "./chunk-
|
|
38
|
-
import "./chunk-
|
|
39
|
-
import "./chunk-
|
|
37
|
+
} from "./chunk-4FTXKIGT.js";
|
|
38
|
+
import "./chunk-EOVJ27WC.js";
|
|
39
|
+
import "./chunk-GKSFNCVP.js";
|
|
40
40
|
import {
|
|
41
41
|
VERSION,
|
|
42
42
|
sanitizeError,
|
|
43
43
|
toArrayBuffer
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-7GEBDS6B.js";
|
|
45
45
|
|
|
46
46
|
// src/cli.ts
|
|
47
47
|
import { readFileSync, writeFileSync, mkdirSync, statSync } from "fs";
|
|
@@ -117,7 +117,7 @@ program.name("kordoc").description("\uBAA8\uB450 \uD30C\uC2F1\uD574\uBC84\uB9AC\
|
|
|
117
117
|
2
|
|
118
118
|
);
|
|
119
119
|
} else if (opts.format === "chunks") {
|
|
120
|
-
const { blocksToChunks } = await import("./chunks-
|
|
120
|
+
const { blocksToChunks } = await import("./chunks-KKYJDJT7.js");
|
|
121
121
|
output = JSON.stringify(blocksToChunks(result.blocks), null, 2);
|
|
122
122
|
} else {
|
|
123
123
|
output = markdown;
|
|
@@ -164,7 +164,7 @@ program.command("watch <dir>").description("\uB514\uB809\uD1A0\uB9AC \uAC10\uC2D
|
|
|
164
164
|
if (command.getOptionValueSource("format") === "default" && program.getOptionValueSource("format") === "cli") {
|
|
165
165
|
opts.format = rootOpts.format;
|
|
166
166
|
}
|
|
167
|
-
const { watchDirectory } = await import("./watch-
|
|
167
|
+
const { watchDirectory } = await import("./watch-7V6X7LHV.js");
|
|
168
168
|
await watchDirectory({
|
|
169
169
|
dir,
|
|
170
170
|
outDir: opts.outDir,
|
|
@@ -353,7 +353,7 @@ program.command("fill <template>").description("\uC11C\uC2DD \uBB38\uC11C\uC758
|
|
|
353
353
|
});
|
|
354
354
|
program.command("seal <file>").description('\uB3C4\uC7A5/\uC11C\uBA85 \uC774\uBBF8\uC9C0\uB97C \uC575\uCEE4 \uBB38\uAD6C \uC704\uC5D0 \uBD80\uC720 \uBC30\uCE58 (\uD45C/\uD398\uC774\uC9C0 \uBD88\uD655\uC7A5) \u2014 kordoc seal \uC2E0\uCCAD\uC11C.hwpx --image \uB3C4\uC7A5.png --anchor "(\uC778)" -o \uACB0\uACFC.hwpx').requiredOption("--image <path>", "\uB3C4\uC7A5/\uC11C\uBA85 \uC774\uBBF8\uC9C0 (\uD22C\uBA85 \uBC30\uACBD PNG \uAD8C\uC7A5)").option("--anchor <text>", "\uC575\uCEE4 \uBB38\uAD6C", "(\uC778)").option("-n, --occurrence <num>", "\uAC19\uC740 \uC575\uCEE4\uAC00 \uC5EC\uB7FF\uC77C \uB54C 0-based \uC120\uD0DD", "0").option("--size-mm <num>", "\uB3C4\uC7A5 \uD55C \uBCC0 \uD06C\uAE30 mm (\uAE30\uBCF8: \uC904\uB192\uC774\xD71.6, 7~18 \uD074\uB7A8\uD504)").option("--mode <mode>", "overlap(\uBB38\uAD6C \uC704 \uACB9\uCE68) | right(\uC624\uB978\uCABD \uC606) | auto", "auto").option("--dx <mm>", "x \uBBF8\uC138\uC870\uC815 mm", "0").option("--dy <mm>", "y \uBBF8\uC138\uC870\uC815 mm", "0").option("-o, --output <path>", "\uCD9C\uB825 \uACBD\uB85C (\uAE30\uBCF8: <\uC785\uB825>.sealed.hwpx)").option("--silent", "\uC9C4\uD589 \uBA54\uC2DC\uC9C0 \uC228\uAE30\uAE30").action(async (file, opts) => {
|
|
355
355
|
try {
|
|
356
|
-
const { placeSealHwpx, detectFormat: detectFormat2 } = await import("./-
|
|
356
|
+
const { placeSealHwpx, detectFormat: detectFormat2 } = await import("./-SCTT2TBZ.js");
|
|
357
357
|
const rootOpts = program.opts();
|
|
358
358
|
const output = opts.output ?? rootOpts.output;
|
|
359
359
|
const silent = opts.silent ?? rootOpts.silent;
|
|
@@ -431,7 +431,7 @@ program.command("seal <file>").description('\uB3C4\uC7A5/\uC11C\uBA85 \uC774\uBB
|
|
|
431
431
|
});
|
|
432
432
|
program.command("patch <original> <edited>").description("\uC11C\uC2DD \uBCF4\uC874 \uB77C\uC6B4\uB4DC\uD2B8\uB9BD \uD328\uCE58 \u2014 \uD3B8\uC9D1\uB41C \uB9C8\uD06C\uB2E4\uC6B4\uC744 \uC6D0\uBCF8 HWPX/HWP\uC5D0 in-place \uBC18\uC601 (kordoc patch \uC6D0\uBCF8.hwpx \uD3B8\uC9D1.md -o \uCD9C\uB825.hwpx). \uBBF8\uC801\uC6A9(skip) \uD3B8\uC9D1\uC774 \uC788\uC73C\uBA74 exit 2").option("-o, --output <path>", "\uCD9C\uB825 \uACBD\uB85C (\uAE30\uBCF8: <\uC6D0\uBCF8>.patched.hwpx|.hwp)").option("--no-verify", "\uD328\uCE58 \uD6C4 \uC7AC\uD30C\uC2F1 \uC790\uB3D9 \uAC80\uC99D \uC0DD\uB7B5").option("--silent", "\uC9C4\uD589 \uBA54\uC2DC\uC9C0 \uC228\uAE30\uAE30").action(async (original, edited, opts) => {
|
|
433
433
|
try {
|
|
434
|
-
const { patchHwpx, patchHwp, detectFormat: detectFormat2 } = await import("./-
|
|
434
|
+
const { patchHwpx, patchHwp, detectFormat: detectFormat2 } = await import("./-SCTT2TBZ.js");
|
|
435
435
|
const rootOpts = program.opts();
|
|
436
436
|
const output = opts.output ?? rootOpts.output;
|
|
437
437
|
const silent = opts.silent ?? rootOpts.silent;
|
|
@@ -472,7 +472,7 @@ program.command("patch <original> <edited>").description("\uC11C\uC2DD \uBCF4\uC
|
|
|
472
472
|
});
|
|
473
473
|
program.command("validate <file>").description("HWPX \uAD6C\uC870 \uAC80\uC99D \u2014 ZIP\xB7mimetype\xB7\uD544\uC218 \uD30C\uC77C\xB7XML \uC6F0\uD3FC\uB4DC\xB7secCnt\xB7manifest \uCC38\uC870 (\uD55C\uCEF4\uB3C5\uC2A4 \uAC70\uBD80 \uC694\uC778 \uC0AC\uC804 \uCC28\uB2E8)").option("--json", "\uACB0\uACFC\uB97C JSON\uC73C\uB85C stdout\uC5D0 \uCD9C\uB825").action(async (file, opts) => {
|
|
474
474
|
try {
|
|
475
|
-
const { validateHwpx } = await import("./-
|
|
475
|
+
const { validateHwpx } = await import("./-SCTT2TBZ.js");
|
|
476
476
|
const buf = new Uint8Array(readFileSync(resolve(file)));
|
|
477
477
|
const result = await validateHwpx(buf);
|
|
478
478
|
if (opts.json) {
|
|
@@ -651,7 +651,7 @@ program.command("lint <file>").description("\uACF5\uBB38\uC11C \uD45C\uAE30\uBC9
|
|
|
651
651
|
}
|
|
652
652
|
});
|
|
653
653
|
program.command("redact <files...>").description("\uAC1C\uC778\uC815\uBCF4 \uC11C\uC2DD \uBCF4\uC874 \uB9C8\uC2A4\uD0B9 \u2014 \uC8FC\uBBFC\uBC88\uD638\xB7\uC804\uD654\xB7\uC774\uBA54\uC77C\xB7\uCE74\uB4DC\xB7\uACC4\uC88C\uB97C \uD0D0\uC9C0\uD574 HWPX/HWP\uB294 \uC6D0\uBCF8 \uC11C\uC2DD \uADF8\uB300\uB85C patch, \uADF8 \uC678 \uD3EC\uB9F7\uC740 \uB9C8\uC2A4\uD0B9\uB41C \uB9C8\uD06C\uB2E4\uC6B4 \uCD9C\uB825. \uC790\uB3D9 \uAC80\uCD9C \uBCF4\uC870 \uB3C4\uAD6C\uC774\uBBC0\uB85C \uACB0\uACFC\uB294 \uBC18\uB4DC\uC2DC \uC0AC\uB78C\uC774 \uCD5C\uC885 \uD655\uC778\uD558\uC138\uC694 (\uC774\uBBF8\uC9C0 \uC548 \uD14D\uC2A4\uD2B8\uB294 \uD0D0\uC9C0 \uBD88\uAC00)").option("--rules <csv>", "\uC801\uC6A9 \uB8F0 (\uAE30\uBCF8: rrn,phone,email,card,account \u2014 passport,driver\uB294 opt-in)").option("--mask-char <ch>", "\uB9C8\uC2A4\uD06C \uBB38\uC790 1\uAE00\uC790 (\uAE30\uBCF8: \u25CF)").option("-o, --output <path>", "\uCD9C\uB825 \uACBD\uB85C (\uB2E8\uC77C \uD30C\uC77C \uC2DC)").option("-d, --out-dir <dir>", "\uCD9C\uB825 \uB514\uB809\uD1A0\uB9AC (\uB2E4\uC911 \uD30C\uC77C \uC2DC)").option("--dry-run", "\uD0D0\uC9C0 \uB9AC\uD3EC\uD2B8\uB9CC \uCD9C\uB825, \uD30C\uC77C \uBBF8\uC0DD\uC131").option("--json", "\uB9AC\uD3EC\uD2B8\uB97C JSON\uC73C\uB85C stdout \uCD9C\uB825").option("--silent", "\uC9C4\uD589 \uBA54\uC2DC\uC9C0 \uC228\uAE30\uAE30").action(async (files, opts) => {
|
|
654
|
-
const { redactMarkdown, DEFAULT_REDACT_RULES, patchHwpx, patchHwp } = await import("./-
|
|
654
|
+
const { redactMarkdown, DEFAULT_REDACT_RULES, patchHwpx, patchHwp } = await import("./-SCTT2TBZ.js");
|
|
655
655
|
const rootOpts = program.opts();
|
|
656
656
|
const output = opts.output ?? rootOpts.output;
|
|
657
657
|
const silent = opts.silent ?? rootOpts.silent;
|
|
@@ -740,7 +740,7 @@ program.command("render <file>").description("\uB808\uC774\uC544\uC6C3 \uBCF4\uC
|
|
|
740
740
|
const rootOpts = program.opts();
|
|
741
741
|
const output = opts.output ?? rootOpts.output;
|
|
742
742
|
const silent = opts.silent ?? rootOpts.silent;
|
|
743
|
-
const { renderHwpxToSvg } = await import("./render-
|
|
743
|
+
const { renderHwpxToSvg } = await import("./render-MDJDKKNH.js");
|
|
744
744
|
const absPath = resolve(file);
|
|
745
745
|
const buffer = readFileSync(absPath);
|
|
746
746
|
const highlights = opts.highlight ? String(opts.highlight).split(",") : void 0;
|
|
@@ -762,7 +762,7 @@ program.command("render <file>").description("\uB808\uC774\uC544\uC6C3 \uBCF4\uC
|
|
|
762
762
|
});
|
|
763
763
|
program.command("render-worker").description("persistent \uB80C\uB354 \uC6CC\uCEE4 \u2014 stdin NDJSON \uC694\uCCAD \u2192 \uC870\uD310 SVG \uD30C\uC77C \uCD9C\uB825 (\uD504\uB85C\uC138\uC2A4 \uC720\uC9C0, \uCF5C\uB4DC\uC2A4\uD0C0\uD2B8 \uC81C\uAC70)").action(async () => {
|
|
764
764
|
const { createInterface } = await import("readline");
|
|
765
|
-
const { renderHwpxToSvg } = await import("./render-
|
|
765
|
+
const { renderHwpxToSvg } = await import("./render-MDJDKKNH.js");
|
|
766
766
|
const rl = createInterface({ input: process.stdin });
|
|
767
767
|
const write = (o) => void process.stdout.write(JSON.stringify(o) + "\n");
|
|
768
768
|
write({ ready: true, version: VERSION });
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
getOcrEngine,
|
|
5
5
|
ocrItemsToBlocks,
|
|
6
6
|
rulingToPdfLines
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-FS3XQ3ZQ.js";
|
|
8
8
|
import "./chunk-J2RZ444H.js";
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-UKEZ46VL.js";
|
|
10
|
+
import "./chunk-WP4VD5T7.js";
|
|
11
11
|
|
|
12
12
|
// src/ocr/image-ocr.ts
|
|
13
13
|
var IMAGE_SCALE = 3;
|
|
@@ -62,4 +62,4 @@ function detectImageMime(buffer) {
|
|
|
62
62
|
export {
|
|
63
63
|
parseImageDocument
|
|
64
64
|
};
|
|
65
|
-
//# sourceMappingURL=image-ocr-
|
|
65
|
+
//# sourceMappingURL=image-ocr-ANSXR5KJ.js.map
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkCELJIGBQcjs = require('./chunk-CELJIGBQ.cjs');
|
|
8
8
|
require('./chunk-H7OWEYH2.cjs');
|
|
9
|
-
require('./chunk-
|
|
10
|
-
require('./chunk-
|
|
9
|
+
require('./chunk-ROKHZE76.cjs');
|
|
10
|
+
require('./chunk-OQNFGKRY.cjs');
|
|
11
11
|
require('./chunk-GS7T56RP.cjs');
|
|
12
12
|
|
|
13
13
|
// src/ocr/image-ocr.ts
|
|
@@ -23,13 +23,13 @@ async function parseImageDocument(buffer, options) {
|
|
|
23
23
|
return { blocks: [{ type: "paragraph", text: text.trim(), pageNumber: 1 }], warnings };
|
|
24
24
|
}
|
|
25
25
|
const { data, width, height } = await decodeToRgba(buffer);
|
|
26
|
-
await
|
|
26
|
+
await _chunkCELJIGBQcjs.ensureOcrModels.call(void 0, (p) => {
|
|
27
27
|
if (p.phase === "download" && p.downloaded === 0) {
|
|
28
28
|
process.stderr.write(`[kordoc-ocr] ${p.spec.name} \uB2E4\uC6B4\uB85C\uB4DC \uC911 (~${p.spec.sizeMb}MB)...
|
|
29
29
|
`);
|
|
30
30
|
}
|
|
31
31
|
});
|
|
32
|
-
const engine = await
|
|
32
|
+
const engine = await _chunkCELJIGBQcjs.getOcrEngine.call(void 0, );
|
|
33
33
|
const items = await engine.recognizePage(data, width, height);
|
|
34
34
|
if (items.length === 0) {
|
|
35
35
|
warnings.push({ page: 1, message: "\uC774\uBBF8\uC9C0\uC5D0\uC11C \uD14D\uC2A4\uD2B8\uB97C \uC778\uC2DD\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4", code: "OCR_FAILED" });
|
|
@@ -37,9 +37,9 @@ async function parseImageDocument(buffer, options) {
|
|
|
37
37
|
}
|
|
38
38
|
const pdfW = width / IMAGE_SCALE;
|
|
39
39
|
const pdfH = height / IMAGE_SCALE;
|
|
40
|
-
const ruling =
|
|
41
|
-
const extraLines =
|
|
42
|
-
return { blocks:
|
|
40
|
+
const ruling = _chunkCELJIGBQcjs.detectRulingLines.call(void 0, data, width, height, IMAGE_SCALE);
|
|
41
|
+
const extraLines = _chunkCELJIGBQcjs.rulingToPdfLines.call(void 0, ruling, IMAGE_SCALE, pdfH);
|
|
42
|
+
return { blocks: _chunkCELJIGBQcjs.ocrItemsToBlocks.call(void 0, items, 1, pdfW, pdfH, IMAGE_SCALE, extraLines), warnings };
|
|
43
43
|
}
|
|
44
44
|
async function decodeToRgba(buffer) {
|
|
45
45
|
let sharp;
|
|
@@ -63,4 +63,4 @@ function detectImageMime(buffer) {
|
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
exports.parseImageDocument = parseImageDocument;
|
|
66
|
-
//# sourceMappingURL=image-ocr-
|
|
66
|
+
//# sourceMappingURL=image-ocr-GHQ6YKJH.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/mong-e/workspace/kordoc/dist/image-ocr-
|
|
1
|
+
{"version":3,"sources":["/Users/mong-e/workspace/kordoc/dist/image-ocr-GHQ6YKJH.cjs","../src/ocr/image-ocr.ts"],"names":[],"mappings":"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","file":"/Users/mong-e/workspace/kordoc/dist/image-ocr-GHQ6YKJH.cjs","sourcesContent":[null,"/**\n * 이미지 직접 입력 OCR — PNG/JPEG/WebP 를 PDF 래핑 없이 바로 파싱한다.\n *\n * 이미지는 텍스트층이 없으므로 OCR 이 항상 필요하다 — `--ocr` 플래그 없이도\n * 내장 엔진(PP-OCRv5 korean)을 기본 적용하고, OcrProvider 가 주어지면 위임한다.\n * 좌표는 216dpi(스케일 3) 가정으로 PDF pt 공간에 환산해 기존 블록 파이프라인\n * (괘선 감지 → 선 기반 표 → 클러스터 → xy-cut)을 그대로 태운다.\n *\n * 디코딩은 optional dependency `sharp` — 미설치면 MISSING_DEPENDENCY 안내.\n */\n\nimport type { IRBlock, ParseOptions, ParseWarning } from \"../types.js\"\nimport { getOcrEngine } from \"./engine.js\"\nimport { ensureOcrModels } from \"./models.js\"\nimport { detectRulingLines, rulingToPdfLines } from \"./ruling-lines.js\"\nimport { ocrItemsToBlocks } from \"./pdf-ocr.js\"\n\n/** 좌표 환산 스케일 (px/pt) — PDF OCR 렌더(216dpi)와 동일 기준 */\nconst IMAGE_SCALE = 3\n\nexport interface ImageOcrResult {\n blocks: IRBlock[]\n warnings: ParseWarning[]\n}\n\n/** 이미지 버퍼 → OCR → IRBlock[] (표 괘선 감지 포함) */\nexport async function parseImageDocument(\n buffer: ArrayBuffer,\n options?: ParseOptions,\n): Promise<ImageOcrResult> {\n const warnings: ParseWarning[] = []\n\n // 사용자 OcrProvider — 원본 바이트 그대로 위임 (종전 PDF 경로와 같은 계약)\n if (typeof options?.ocr === \"function\") {\n const text = await options.ocr(new Uint8Array(buffer), 1, detectImageMime(buffer))\n if (!text.trim()) {\n warnings.push({ page: 1, message: \"OCR 결과 없음\", code: \"OCR_FAILED\" })\n return { blocks: [], warnings }\n }\n return { blocks: [{ type: \"paragraph\", text: text.trim(), pageNumber: 1 }], warnings }\n }\n\n const { data, width, height } = await decodeToRgba(buffer)\n\n await ensureOcrModels(p => {\n if (p.phase === \"download\" && p.downloaded === 0) {\n process.stderr.write(`[kordoc-ocr] ${p.spec.name} 다운로드 중 (~${p.spec.sizeMb}MB)...\\n`)\n }\n })\n const engine = await getOcrEngine()\n const items = await engine.recognizePage(data, width, height)\n if (items.length === 0) {\n warnings.push({ page: 1, message: \"이미지에서 텍스트를 인식하지 못했습니다\", code: \"OCR_FAILED\" })\n return { blocks: [], warnings }\n }\n\n const pdfW = width / IMAGE_SCALE\n const pdfH = height / IMAGE_SCALE\n const ruling = detectRulingLines(data, width, height, IMAGE_SCALE)\n const extraLines = rulingToPdfLines(ruling, IMAGE_SCALE, pdfH)\n return { blocks: ocrItemsToBlocks(items, 1, pdfW, pdfH, IMAGE_SCALE, extraLines), warnings }\n}\n\n/** sharp 로 RGBA 디코딩 — 미설치는 MISSING_DEPENDENCY 로 분류되도록 안내 메시지 throw */\nasync function decodeToRgba(\n buffer: ArrayBuffer,\n): Promise<{ data: Uint8Array; width: number; height: number }> {\n type SharpFactory = (input: Buffer) => {\n ensureAlpha(): { raw(): { toBuffer(opts: { resolveWithObject: true }): Promise<{ data: Buffer; info: { width: number; height: number } }> } }\n }\n let sharp: SharpFactory\n try {\n const mod = (await import(\"sharp\")) as unknown as { default?: SharpFactory } & SharpFactory\n sharp = typeof mod === \"function\" ? mod : (mod.default ?? (mod as unknown as SharpFactory))\n } catch (e) {\n throw new Error(\n \"이미지 파싱에는 optional dependency 'sharp' 가 필요합니다. \" +\n `\\`npm install sharp\\` 후 다시 실행하세요. 원인: ${(e as Error).message}`,\n )\n }\n const { data, info } = await sharp(Buffer.from(buffer)).ensureAlpha().raw().toBuffer({ resolveWithObject: true })\n return { data: new Uint8Array(data.buffer, data.byteOffset, data.byteLength), width: info.width, height: info.height }\n}\n\n/** OcrProvider 계약용 mime 판별 */\nfunction detectImageMime(buffer: ArrayBuffer): string {\n const b = new Uint8Array(buffer, 0, Math.min(12, buffer.byteLength))\n if (b[0] === 0xff && b[1] === 0xd8) return \"image/jpeg\"\n if (b[0] === 0x52 && b[1] === 0x49) return \"image/webp\"\n return \"image/png\"\n}\n"]}
|
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
getOcrEngine,
|
|
5
5
|
ocrItemsToBlocks,
|
|
6
6
|
rulingToPdfLines
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-JP5MNHUK.js";
|
|
8
8
|
import {
|
|
9
9
|
ensureOcrModels
|
|
10
10
|
} from "./chunk-GEPINOL6.js";
|
|
11
11
|
import "./chunk-NNDVFNMJ.js";
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-IJUAWDOS.js";
|
|
13
|
+
import "./chunk-LM7C6HI2.js";
|
|
14
|
+
import "./chunk-7GEBDS6B.js";
|
|
15
15
|
|
|
16
16
|
// src/ocr/image-ocr.ts
|
|
17
17
|
var IMAGE_SCALE = 3;
|
|
@@ -66,4 +66,4 @@ function detectImageMime(buffer) {
|
|
|
66
66
|
export {
|
|
67
67
|
parseImageDocument
|
|
68
68
|
};
|
|
69
|
-
//# sourceMappingURL=image-ocr-
|
|
69
|
+
//# sourceMappingURL=image-ocr-ORATZW73.js.map
|