@clazic/kordoc 2.2.0 → 2.2.2
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/README.md +2 -2
- package/dist/{chunk-JJMA5HGQ.js → chunk-64QPUEYH.js} +4 -4
- package/dist/{chunk-XWET7ONC.js → chunk-UPJWEES3.js} +2 -2
- package/dist/cli.js +5 -5
- package/dist/index.cjs +30 -51
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +28 -49
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +2 -2
- package/dist/{provider-XVKP5OGI.js → provider-EPHXUWRL.js} +2 -8
- package/dist/{provider-XVKP5OGI.js.map → provider-EPHXUWRL.js.map} +1 -1
- package/dist/{resolve-Y3KMGD3R.js → resolve-Z4DEPDUS.js} +27 -35
- package/dist/resolve-Z4DEPDUS.js.map +1 -0
- package/dist/{tesseract-provider-MZ37ZKQW.js → tesseract-provider-UNJOI25M.js} +3 -10
- package/dist/tesseract-provider-UNJOI25M.js.map +1 -0
- package/dist/{utils-4NP2VUFW.js → utils-TPAR37RJ.js} +2 -2
- package/dist/{watch-4VVWG2WC.js → watch-FEW5NWVC.js} +3 -3
- package/package.json +3 -1
- package/dist/resolve-Y3KMGD3R.js.map +0 -1
- package/dist/tesseract-provider-MZ37ZKQW.js.map +0 -1
- /package/dist/{chunk-JJMA5HGQ.js.map → chunk-64QPUEYH.js.map} +0 -0
- /package/dist/{chunk-XWET7ONC.js.map → chunk-UPJWEES3.js.map} +0 -0
- /package/dist/{utils-4NP2VUFW.js.map → utils-TPAR37RJ.js.map} +0 -0
- /package/dist/{watch-4VVWG2WC.js.map → watch-FEW5NWVC.js.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -1962,13 +1962,11 @@ var require_cfb = __commonJS({
|
|
|
1962
1962
|
|
|
1963
1963
|
// src/ocr/auto-detect.ts
|
|
1964
1964
|
import { execSync } from "child_process";
|
|
1965
|
-
import { createRequire } from "module";
|
|
1966
1965
|
function detectAvailableOcr() {
|
|
1967
1966
|
for (const cli of CLI_PRIORITY) {
|
|
1968
1967
|
if (isCliInstalled(cli)) return cli;
|
|
1969
1968
|
}
|
|
1970
|
-
|
|
1971
|
-
return null;
|
|
1969
|
+
return "tesseract";
|
|
1972
1970
|
}
|
|
1973
1971
|
function isCliInstalled(name) {
|
|
1974
1972
|
try {
|
|
@@ -1979,25 +1977,8 @@ function isCliInstalled(name) {
|
|
|
1979
1977
|
return false;
|
|
1980
1978
|
}
|
|
1981
1979
|
}
|
|
1982
|
-
function isTesseractAvailable() {
|
|
1983
|
-
try {
|
|
1984
|
-
const require2 = createRequire(import.meta.url);
|
|
1985
|
-
require2.resolve("tesseract.js");
|
|
1986
|
-
return true;
|
|
1987
|
-
} catch {
|
|
1988
|
-
return false;
|
|
1989
|
-
}
|
|
1990
|
-
}
|
|
1991
1980
|
function validateOcrMode(mode) {
|
|
1992
|
-
if (mode === "auto" || mode === "off") return;
|
|
1993
|
-
if (mode === "tesseract") {
|
|
1994
|
-
if (!isTesseractAvailable()) {
|
|
1995
|
-
throw new Error(
|
|
1996
|
-
"tesseract.js\uAC00 \uC124\uCE58\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.\n\uC124\uCE58: npm install tesseract.js"
|
|
1997
|
-
);
|
|
1998
|
-
}
|
|
1999
|
-
return;
|
|
2000
|
-
}
|
|
1981
|
+
if (mode === "auto" || mode === "off" || mode === "tesseract") return;
|
|
2001
1982
|
if (!isCliInstalled(mode)) {
|
|
2002
1983
|
throw new Error(`'${mode}' CLI\uAC00 \uC124\uCE58\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
|
|
2003
1984
|
${getInstallGuide(mode)}`);
|
|
@@ -2012,6 +1993,17 @@ function getInstallGuide(mode) {
|
|
|
2012
1993
|
};
|
|
2013
1994
|
return guides[mode] || `'${mode}'\uC744(\uB97C) \uC124\uCE58\uD574\uC8FC\uC138\uC694.`;
|
|
2014
1995
|
}
|
|
1996
|
+
function getTesseractFallbackMessage() {
|
|
1997
|
+
return [
|
|
1998
|
+
"\uC124\uCE58\uB41C AI CLI\uAC00 \uC5C6\uC5B4 \uB0B4\uC7A5 tesseract.js\uB85C OCR\uC744 \uC218\uD589\uD569\uB2C8\uB2E4.",
|
|
1999
|
+
"\uB354 \uB098\uC740 \uD488\uC9C8(\uD14C\uC774\uBE14/\uD5E4\uB529 \uAD6C\uC870 \uBCF4\uC874)\uC744 \uC704\uD574 AI CLI \uC124\uCE58\uB97C \uAD8C\uC7A5\uD569\uB2C8\uB2E4:",
|
|
2000
|
+
"",
|
|
2001
|
+
" [\uAD8C\uC7A5] Gemini CLI: https://ai.google.dev/gemini-api/docs/cli",
|
|
2002
|
+
" Claude CLI: npm install -g @anthropic-ai/claude-code",
|
|
2003
|
+
" Codex CLI: npm install -g @openai/codex",
|
|
2004
|
+
" Ollama: brew install ollama (+ ollama pull gemma4:27b)"
|
|
2005
|
+
].join("\n");
|
|
2006
|
+
}
|
|
2015
2007
|
var CLI_PRIORITY;
|
|
2016
2008
|
var init_auto_detect = __esm({
|
|
2017
2009
|
"src/ocr/auto-detect.ts"() {
|
|
@@ -2124,16 +2116,9 @@ var tesseract_provider_exports = {};
|
|
|
2124
2116
|
__export(tesseract_provider_exports, {
|
|
2125
2117
|
createTesseractProvider: () => createTesseractProvider
|
|
2126
2118
|
});
|
|
2119
|
+
import { createWorker } from "tesseract.js";
|
|
2127
2120
|
async function createTesseractProvider() {
|
|
2128
|
-
|
|
2129
|
-
try {
|
|
2130
|
-
tesseract = await import("tesseract.js");
|
|
2131
|
-
} catch {
|
|
2132
|
-
throw new Error(
|
|
2133
|
-
"tesseract.js\uAC00 \uC124\uCE58\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.\n\uC124\uCE58: npm install tesseract.js"
|
|
2134
|
-
);
|
|
2135
|
-
}
|
|
2136
|
-
const worker = await tesseract.createWorker("kor+eng");
|
|
2121
|
+
const worker = await createWorker("kor+eng");
|
|
2137
2122
|
let terminated = false;
|
|
2138
2123
|
const provider = async (pageImage, _pageNumber, _mimeType) => {
|
|
2139
2124
|
const { data } = await worker.recognize(pageImage);
|
|
@@ -2171,20 +2156,20 @@ async function resolveOcrProvider(mode, warnings) {
|
|
|
2171
2156
|
return createCliOcrProvider(mode);
|
|
2172
2157
|
}
|
|
2173
2158
|
const detected = detectAvailableOcr();
|
|
2174
|
-
if (!detected) {
|
|
2175
|
-
throw new Error("\uC0AC\uC6A9 \uAC00\uB2A5\uD55C OCR \uB3C4\uAD6C\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.");
|
|
2176
|
-
}
|
|
2177
2159
|
if (detected !== "gemini") {
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2160
|
+
if (detected === "tesseract") {
|
|
2161
|
+
warnings?.push({
|
|
2162
|
+
message: getTesseractFallbackMessage(),
|
|
2163
|
+
code: "OCR_CLI_FALLBACK"
|
|
2164
|
+
});
|
|
2165
|
+
} else {
|
|
2166
|
+
warnings?.push({
|
|
2167
|
+
message: `OCR: '${detected}' \uC0AC\uC6A9 \uC911 (gemini CLI\uAC00 \uC5C6\uC5B4 fallback). \uB354 \uB098\uC740 \uD488\uC9C8\uC744 \uC704\uD574 gemini CLI \uC124\uCE58\uB97C \uAD8C\uC7A5\uD569\uB2C8\uB2E4.`,
|
|
2168
|
+
code: "OCR_CLI_FALLBACK"
|
|
2169
|
+
});
|
|
2170
|
+
}
|
|
2182
2171
|
}
|
|
2183
2172
|
if (detected === "tesseract") {
|
|
2184
|
-
warnings?.push({
|
|
2185
|
-
message: "tesseract.js\uB294 \uD14C\uC774\uBE14 \uAD6C\uC870\uB97C \uBCF5\uC6D0\uD558\uC9C0 \uBABB\uD569\uB2C8\uB2E4. Vision LLM CLI(gemini/claude/codex) \uC124\uCE58\uB97C \uAD8C\uC7A5\uD569\uB2C8\uB2E4.",
|
|
2186
|
-
code: "OCR_CLI_FALLBACK"
|
|
2187
|
-
});
|
|
2188
2173
|
const { createTesseractProvider: createTesseractProvider2 } = await Promise.resolve().then(() => (init_tesseract_provider(), tesseract_provider_exports));
|
|
2189
2174
|
return createTesseractProvider2();
|
|
2190
2175
|
}
|
|
@@ -2353,13 +2338,7 @@ async function ocrPages(doc, provider, pageFilter, effectivePageCount, warnings)
|
|
|
2353
2338
|
return blocks;
|
|
2354
2339
|
}
|
|
2355
2340
|
async function renderPageToPng(page) {
|
|
2356
|
-
|
|
2357
|
-
try {
|
|
2358
|
-
const canvasModule = await import("canvas");
|
|
2359
|
-
createCanvas = canvasModule.createCanvas;
|
|
2360
|
-
} catch {
|
|
2361
|
-
throw new Error("OCR\uC744 \uC0AC\uC6A9\uD558\uB824\uBA74 'canvas' \uD328\uD0A4\uC9C0\uB97C \uC124\uCE58\uD558\uC138\uC694: npm install canvas");
|
|
2362
|
-
}
|
|
2341
|
+
const { createCanvas } = await import("@napi-rs/canvas");
|
|
2363
2342
|
const scale = 2;
|
|
2364
2343
|
const viewport = page.getViewport({ scale });
|
|
2365
2344
|
const canvas = createCanvas(Math.floor(viewport.width), Math.floor(viewport.height));
|
|
@@ -2423,7 +2402,7 @@ import JSZip2 from "jszip";
|
|
|
2423
2402
|
import { DOMParser } from "@xmldom/xmldom";
|
|
2424
2403
|
|
|
2425
2404
|
// src/utils.ts
|
|
2426
|
-
var VERSION = true ? "2.2.
|
|
2405
|
+
var VERSION = true ? "2.2.2" : "0.0.0-dev";
|
|
2427
2406
|
function toArrayBuffer(buf) {
|
|
2428
2407
|
if (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {
|
|
2429
2408
|
return buf.buffer;
|