kordoc 4.12.2 → 4.12.3
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 +12 -1
- package/dist/{-EZH6NKTE.js → -FWGDIOV4.js} +8 -8
- package/dist/{chunk-OEYECZGV.js → chunk-2DAFWDV2.js} +9 -5
- package/dist/chunk-2DAFWDV2.js.map +1 -0
- package/dist/{chunk-5RPYBC2Q.js → chunk-3KQOI6R6.js} +27 -2
- package/dist/chunk-3KQOI6R6.js.map +1 -0
- package/dist/{chunk-DBGEUDBY.js → chunk-6L3B44DH.js} +2 -2
- package/dist/{chunk-ONNAHSPV.cjs → chunk-7BIXTQZ3.cjs} +14 -10
- package/dist/chunk-7BIXTQZ3.cjs.map +1 -0
- package/dist/{chunk-IOJX4Q63.js → chunk-B63QEHYL.js} +3 -3
- package/dist/{chunk-JCMBQC5N.js → chunk-BAZMKQZW.js} +2 -2
- package/dist/{chunk-V5BUPZ6I.cjs → chunk-BOATAEXU.cjs} +7 -4
- package/dist/chunk-BOATAEXU.cjs.map +1 -0
- package/dist/{chunk-KX7IYCCZ.js → chunk-CKYDP34A.js} +3 -3
- package/dist/{chunk-7XUXSDH5.js → chunk-DUGUCM7K.js} +9 -5
- package/dist/chunk-DUGUCM7K.js.map +1 -0
- package/dist/{chunk-2LKYJ4G3.cjs → chunk-FFITS3NY.cjs} +6 -6
- package/dist/{chunk-2LKYJ4G3.cjs.map → chunk-FFITS3NY.cjs.map} +1 -1
- package/dist/{chunk-2B7OIEJJ.js → chunk-HB56YANA.js} +5 -2
- package/dist/chunk-HB56YANA.js.map +1 -0
- package/dist/{chunk-2HBYWA5X.js → chunk-IC6HHXFL.js} +2 -2
- package/dist/{chunk-LD2K4K5V.js → chunk-INFYDSZL.js} +111 -22
- package/dist/chunk-INFYDSZL.js.map +1 -0
- package/dist/{chunk-62IU4NV3.cjs → chunk-ISCI5LKN.cjs} +2 -2
- package/dist/{chunk-62IU4NV3.cjs.map → chunk-ISCI5LKN.cjs.map} +1 -1
- package/dist/{chunk-XXDZ2KTW.js → chunk-KLO6RHX2.js} +2 -2
- package/dist/{chunk-MUYU4JI5.js → chunk-KRE2SREV.js} +2 -2
- package/dist/{chunk-QBCMFNHS.js → chunk-OJDMMZ5Z.js} +2 -2
- package/dist/{chunk-UL2MDA5C.js → chunk-PL4V523B.js} +3 -3
- package/dist/{chunk-FBLMVHDK.js → chunk-PUZZFYLV.js} +2 -2
- package/dist/{chunk-2LO525TL.js → chunk-SJEPQOVW.js} +2 -2
- package/dist/{chunk-QM2RSJ2S.js → chunk-TWKXX343.js} +3 -3
- package/dist/{chunk-2LPBIW2B.cjs → chunk-W3H2H55O.cjs} +3 -3
- package/dist/{chunk-2LPBIW2B.cjs.map → chunk-W3H2H55O.cjs.map} +1 -1
- package/dist/{chunk-FVBR7SC3.js → chunk-YBZJMAE2.js} +2 -2
- package/dist/{chunk-Q6ETEJFK.js → chunk-ZASGH5EN.js} +5 -2
- package/dist/chunk-ZASGH5EN.js.map +1 -0
- package/dist/chunks-VICNQMNE.js +10 -0
- package/dist/cli.js +30 -23
- package/dist/cli.js.map +1 -1
- package/dist/{formula-NW33S4TA.js → formula-R7IWAAYR.js} +3 -3
- package/dist/{formula-6RQX4NMJ.js → formula-YJWKEPUK.js} +4 -4
- package/dist/{formula-NBEO6CFC.cjs → formula-ZYHUXTK5.cjs} +9 -9
- package/dist/{formula-NBEO6CFC.cjs.map → formula-ZYHUXTK5.cjs.map} +1 -1
- package/dist/{image-ocr-V4KY373B.cjs → image-ocr-6O6ZXKUD.cjs} +11 -11
- package/dist/{image-ocr-V4KY373B.cjs.map → image-ocr-6O6ZXKUD.cjs.map} +1 -1
- package/dist/{image-ocr-SO56VETS.js → image-ocr-G4JVF2UH.js} +7 -7
- package/dist/{image-ocr-CAVU2TNZ.js → image-ocr-OLTSKQWD.js} +5 -5
- package/dist/index.cjs +455 -366
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +17 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.js +107 -18
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +20 -17
- package/dist/mcp.js.map +1 -1
- package/dist/{model-bundle-EIJF34DR.js → model-bundle-IFD2D5CW.js} +5 -5
- package/dist/{models-6V4CPQXC.js → models-FJ3IUNTB.js} +5 -5
- package/dist/{parser-OBHNXEQM.js → parser-I7TC35V6.js} +31 -10
- package/dist/parser-I7TC35V6.js.map +1 -0
- package/dist/{parser-GIREMEPD.js → parser-JRT3B6OK.js} +31 -10
- package/dist/parser-JRT3B6OK.js.map +1 -0
- package/dist/{parser-OMT25WH2.cjs → parser-YLLIYOIZ.cjs} +59 -38
- package/dist/parser-YLLIYOIZ.cjs.map +1 -0
- package/dist/pdf-ocr-ADUP2LPU.cjs +14 -0
- package/dist/{pdf-ocr-TFYVK4FI.cjs.map → pdf-ocr-ADUP2LPU.cjs.map} +1 -1
- package/dist/pdf-ocr-ATJTB2B3.js +13 -0
- package/dist/pdf-ocr-P75KSZFV.js +16 -0
- package/dist/{profile-io-PZVMM66V.js → profile-io-BPJQQZLQ.js} +3 -3
- package/dist/{rasterize-NRWP2C6L.js → rasterize-ALCNU53T.js} +2 -2
- package/dist/render-MDLTQUUV.js +10 -0
- package/dist/seal-K4K3KPE3.js +10 -0
- package/dist/{setup-V55AJP6H.js → setup-O2DALZKF.js} +3 -3
- package/dist/{watch-7CQSMDDP.js → watch-GPWYJAS2.js} +9 -9
- package/package.json +1 -1
- package/dist/chunk-2B7OIEJJ.js.map +0 -1
- package/dist/chunk-5RPYBC2Q.js.map +0 -1
- package/dist/chunk-7XUXSDH5.js.map +0 -1
- package/dist/chunk-LD2K4K5V.js.map +0 -1
- package/dist/chunk-OEYECZGV.js.map +0 -1
- package/dist/chunk-ONNAHSPV.cjs.map +0 -1
- package/dist/chunk-Q6ETEJFK.js.map +0 -1
- package/dist/chunk-V5BUPZ6I.cjs.map +0 -1
- package/dist/chunks-TT7ZE5QQ.js +0 -10
- package/dist/parser-GIREMEPD.js.map +0 -1
- package/dist/parser-OBHNXEQM.js.map +0 -1
- package/dist/parser-OMT25WH2.cjs.map +0 -1
- package/dist/pdf-ocr-IRXQ5GBM.js +0 -13
- package/dist/pdf-ocr-SL4GCOGS.js +0 -16
- package/dist/pdf-ocr-TFYVK4FI.cjs +0 -14
- package/dist/render-V5ZPTZQ7.js +0 -10
- package/dist/seal-LVG2DGAB.js +0 -10
- /package/dist/{-EZH6NKTE.js.map → -FWGDIOV4.js.map} +0 -0
- /package/dist/{chunk-DBGEUDBY.js.map → chunk-6L3B44DH.js.map} +0 -0
- /package/dist/{chunk-IOJX4Q63.js.map → chunk-B63QEHYL.js.map} +0 -0
- /package/dist/{chunk-JCMBQC5N.js.map → chunk-BAZMKQZW.js.map} +0 -0
- /package/dist/{chunk-KX7IYCCZ.js.map → chunk-CKYDP34A.js.map} +0 -0
- /package/dist/{chunk-2HBYWA5X.js.map → chunk-IC6HHXFL.js.map} +0 -0
- /package/dist/{chunk-XXDZ2KTW.js.map → chunk-KLO6RHX2.js.map} +0 -0
- /package/dist/{chunk-MUYU4JI5.js.map → chunk-KRE2SREV.js.map} +0 -0
- /package/dist/{chunk-QBCMFNHS.js.map → chunk-OJDMMZ5Z.js.map} +0 -0
- /package/dist/{chunk-UL2MDA5C.js.map → chunk-PL4V523B.js.map} +0 -0
- /package/dist/{chunk-FBLMVHDK.js.map → chunk-PUZZFYLV.js.map} +0 -0
- /package/dist/{chunk-2LO525TL.js.map → chunk-SJEPQOVW.js.map} +0 -0
- /package/dist/{chunk-QM2RSJ2S.js.map → chunk-TWKXX343.js.map} +0 -0
- /package/dist/{chunk-FVBR7SC3.js.map → chunk-YBZJMAE2.js.map} +0 -0
- /package/dist/{chunks-TT7ZE5QQ.js.map → chunks-VICNQMNE.js.map} +0 -0
- /package/dist/{formula-NW33S4TA.js.map → formula-R7IWAAYR.js.map} +0 -0
- /package/dist/{formula-6RQX4NMJ.js.map → formula-YJWKEPUK.js.map} +0 -0
- /package/dist/{image-ocr-SO56VETS.js.map → image-ocr-G4JVF2UH.js.map} +0 -0
- /package/dist/{image-ocr-CAVU2TNZ.js.map → image-ocr-OLTSKQWD.js.map} +0 -0
- /package/dist/{model-bundle-EIJF34DR.js.map → model-bundle-IFD2D5CW.js.map} +0 -0
- /package/dist/{models-6V4CPQXC.js.map → models-FJ3IUNTB.js.map} +0 -0
- /package/dist/{pdf-ocr-IRXQ5GBM.js.map → pdf-ocr-ATJTB2B3.js.map} +0 -0
- /package/dist/{pdf-ocr-SL4GCOGS.js.map → pdf-ocr-P75KSZFV.js.map} +0 -0
- /package/dist/{profile-io-PZVMM66V.js.map → profile-io-BPJQQZLQ.js.map} +0 -0
- /package/dist/{rasterize-NRWP2C6L.js.map → rasterize-ALCNU53T.js.map} +0 -0
- /package/dist/{render-V5ZPTZQ7.js.map → render-MDLTQUUV.js.map} +0 -0
- /package/dist/{seal-LVG2DGAB.js.map → seal-K4K3KPE3.js.map} +0 -0
- /package/dist/{setup-V55AJP6H.js.map → setup-O2DALZKF.js.map} +0 -0
- /package/dist/{watch-7CQSMDDP.js.map → watch-GPWYJAS2.js.map} +0 -0
package/README.md
CHANGED
|
@@ -89,7 +89,18 @@ MCP 등록 대신 스킬(SKILL.md) 형태로 쓰려면:
|
|
|
89
89
|
|
|
90
90
|
---
|
|
91
91
|
|
|
92
|
-
## v4.12.
|
|
92
|
+
## v4.12.3 변경사항
|
|
93
|
+
|
|
94
|
+
공문서 작성 쪽 라운드. 실결재 기안문 206건·보고서 337건의 항목부호 단계별 글꼴을 실측해 **위계 폰트 옵션**을 넣고, 표기법 검수의 쌍점·날짜 룰 오탐을 법정 서식 근거로 좁혔습니다. 별표 코퍼스 3차(183쌍)를 더해 게이트 모수는 hwpx ~1,390·pdf ~950·hwp쌍 ~860 입니다.
|
|
95
|
+
|
|
96
|
+
- **🔤 위계 폰트 `levels`**: 항목부호 단계(0~7)마다 글꼴·크기·굵기를 지정합니다 — `--levels "0=HY견고딕/17/bold,1=한컴돋움/15/bold,2=휴먼명조/14"`, MCP `levels`. 실측: 법정 8단계(1. 가. 1))는 본문과 동일이 90% 라 기본값은 그대로이고, 전자결재 기안문의 □/ㅇ/- 계열은 □ HY견고딕 +2~3pt 굵게 · ㅇ 한컴돋움 굵게 · - 휴먼명조가 지배 관행입니다(`docs/gongmunseo-reference.md` 2.7). 내어쓰기 폭도 그 단계 글자 크기로 맞춥니다. 미지정이면 산출물 불변.
|
|
97
|
+
- **📝 표기법 룰 좁힘**: `COLON_SPACE` 는 표 셀을 건너뜁니다 — 법정 별지서식 자체가 "성 명 :" 라벨 셀을 쓰므로(서식 595건의 표 셀 801건 전부 라벨) 규칙 대상이 아닙니다. 본문의 "일 시 : 값"(기안문 206건 중 100건, 414건)은 편람상 위반이라 그대로 경고합니다. HTML 태그·마크다운 강조 닫힘 뒤 쌍점("성명:</td>", "과정:** 붙임") 오탐도 제거. `DATE_NO_SPACE` 는 법제처 연혁 표기(`<개정 2012.2.14>`·`삭제 <2016.2.29.>`·`[시행일:2017.9.8.]`)를 제외합니다(서식 156건 → 10건). 기안문의 문서번호 인용 "○○과-123(2026.7.1.)호"(103건)는 편람 날짜 표기 위반이라 유지.
|
|
98
|
+
- **📄 PDF 가운뎃점**: 한컴 PDF 가 가운뎃점(ㆍ)을 조합형 아래아(U+119E)로 내던 것을 되돌립니다(별지서식 573쌍 실측 340자·41문서).
|
|
99
|
+
- **📄 PDF 1×1 표 줄 보존**: 선서문 안쪽 상자처럼 중첩표 없는 1×1 표는 줄마다 문단으로 내어 "선 서 나는 헌법을 …" 처럼 제목 줄이 본문에 붙지 않습니다(표 셀 줄바꿈 보존 정책과 정합).
|
|
100
|
+
- **📄 PDF 제목 아래 틀**: 테두리 없는 1칸 틀(별표 1×1 프레임·선서문 바깥 틀)을 "페이지 반복 클립" 으로 가르려던 가설은 반증됐고(본문 영역 클립은 쪽마다 좌표가 다르고 별표는 1쪽), 대신 **제목 아래(윗변 ≥ 20%)·본문 폭(≥ 60%)·위에 글이 있는** 컨테이너를 틀로 봅니다. 채용공고 2단 상자는 폭 조건으로 제외(pdf-table-gt 게이트 유지).
|
|
101
|
+
- **🖋️ HWP 결재 기호 하나 더**: 한컴 PDF 실렌더로 확인한 네모 안 "인"(U+F00E1, HWP5 A0E1)을 "(인)" 으로 냅니다. HWP5 하이픈 제어문자(0x18)는 한컴이 그리지 않으므로("60g/㎡") 더 이상 "-" 를 내지 않습니다.
|
|
102
|
+
- **📊 별표 코퍼스 3차**: `licbyl-byl2/` 183쌍(seed 20260907). 하위 30건 분해 — 1×1 틀 PDF 미감지 8 · HWP 레이아웃 해체 vs PDF 1열 유지 15 · 구조 차 7(수식 셀·쪽 경계 셀 분할·줄바꿈, 파서 결함 없음). HWP↔PDF 셀 일치 별표 0.728 → 0.746, 3차 0.772 → 0.787, 서식 0.965 유지.
|
|
103
|
+
|
|
93
104
|
|
|
94
105
|
별지서식 라운드 2. 코퍼스를 서식 279쌍·별표 90쌍 더 모아(총 1,995파일) HWP·HWPX·PDF 세 파서가 **같은 IR 모양**을 내도록 맞췄습니다. HWP↔PDF 셀 텍스트 일치 0.927 → 0.965, PDF 표 GT cellExact 0.945 → 0.980 을 실측했고 게이트 플로어를 그 수치로 올렸습니다.
|
|
95
106
|
|
|
@@ -56,7 +56,7 @@ import {
|
|
|
56
56
|
unknownFontWarnings,
|
|
57
57
|
usesGaejosikMunche,
|
|
58
58
|
validateHwpx
|
|
59
|
-
} from "./chunk-
|
|
59
|
+
} from "./chunk-INFYDSZL.js";
|
|
60
60
|
import "./chunk-7FCNOKOR.js";
|
|
61
61
|
import "./chunk-N3DLQ2YH.js";
|
|
62
62
|
import "./chunk-MOL7MDBG.js";
|
|
@@ -66,7 +66,7 @@ import {
|
|
|
66
66
|
buildRangeSplices,
|
|
67
67
|
placeSealHwpx,
|
|
68
68
|
scanSectionXml
|
|
69
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-CKYDP34A.js";
|
|
70
70
|
import {
|
|
71
71
|
DEFAULT_REDACT_RULES,
|
|
72
72
|
redactMarkdown,
|
|
@@ -74,10 +74,10 @@ import {
|
|
|
74
74
|
} from "./chunk-DZIXKL7E.js";
|
|
75
75
|
import {
|
|
76
76
|
blocksToChunks
|
|
77
|
-
} from "./chunk-
|
|
77
|
+
} from "./chunk-6L3B44DH.js";
|
|
78
78
|
import {
|
|
79
79
|
blocksToMarkdown
|
|
80
|
-
} from "./chunk-
|
|
80
|
+
} from "./chunk-ZASGH5EN.js";
|
|
81
81
|
import {
|
|
82
82
|
SPACE_EM_FIXED,
|
|
83
83
|
SPACE_EM_FONT,
|
|
@@ -87,11 +87,11 @@ import {
|
|
|
87
87
|
renderHwpxToSvg,
|
|
88
88
|
simulateWrap,
|
|
89
89
|
simulateWrapKeepWord
|
|
90
|
-
} from "./chunk-
|
|
91
|
-
import "./chunk-
|
|
90
|
+
} from "./chunk-B63QEHYL.js";
|
|
91
|
+
import "./chunk-YBZJMAE2.js";
|
|
92
92
|
import {
|
|
93
93
|
VERSION
|
|
94
|
-
} from "./chunk-
|
|
94
|
+
} from "./chunk-PUZZFYLV.js";
|
|
95
95
|
export {
|
|
96
96
|
BUILTIN_TEMPLATES,
|
|
97
97
|
DEFAULT_REDACT_RULES,
|
|
@@ -169,4 +169,4 @@ export {
|
|
|
169
169
|
usesGaejosikMunche,
|
|
170
170
|
validateHwpx
|
|
171
171
|
};
|
|
172
|
-
//# sourceMappingURL=-
|
|
172
|
+
//# sourceMappingURL=-FWGDIOV4.js.map
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
safeMax,
|
|
9
9
|
safeMin
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-PUZZFYLV.js";
|
|
11
11
|
|
|
12
12
|
// src/pdf/image-regions.ts
|
|
13
13
|
import { OPS } from "pdfjs-dist/legacy/build/pdf.mjs";
|
|
@@ -963,6 +963,9 @@ function linesIntersect(a, b) {
|
|
|
963
963
|
var CLIP_EDGE_TOL = 1.5;
|
|
964
964
|
var CLIP_MIN_GROUP = 2;
|
|
965
965
|
var CLIP_MAX_PAGE_FRAC = 0.75;
|
|
966
|
+
var TITLED_FRAME_MIN_TOP = 0.2;
|
|
967
|
+
var TITLED_FRAME_MIN_WIDTH = 0.6;
|
|
968
|
+
var HEADER_BAND = 0.08;
|
|
966
969
|
var CLIP_MIN_W2 = 4;
|
|
967
970
|
var CLIP_MIN_H2 = 2;
|
|
968
971
|
var STROKE_NEAR = 2;
|
|
@@ -1008,7 +1011,7 @@ function edgeStroked(lines, dir, pos, a1, a2) {
|
|
|
1008
1011
|
}
|
|
1009
1012
|
return false;
|
|
1010
1013
|
}
|
|
1011
|
-
function buildClipCellGrids(rects, strokedH, strokedV, pageWidth, pageHeight) {
|
|
1014
|
+
function buildClipCellGrids(rects, strokedH, strokedV, pageWidth, pageHeight, textPoints = []) {
|
|
1012
1015
|
const pageArea = pageWidth * pageHeight;
|
|
1013
1016
|
const sameRect = (a, b) => Math.abs(a.x1 - b.x1) <= CLIP_EDGE_TOL && Math.abs(a.x2 - b.x2) <= CLIP_EDGE_TOL && Math.abs(a.y1 - b.y1) <= CLIP_EDGE_TOL && Math.abs(a.y2 - b.y2) <= CLIP_EDGE_TOL;
|
|
1014
1017
|
const cells = [];
|
|
@@ -1056,7 +1059,8 @@ function buildClipCellGrids(rects, strokedH, strokedV, pageWidth, pageHeight) {
|
|
|
1056
1059
|
const groupSize = (i) => groups.get(find(i))?.length ?? 0;
|
|
1057
1060
|
const isGridMember = (i) => groupSize(i) >= CLIP_MIN_GROUP;
|
|
1058
1061
|
const framed = (r) => edgeStroked(strokedH, "h", r.y1, r.x1, r.x2) && edgeStroked(strokedH, "h", r.y2, r.x1, r.x2) && edgeStroked(strokedV, "v", r.x1, r.y1, r.y2) && edgeStroked(strokedV, "v", r.x2, r.y1, r.y2);
|
|
1059
|
-
const
|
|
1062
|
+
const titledFrame = (r) => r.y1 >= pageHeight * TITLED_FRAME_MIN_TOP && r.x2 - r.x1 >= pageWidth * TITLED_FRAME_MIN_WIDTH && textPoints.some((p) => p.y < r.y1 && p.y > pageHeight * HEADER_BAND && p.x >= r.x1 - CLIP_EDGE_TOL && p.x <= r.x2 + CLIP_EDGE_TOL) && textPoints.some((p) => p.x > r.x1 && p.x < r.x2 && p.y > r.y1 && p.y < r.y2);
|
|
1063
|
+
const loneFrame = (i) => isContainer[i] && !isGridMember(i) && (framed(cells[i]) || titledFrame(cells[i]));
|
|
1060
1064
|
const parentAttachable = (i) => parent[i] >= 0 && (isGridMember(parent[i]) || loneFrame(parent[i]));
|
|
1061
1065
|
const onlyChild = (i) => parent[i] >= 0 && parent.filter((p) => p === parent[i]).length === 1;
|
|
1062
1066
|
const grids = [];
|
|
@@ -3373,7 +3377,7 @@ function extractPageBlocksWithLines(items, pageNum, opList, pageWidth, pageHeigh
|
|
|
3373
3377
|
if (items.length === 0) return [];
|
|
3374
3378
|
const extracted = extractLines(opList.fnArray, opList.argsArray);
|
|
3375
3379
|
let { horizontals, verticals } = extracted;
|
|
3376
|
-
const clipResult = detectTables ? buildClipCellGrids(extracted.clipRects, horizontals, verticals, pageWidth, pageHeight) : { grids: [], containers: [] };
|
|
3380
|
+
const clipResult = detectTables ? buildClipCellGrids(extracted.clipRects, horizontals, verticals, pageWidth, pageHeight, items.map((it) => ({ x: it.x + it.w / 2, y: it.y + it.h / 2 }))) : { grids: [], containers: [] };
|
|
3377
3381
|
const clipGrids = clipResult.grids;
|
|
3378
3382
|
if (extraLines) {
|
|
3379
3383
|
horizontals = horizontals.concat(extraLines.horizontals);
|
|
@@ -3942,4 +3946,4 @@ export {
|
|
|
3942
3946
|
extractPageBlocksWithLines,
|
|
3943
3947
|
mergeCrossPageTables
|
|
3944
3948
|
};
|
|
3945
|
-
//# sourceMappingURL=chunk-
|
|
3949
|
+
//# sourceMappingURL=chunk-2DAFWDV2.js.map
|