kordoc 4.0.6 → 4.0.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/README.md +823 -806
- package/dist/{-NDU7YGSS.js → -LE4RLXVA.js} +8 -8
- package/dist/{chunk-5SOZXPQY.js → chunk-2DZQF6YJ.js} +3 -3
- package/dist/chunk-2DZQF6YJ.js.map +1 -0
- package/dist/{chunk-6GBLFQMA.js → chunk-5RPYBC2Q.js} +1 -1
- package/dist/chunk-5RPYBC2Q.js.map +1 -0
- package/dist/{chunk-DQJTNXVS.cjs → chunk-6XAAYAWL.cjs} +142 -3
- package/dist/chunk-6XAAYAWL.cjs.map +1 -0
- package/dist/{chunk-HC2SEH6I.js → chunk-7S3M4N4E.js} +939 -946
- package/dist/chunk-7S3M4N4E.js.map +1 -0
- package/dist/{chunk-4C7SBZNW.js → chunk-BNU5QGIZ.js} +2 -2
- package/dist/chunk-BNU5QGIZ.js.map +1 -0
- package/dist/{chunk-63ASYC4N.js → chunk-D35VBACN.js} +3 -3
- package/dist/chunk-D35VBACN.js.map +1 -0
- package/dist/chunk-DCZVOIEO.cjs.map +1 -1
- package/dist/chunk-GS7T56RP.cjs.map +1 -1
- package/dist/{chunk-L3I4TIRP.js → chunk-HMUEU7D7.js} +2 -2
- package/dist/chunk-HMUEU7D7.js.map +1 -0
- package/dist/{chunk-5CJGKKMZ.js → chunk-MEPHGCPQ.js} +1 -1
- package/dist/chunk-MEPHGCPQ.js.map +1 -0
- package/dist/chunk-MOL7MDBG.js +0 -0
- package/dist/{chunk-HOGJ5ALY.js → chunk-OQPILS7B.js} +142 -3
- package/dist/chunk-OQPILS7B.js.map +1 -0
- package/dist/{chunk-KA4FEBS2.js → chunk-RROH5WHO.js} +2 -2
- package/dist/chunk-RROH5WHO.js.map +1 -0
- package/dist/{chunk-UVSOSFER.js → chunk-UEIYETCQ.js} +142 -3
- package/dist/chunk-UEIYETCQ.js.map +1 -0
- package/dist/cli.js +15 -15
- package/dist/cli.js.map +1 -1
- package/dist/{detect-PJZMUL2Z.js → detect-RI2MQ33K.js} +2 -2
- package/dist/formula-5NKVS2LR.cjs.map +1 -1
- package/dist/formula-JCNF43NE.js +0 -0
- package/dist/index.cjs +1248 -1255
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +925 -932
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +13 -13
- package/dist/mcp.js.map +1 -1
- package/dist/page-range-737B4EZW.js +0 -0
- package/dist/page-range-P7SDW6LR.cjs.map +1 -1
- package/dist/{parser-VEY4B5CJ.cjs → parser-ITMU2WN5.cjs} +231 -37
- package/dist/parser-ITMU2WN5.cjs.map +1 -0
- package/dist/{parser-DMKHIV4E.js → parser-KMMUS73Q.js} +200 -6
- package/dist/parser-KMMUS73Q.js.map +1 -0
- package/dist/{parser-C636QIOB.js → parser-TCTCSBYZ.js} +202 -8
- package/dist/parser-TCTCSBYZ.js.map +1 -0
- package/dist/{profile-io-JYGCC6XQ.js → profile-io-SLN4P76T.js} +3 -3
- package/dist/{provider-H4WWSPOV.js → provider-4ZJKV3DC.js} +1 -1
- package/dist/provider-4ZJKV3DC.js.map +1 -0
- package/dist/{provider-7H4CPZYS.js → provider-AKROB7WQ.js} +1 -1
- package/dist/provider-AKROB7WQ.js.map +1 -0
- package/dist/{provider-5K7O3Z2O.cjs → provider-G4C2V2PD.cjs} +1 -1
- package/dist/provider-G4C2V2PD.cjs.map +1 -0
- package/dist/render-25BT623I.js +10 -0
- package/dist/seal-R4TETA4C.js +10 -0
- package/dist/setup-57FB3LSP.js +0 -0
- package/dist/{watch-ZQUFJBFR.js → watch-OHQWSVPE.js} +8 -8
- package/dist/watch-OHQWSVPE.js.map +1 -0
- package/package.json +97 -97
- package/dist/chunk-4C7SBZNW.js.map +0 -1
- package/dist/chunk-5CJGKKMZ.js.map +0 -1
- package/dist/chunk-5SOZXPQY.js.map +0 -1
- package/dist/chunk-63ASYC4N.js.map +0 -1
- package/dist/chunk-6GBLFQMA.js.map +0 -1
- package/dist/chunk-DQJTNXVS.cjs.map +0 -1
- package/dist/chunk-HC2SEH6I.js.map +0 -1
- package/dist/chunk-HOGJ5ALY.js.map +0 -1
- package/dist/chunk-KA4FEBS2.js.map +0 -1
- package/dist/chunk-L3I4TIRP.js.map +0 -1
- package/dist/chunk-UVSOSFER.js.map +0 -1
- package/dist/parser-C636QIOB.js.map +0 -1
- package/dist/parser-DMKHIV4E.js.map +0 -1
- package/dist/parser-VEY4B5CJ.cjs.map +0 -1
- package/dist/provider-5K7O3Z2O.cjs.map +0 -1
- package/dist/provider-7H4CPZYS.js.map +0 -1
- package/dist/provider-H4WWSPOV.js.map +0 -1
- package/dist/render-ISOEOMTM.js +0 -10
- package/dist/seal-676ZIAZZ.js +0 -10
- package/dist/watch-ZQUFJBFR.js.map +0 -1
- /package/dist/{-NDU7YGSS.js.map → -LE4RLXVA.js.map} +0 -0
- /package/dist/{detect-PJZMUL2Z.js.map → detect-RI2MQ33K.js.map} +0 -0
- /package/dist/{profile-io-JYGCC6XQ.js.map → profile-io-SLN4P76T.js.map} +0 -0
- /package/dist/{render-ISOEOMTM.js.map → render-25BT623I.js.map} +0 -0
- /package/dist/{seal-676ZIAZZ.js.map → seal-R4TETA4C.js.map} +0 -0
|
@@ -3,8 +3,9 @@ import {
|
|
|
3
3
|
HEADING_RATIO_H1,
|
|
4
4
|
HEADING_RATIO_H2,
|
|
5
5
|
HEADING_RATIO_H3,
|
|
6
|
-
blocksToMarkdown
|
|
7
|
-
|
|
6
|
+
blocksToMarkdown,
|
|
7
|
+
encodePng
|
|
8
|
+
} from "./chunk-UEIYETCQ.js";
|
|
8
9
|
import {
|
|
9
10
|
parsePageRange
|
|
10
11
|
} from "./chunk-MOL7MDBG.js";
|
|
@@ -12,7 +13,7 @@ import {
|
|
|
12
13
|
KordocError,
|
|
13
14
|
safeMax,
|
|
14
15
|
safeMin
|
|
15
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-HMUEU7D7.js";
|
|
16
17
|
|
|
17
18
|
// src/pdf/line-extract.ts
|
|
18
19
|
import { OPS } from "pdfjs-dist/legacy/build/pdf.mjs";
|
|
@@ -1223,10 +1224,180 @@ function normalizeUndersegmentedTable(originalCells, colXs, items) {
|
|
|
1223
1224
|
return rebuilt;
|
|
1224
1225
|
}
|
|
1225
1226
|
|
|
1227
|
+
// src/pdf/image-extract.ts
|
|
1228
|
+
import { OPS as OPS3, ImageKind } from "pdfjs-dist/legacy/build/pdf.mjs";
|
|
1229
|
+
var IMAGE_RESOLVE_TIMEOUT_MS = 5e3;
|
|
1230
|
+
function resolveImgData(page, objId) {
|
|
1231
|
+
const store = objId.startsWith("g_") ? page.commonObjs : page.objs;
|
|
1232
|
+
return new Promise((resolve) => {
|
|
1233
|
+
let done = false;
|
|
1234
|
+
const timer = setTimeout(() => {
|
|
1235
|
+
if (!done) {
|
|
1236
|
+
done = true;
|
|
1237
|
+
resolve(null);
|
|
1238
|
+
}
|
|
1239
|
+
}, IMAGE_RESOLVE_TIMEOUT_MS);
|
|
1240
|
+
try {
|
|
1241
|
+
store.get(objId, (data) => {
|
|
1242
|
+
if (!done) {
|
|
1243
|
+
done = true;
|
|
1244
|
+
clearTimeout(timer);
|
|
1245
|
+
resolve(data ?? null);
|
|
1246
|
+
}
|
|
1247
|
+
});
|
|
1248
|
+
} catch {
|
|
1249
|
+
if (!done) {
|
|
1250
|
+
done = true;
|
|
1251
|
+
clearTimeout(timer);
|
|
1252
|
+
resolve(null);
|
|
1253
|
+
}
|
|
1254
|
+
}
|
|
1255
|
+
});
|
|
1256
|
+
}
|
|
1257
|
+
var MIN_DIM = 8;
|
|
1258
|
+
var MAX_PIXELS = 36e6;
|
|
1259
|
+
var MAX_IMAGES_PER_DOC = 200;
|
|
1260
|
+
var MAX_TOTAL_IMAGE_BYTES = 128 * 1024 * 1024;
|
|
1261
|
+
function createPdfImageState() {
|
|
1262
|
+
return { imageIndex: 0, totalBytes: 0, seen: /* @__PURE__ */ new Map(), capWarned: false };
|
|
1263
|
+
}
|
|
1264
|
+
function fnv1a(data) {
|
|
1265
|
+
let h = 2166136261;
|
|
1266
|
+
for (let i = 0; i < data.length; i++) {
|
|
1267
|
+
h ^= data[i];
|
|
1268
|
+
h = Math.imul(h, 16777619);
|
|
1269
|
+
}
|
|
1270
|
+
return h >>> 0;
|
|
1271
|
+
}
|
|
1272
|
+
function toRgba(img) {
|
|
1273
|
+
const { width: w, height: h, kind, data } = img;
|
|
1274
|
+
if (!data || !w || !h) return null;
|
|
1275
|
+
const rgba = new Uint8Array(w * h * 4);
|
|
1276
|
+
if (kind === ImageKind.RGBA_32BPP) {
|
|
1277
|
+
if (data.length < w * h * 4) return null;
|
|
1278
|
+
rgba.set(data.subarray(0, w * h * 4));
|
|
1279
|
+
return rgba;
|
|
1280
|
+
}
|
|
1281
|
+
if (kind === ImageKind.RGB_24BPP) {
|
|
1282
|
+
if (data.length < w * h * 3) return null;
|
|
1283
|
+
for (let i = 0, s = 0, d = 0; i < w * h; i++, s += 3, d += 4) {
|
|
1284
|
+
rgba[d] = data[s];
|
|
1285
|
+
rgba[d + 1] = data[s + 1];
|
|
1286
|
+
rgba[d + 2] = data[s + 2];
|
|
1287
|
+
rgba[d + 3] = 255;
|
|
1288
|
+
}
|
|
1289
|
+
return rgba;
|
|
1290
|
+
}
|
|
1291
|
+
if (kind === ImageKind.GRAYSCALE_1BPP) {
|
|
1292
|
+
const stride = w + 7 >> 3;
|
|
1293
|
+
if (data.length < stride * h) return null;
|
|
1294
|
+
for (let y = 0; y < h; y++) {
|
|
1295
|
+
for (let x = 0; x < w; x++) {
|
|
1296
|
+
const bit = data[y * stride + (x >> 3)] >> 7 - (x & 7) & 1;
|
|
1297
|
+
const v = bit ? 255 : 0;
|
|
1298
|
+
const d = (y * w + x) * 4;
|
|
1299
|
+
rgba[d] = v;
|
|
1300
|
+
rgba[d + 1] = v;
|
|
1301
|
+
rgba[d + 2] = v;
|
|
1302
|
+
rgba[d + 3] = 255;
|
|
1303
|
+
}
|
|
1304
|
+
}
|
|
1305
|
+
return rgba;
|
|
1306
|
+
}
|
|
1307
|
+
return null;
|
|
1308
|
+
}
|
|
1309
|
+
async function extractPageImages(page, fnArray, argsArray, pageNumber, state, warnings) {
|
|
1310
|
+
const blocks = [];
|
|
1311
|
+
const images = [];
|
|
1312
|
+
const pageSeenIds = /* @__PURE__ */ new Set();
|
|
1313
|
+
for (let i = 0; i < fnArray.length; i++) {
|
|
1314
|
+
const op = fnArray[i];
|
|
1315
|
+
let imgData = null;
|
|
1316
|
+
let dedupeId = null;
|
|
1317
|
+
if (op === OPS3.paintImageXObject || op === OPS3.paintImageXObjectRepeat) {
|
|
1318
|
+
const objId = argsArray[i]?.[0];
|
|
1319
|
+
if (typeof objId !== "string" || pageSeenIds.has(objId)) continue;
|
|
1320
|
+
pageSeenIds.add(objId);
|
|
1321
|
+
dedupeId = objId;
|
|
1322
|
+
imgData = await resolveImgData(page, objId);
|
|
1323
|
+
} else if (op === OPS3.paintInlineImageXObject) {
|
|
1324
|
+
imgData = argsArray[i]?.[0];
|
|
1325
|
+
} else {
|
|
1326
|
+
continue;
|
|
1327
|
+
}
|
|
1328
|
+
if (!imgData?.data || !imgData.width || !imgData.height) continue;
|
|
1329
|
+
const { width: w, height: h } = imgData;
|
|
1330
|
+
if (w < MIN_DIM || h < MIN_DIM) continue;
|
|
1331
|
+
if (w * h > MAX_PIXELS) {
|
|
1332
|
+
warnings.push({ page: pageNumber, message: `\uC774\uBBF8\uC9C0 \uD06C\uAE30 \uCD08\uACFC\uB85C \uCD94\uCD9C \uC0DD\uB7B5 (${w}\xD7${h})`, code: "SKIPPED_IMAGE" });
|
|
1333
|
+
continue;
|
|
1334
|
+
}
|
|
1335
|
+
const hash = `${w}x${h}k${imgData.kind ?? "?"}h${fnv1a(imgData.data)}${dedupeId ? "" : "inline"}`;
|
|
1336
|
+
if (state.seen.has(hash)) continue;
|
|
1337
|
+
if (state.imageIndex >= MAX_IMAGES_PER_DOC || state.totalBytes >= MAX_TOTAL_IMAGE_BYTES) {
|
|
1338
|
+
if (!state.capWarned) {
|
|
1339
|
+
state.capWarned = true;
|
|
1340
|
+
warnings.push({ page: pageNumber, message: `\uC774\uBBF8\uC9C0 \uCD94\uCD9C \uC0C1\uD55C \uB3C4\uB2EC (${MAX_IMAGES_PER_DOC}\uAC1C/128MB) \u2014 \uC774\uD6C4 \uC774\uBBF8\uC9C0 \uC0DD\uB7B5`, code: "SKIPPED_IMAGE" });
|
|
1341
|
+
}
|
|
1342
|
+
continue;
|
|
1343
|
+
}
|
|
1344
|
+
const rgba = toRgba(imgData);
|
|
1345
|
+
if (!rgba) continue;
|
|
1346
|
+
const png = encodePng(w, h, rgba);
|
|
1347
|
+
state.imageIndex++;
|
|
1348
|
+
state.totalBytes += png.length;
|
|
1349
|
+
const filename = `image_${String(state.imageIndex).padStart(3, "0")}.png`;
|
|
1350
|
+
state.seen.set(hash, filename);
|
|
1351
|
+
images.push({ filename, data: png, mimeType: "image/png" });
|
|
1352
|
+
blocks.push({ type: "image", text: filename, pageNumber });
|
|
1353
|
+
}
|
|
1354
|
+
return { blocks, images };
|
|
1355
|
+
}
|
|
1356
|
+
function injectPageImageBlocks(blocks, pageImages) {
|
|
1357
|
+
if (pageImages.size === 0) return;
|
|
1358
|
+
const lastIndexForPage = /* @__PURE__ */ new Map();
|
|
1359
|
+
for (let i = 0; i < blocks.length; i++) {
|
|
1360
|
+
const p = blocks[i].pageNumber;
|
|
1361
|
+
if (p !== void 0) lastIndexForPage.set(p, i);
|
|
1362
|
+
}
|
|
1363
|
+
const pageAtIndex = /* @__PURE__ */ new Map();
|
|
1364
|
+
for (const [p, last] of lastIndexForPage) pageAtIndex.set(last, p);
|
|
1365
|
+
const result = [];
|
|
1366
|
+
const injected = /* @__PURE__ */ new Set();
|
|
1367
|
+
for (let i = 0; i < blocks.length; i++) {
|
|
1368
|
+
result.push(blocks[i]);
|
|
1369
|
+
const p = pageAtIndex.get(i);
|
|
1370
|
+
if (p !== void 0 && pageImages.has(p)) {
|
|
1371
|
+
result.push(...pageImages.get(p));
|
|
1372
|
+
injected.add(p);
|
|
1373
|
+
}
|
|
1374
|
+
}
|
|
1375
|
+
for (const p of [...pageImages.keys()].sort((a, b) => a - b)) {
|
|
1376
|
+
if (injected.has(p)) continue;
|
|
1377
|
+
let at = result.length;
|
|
1378
|
+
for (let i = 0; i < result.length; i++) {
|
|
1379
|
+
const bp = result[i].pageNumber;
|
|
1380
|
+
if (bp !== void 0 && bp > p) {
|
|
1381
|
+
at = i;
|
|
1382
|
+
break;
|
|
1383
|
+
}
|
|
1384
|
+
}
|
|
1385
|
+
result.splice(at, 0, ...pageImages.get(p));
|
|
1386
|
+
}
|
|
1387
|
+
blocks.length = 0;
|
|
1388
|
+
blocks.push(...result);
|
|
1389
|
+
}
|
|
1390
|
+
|
|
1226
1391
|
// src/pdf/quality.ts
|
|
1392
|
+
var RARE_JONG = /* @__PURE__ */ new Set([3, 5, 6, 9, 10, 11, 12, 13, 14, 15, 18, 24, 25, 26]);
|
|
1393
|
+
var MOJIBAKE_MIN_HANGUL = 30;
|
|
1394
|
+
var MOJIBAKE_MAX_NOBATCHIM = 0.15;
|
|
1395
|
+
var MOJIBAKE_MIN_RAREBATCHIM = 0.25;
|
|
1227
1396
|
function computePageQuality(page, text) {
|
|
1228
1397
|
let total = 0;
|
|
1229
1398
|
let hangul = 0;
|
|
1399
|
+
let hangulNoBatchim = 0;
|
|
1400
|
+
let hangulRareBatchim = 0;
|
|
1230
1401
|
let control = 0;
|
|
1231
1402
|
let replacement = 0;
|
|
1232
1403
|
let pua = 0;
|
|
@@ -1244,6 +1415,9 @@ function computePageQuality(page, text) {
|
|
|
1244
1415
|
}
|
|
1245
1416
|
if (code >= 44032 && code <= 55203) {
|
|
1246
1417
|
hangul++;
|
|
1418
|
+
const jong = (code - 44032) % 28;
|
|
1419
|
+
if (jong === 0) hangulNoBatchim++;
|
|
1420
|
+
else if (RARE_JONG.has(jong)) hangulRareBatchim++;
|
|
1247
1421
|
continue;
|
|
1248
1422
|
}
|
|
1249
1423
|
if (code >= 57344 && code <= 63743 || code >= 56192 && code <= 56319) {
|
|
@@ -1255,6 +1429,9 @@ function computePageQuality(page, text) {
|
|
|
1255
1429
|
const puaRatio = pua / denom;
|
|
1256
1430
|
const controlCharRatio = control / denom;
|
|
1257
1431
|
const replacementCharRatio = replacement / denom;
|
|
1432
|
+
const hangulNoBatchimRatio = hangul > 0 ? hangulNoBatchim / hangul : 0;
|
|
1433
|
+
const hangulRareBatchimRatio = hangul > 0 ? hangulRareBatchim / hangul : 0;
|
|
1434
|
+
const garbledHangul = hangul >= MOJIBAKE_MIN_HANGUL && hangulNoBatchimRatio < MOJIBAKE_MAX_NOBATCHIM && hangulRareBatchimRatio >= MOJIBAKE_MIN_RAREBATCHIM;
|
|
1258
1435
|
let needsOcr = false;
|
|
1259
1436
|
let ocrReason;
|
|
1260
1437
|
if (total < LOW_TEXT_THRESHOLD) {
|
|
@@ -1269,6 +1446,9 @@ function computePageQuality(page, text) {
|
|
|
1269
1446
|
} else if (replacementCharRatio >= HIGH_REPLACEMENT_THRESHOLD) {
|
|
1270
1447
|
needsOcr = true;
|
|
1271
1448
|
ocrReason = "high_replacement";
|
|
1449
|
+
} else if (garbledHangul) {
|
|
1450
|
+
needsOcr = true;
|
|
1451
|
+
ocrReason = "garbled_hangul";
|
|
1272
1452
|
}
|
|
1273
1453
|
return {
|
|
1274
1454
|
page,
|
|
@@ -1277,6 +1457,8 @@ function computePageQuality(page, text) {
|
|
|
1277
1457
|
controlCharRatio,
|
|
1278
1458
|
replacementCharRatio,
|
|
1279
1459
|
puaRatio,
|
|
1460
|
+
hangulNoBatchimRatio,
|
|
1461
|
+
hangulRareBatchimRatio,
|
|
1280
1462
|
needsOcr,
|
|
1281
1463
|
ocrReason
|
|
1282
1464
|
};
|
|
@@ -3568,6 +3750,9 @@ async function parsePdfDocument(buffer, options) {
|
|
|
3568
3750
|
const pageHeights = /* @__PURE__ */ new Map();
|
|
3569
3751
|
const pagesWithLargeImage = /* @__PURE__ */ new Set();
|
|
3570
3752
|
const skippedImagePages = /* @__PURE__ */ new Map();
|
|
3753
|
+
const imageState = createPdfImageState();
|
|
3754
|
+
const extractedImages = [];
|
|
3755
|
+
const pageImageBlocks = /* @__PURE__ */ new Map();
|
|
3571
3756
|
let parsedPages = 0;
|
|
3572
3757
|
for (let i = 1; i <= effectivePageCount; i++) {
|
|
3573
3758
|
if (pageFilter && !pageFilter.has(i)) continue;
|
|
@@ -3605,6 +3790,12 @@ async function parsePdfDocument(buffer, options) {
|
|
|
3605
3790
|
}
|
|
3606
3791
|
const pageBlocks = extractPageBlocksWithLines(visible, i, opList, viewport.width, viewport.height);
|
|
3607
3792
|
for (const b of pageBlocks) blocks.push(b);
|
|
3793
|
+
try {
|
|
3794
|
+
const { blocks: imgBlocks, images: pageImages } = await extractPageImages(page, opList.fnArray, opList.argsArray, i, imageState, warnings);
|
|
3795
|
+
if (imgBlocks.length > 0) pageImageBlocks.set(i, imgBlocks);
|
|
3796
|
+
extractedImages.push(...pageImages);
|
|
3797
|
+
} catch {
|
|
3798
|
+
}
|
|
3608
3799
|
let pageText = "";
|
|
3609
3800
|
for (const b of pageBlocks) {
|
|
3610
3801
|
const t = b.text || "";
|
|
@@ -3626,11 +3817,11 @@ async function parsePdfDocument(buffer, options) {
|
|
|
3626
3817
|
if (totalChars / Math.max(parsedPageCount, 1) < 10) {
|
|
3627
3818
|
if (options?.ocr) {
|
|
3628
3819
|
try {
|
|
3629
|
-
const { ocrPages } = await import("./provider-
|
|
3820
|
+
const { ocrPages } = await import("./provider-AKROB7WQ.js");
|
|
3630
3821
|
const ocrBlocks = await ocrPages(doc, options.ocr, pageFilter, effectivePageCount);
|
|
3631
3822
|
if (ocrBlocks.length > 0) {
|
|
3632
3823
|
const ocrMarkdown = ocrBlocks.map((b) => b.text || "").filter(Boolean).join("\n\n");
|
|
3633
|
-
return { markdown: ocrMarkdown, blocks: ocrBlocks, metadata, warnings, isImageBased: true, pageQuality, qualitySummary: summarizeDocumentQuality(pageQuality) };
|
|
3824
|
+
return { markdown: ocrMarkdown, blocks: ocrBlocks, metadata, warnings, isImageBased: true, pageQuality, qualitySummary: summarizeDocumentQuality(pageQuality), images: extractedImages.length > 0 ? extractedImages : void 0 };
|
|
3634
3825
|
}
|
|
3635
3826
|
} catch {
|
|
3636
3827
|
}
|
|
@@ -3646,7 +3837,8 @@ async function parsePdfDocument(buffer, options) {
|
|
|
3646
3837
|
low_text: "\uD14D\uC2A4\uD2B8\uAC00 \uAC70\uC758 \uC5C6\uB294 \uD398\uC774\uC9C0 (\uC2A4\uCE94/\uC774\uBBF8\uC9C0 \uCD94\uC815)",
|
|
3647
3838
|
high_pua: "\uAE00\uAF34 \uB9E4\uD551 \uC2E4\uD328 (PUA \uBE44\uC728 \uB192\uC74C) \u2014 \uCD94\uCD9C \uD14D\uC2A4\uD2B8 \uC2E0\uB8B0 \uBD88\uAC00",
|
|
3648
3839
|
high_control: "\uC81C\uC5B4\uBB38\uC790 \uBE44\uC728 \uB192\uC74C \u2014 \uCD94\uCD9C \uD14D\uC2A4\uD2B8 \uC2E0\uB8B0 \uBD88\uAC00",
|
|
3649
|
-
high_replacement: "\uB300\uCCB4\uBB38\uC790(U+FFFD) \uBE44\uC728 \uB192\uC74C \u2014 \uCD94\uCD9C \uD14D\uC2A4\uD2B8 \uC2E0\uB8B0 \uBD88\uAC00"
|
|
3840
|
+
high_replacement: "\uB300\uCCB4\uBB38\uC790(U+FFFD) \uBE44\uC728 \uB192\uC74C \u2014 \uCD94\uCD9C \uD14D\uC2A4\uD2B8 \uC2E0\uB8B0 \uBD88\uAC00",
|
|
3841
|
+
garbled_hangul: "\uAE00\uAF34 \uB9E4\uD551 \uC2E4\uD328 (\uD55C\uAE00 \uC790\uC18C \uBD84\uD3EC \uC774\uC0C1) \u2014 \uCD94\uCD9C \uD14D\uC2A4\uD2B8\uAC00 \uAE68\uC84C\uC744 \uC218 \uC788\uC74C"
|
|
3650
3842
|
};
|
|
3651
3843
|
for (const pq of pageQuality) {
|
|
3652
3844
|
if (!pq.needsOcr || !pq.ocrReason) continue;
|
|
@@ -3666,6 +3858,7 @@ async function parsePdfDocument(buffer, options) {
|
|
|
3666
3858
|
}
|
|
3667
3859
|
}
|
|
3668
3860
|
mergeCrossPageTables(blocks);
|
|
3861
|
+
injectPageImageBlocks(blocks, pageImageBlocks);
|
|
3669
3862
|
if (options?.formulaOcr && formulaBuffer) {
|
|
3670
3863
|
try {
|
|
3671
3864
|
await applyFormulaOcr(formulaBuffer, blocks, pageFilter, effectivePageCount, warnings, options.onProgress);
|
|
@@ -3694,7 +3887,8 @@ async function parsePdfDocument(buffer, options) {
|
|
|
3694
3887
|
warnings: warnings.length > 0 ? warnings : void 0,
|
|
3695
3888
|
isImageBased: isImageBased || void 0,
|
|
3696
3889
|
pageQuality,
|
|
3697
|
-
qualitySummary: summarizeDocumentQuality(pageQuality)
|
|
3890
|
+
qualitySummary: summarizeDocumentQuality(pageQuality),
|
|
3891
|
+
images: extractedImages.length > 0 ? extractedImages : void 0
|
|
3698
3892
|
};
|
|
3699
3893
|
} finally {
|
|
3700
3894
|
await doc.destroy().catch(() => {
|
|
@@ -3744,4 +3938,4 @@ export {
|
|
|
3744
3938
|
parsePdfDocument,
|
|
3745
3939
|
removeHeaderFooterBlocks
|
|
3746
3940
|
};
|
|
3747
|
-
//# sourceMappingURL=parser-
|
|
3941
|
+
//# sourceMappingURL=parser-TCTCSBYZ.js.map
|