kordoc 4.21.12 → 4.21.13
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 +19 -4
- package/dist/{-RX7XZ3YG.js → -4UPN43UD.js} +11 -11
- package/dist/{chunk-73GNY7ZX.js → chunk-3YD3SAQW.js} +3 -3
- package/dist/{chunk-JILWW4LO.cjs → chunk-57EOUEB4.cjs} +13 -13
- package/dist/{chunk-JILWW4LO.cjs.map → chunk-57EOUEB4.cjs.map} +1 -1
- package/dist/{chunk-GTNCTRNQ.js → chunk-6EB77P5L.js} +2 -2
- package/dist/{chunk-OOTAJZXG.js → chunk-B7CZZBKZ.js} +2 -2
- package/dist/{chunk-UB55GFHD.js → chunk-C7OK4MBX.js} +3 -3
- package/dist/{chunk-7BHPPEWK.js → chunk-DAR2TMBL.js} +10 -10
- package/dist/{chunk-4OQ3JGNI.js → chunk-DI7WHDXG.js} +2 -2
- package/dist/{chunk-ZUFZNZHO.cjs → chunk-DU2HC36X.cjs} +22 -22
- package/dist/{chunk-ZUFZNZHO.cjs.map → chunk-DU2HC36X.cjs.map} +1 -1
- package/dist/{chunk-UJARPT2G.js → chunk-FFBZG5MK.js} +2 -2
- package/dist/{chunk-2SOILEGV.js → chunk-FW7QWLBL.js} +3 -3
- package/dist/{chunk-FM33S6NN.js → chunk-HCCQTNDS.js} +2 -2
- package/dist/{chunk-D37FRGQT.js → chunk-HIUHLJQD.js} +2 -2
- package/dist/{chunk-XER4EWKZ.cjs → chunk-IS2EXA5D.cjs} +6 -6
- package/dist/{chunk-XER4EWKZ.cjs.map → chunk-IS2EXA5D.cjs.map} +1 -1
- package/dist/{chunk-SBHOOTMT.js → chunk-JGAY3BHY.js} +3 -3
- package/dist/{chunk-R6MRWKSL.js → chunk-JQBUWC6W.js} +2 -2
- package/dist/{chunk-YGQBX5D3.js → chunk-K23A2CP7.js} +2 -2
- package/dist/{chunk-IUHBMZT2.cjs → chunk-LOO3UV25.cjs} +3 -3
- package/dist/{chunk-IUHBMZT2.cjs.map → chunk-LOO3UV25.cjs.map} +1 -1
- package/dist/{chunk-4BGPR423.js → chunk-LXYM2EST.js} +2 -2
- package/dist/{chunk-AQBOKFSW.js → chunk-N4UL5NEO.js} +4 -4
- package/dist/{chunk-A6CQXV52.js → chunk-NX5A22B6.js} +2 -2
- package/dist/{chunk-QVMQ2NDS.js → chunk-QOIZF57S.js} +2 -2
- package/dist/{chunk-4QVMW26U.js → chunk-RMMMNE2V.js} +4 -4
- package/dist/{chunk-4PNWGIFX.js → chunk-UAEY6VPV.js} +6 -6
- package/dist/{chunk-5JNM2FTX.cjs → chunk-V7LTELVS.cjs} +3 -3
- package/dist/{chunk-5JNM2FTX.cjs.map → chunk-V7LTELVS.cjs.map} +1 -1
- package/dist/{chunk-OAU5DO2L.js → chunk-VC2SS3OH.js} +2 -2
- package/dist/{chunk-Y27V3EBB.js → chunk-VXNR2JYB.js} +2 -2
- package/dist/{chunk-W5EQNSO6.cjs → chunk-WPZOIIM2.cjs} +2 -2
- package/dist/{chunk-W5EQNSO6.cjs.map → chunk-WPZOIIM2.cjs.map} +1 -1
- package/dist/{chunk-W5MRFI5K.js → chunk-YJ4J6EG5.js} +2 -2
- package/dist/{chunk-PBNL6TOS.js → chunk-YM4AEOS4.js} +2 -2
- package/dist/chunks-A67IJS56.js +10 -0
- package/dist/cli.js +30 -30
- package/dist/{formula-E3BHMBU7.cjs → formula-BCWYXJPE.cjs} +9 -9
- package/dist/{formula-E3BHMBU7.cjs.map → formula-BCWYXJPE.cjs.map} +1 -1
- package/dist/{formula-AT252TKF.js → formula-N4TZPWWU.js} +4 -4
- package/dist/{formula-VUABWUUV.js → formula-ZFB6JGOW.js} +3 -3
- package/dist/{image-ocr-JYUWUJVP.js → image-ocr-4Y23NCW4.js} +9 -9
- package/dist/{image-ocr-RXNTLXZ4.js → image-ocr-7YHK7Q4C.js} +6 -6
- package/dist/{image-ocr-24253ZWW.cjs → image-ocr-RE7BFBGV.cjs} +15 -15
- package/dist/{image-ocr-24253ZWW.cjs.map → image-ocr-RE7BFBGV.cjs.map} +1 -1
- package/dist/index.cjs +276 -276
- package/dist/index.js +5 -5
- package/dist/mcp.js +22 -22
- package/dist/{model-bundle-KPTPEAK5.js → model-bundle-WISSN6YF.js} +5 -5
- package/dist/{models-34A4VIVW.js → models-SG4VHU65.js} +5 -5
- package/dist/{parse-worker-v2-HYLWPIVX.js → parse-worker-v2-VNLAK2VC.js} +33 -16
- package/dist/parse-worker-v2-VNLAK2VC.js.map +1 -0
- package/dist/{parser-JRVDYJJ6.cjs → parser-KYZD3NNB.cjs} +257 -234
- package/dist/parser-KYZD3NNB.cjs.map +1 -0
- package/dist/{parser-FQLPABMD.js → parser-V3R7TKU5.js} +37 -14
- package/dist/parser-V3R7TKU5.js.map +1 -0
- package/dist/{parser-OJAOIUTR.js → parser-VPVVJDB3.js} +34 -11
- package/dist/parser-VPVVJDB3.js.map +1 -0
- package/dist/pdf-ocr-G2SX5FKB.cjs +19 -0
- package/dist/{pdf-ocr-TLUFBJKD.cjs.map → pdf-ocr-G2SX5FKB.cjs.map} +1 -1
- package/dist/pdf-ocr-KNNBYXVO.js +22 -0
- package/dist/pdf-ocr-PP2GGLS3.js +18 -0
- package/dist/{profile-io-SFW2AOCN.js → profile-io-72YURUWT.js} +3 -3
- package/dist/{rasterize-S4X4E2CH.js → rasterize-UPE2IZLP.js} +3 -3
- package/dist/{redact-doc-ZYUGJ7BI.js → redact-doc-GW6ILR52.js} +11 -11
- package/dist/{render-I7CNQ2H7.js → render-2XLPO3ZA.js} +7 -7
- package/dist/seal-VLJCGOP7.js +10 -0
- package/dist/{setup-H6A2OJMU.js → setup-GE4JKPHY.js} +3 -3
- package/dist/visual-7NPMIPSC.js +20 -0
- package/dist/{watch-GFZYBGKG.js → watch-XBVNOG6B.js} +12 -12
- package/package.json +7 -2
- package/dist/chunks-DNAX75UI.js +0 -10
- package/dist/parse-worker-v2-HYLWPIVX.js.map +0 -1
- package/dist/parser-FQLPABMD.js.map +0 -1
- package/dist/parser-JRVDYJJ6.cjs.map +0 -1
- package/dist/parser-OJAOIUTR.js.map +0 -1
- package/dist/pdf-ocr-KIQBC3N7.js +0 -22
- package/dist/pdf-ocr-TLUFBJKD.cjs +0 -19
- package/dist/pdf-ocr-ZYCLPDS4.js +0 -18
- package/dist/seal-ZHGMRUHX.js +0 -10
- package/dist/visual-NOQSOXZ5.js +0 -20
- /package/dist/{-RX7XZ3YG.js.map → -4UPN43UD.js.map} +0 -0
- /package/dist/{chunk-73GNY7ZX.js.map → chunk-3YD3SAQW.js.map} +0 -0
- /package/dist/{chunk-GTNCTRNQ.js.map → chunk-6EB77P5L.js.map} +0 -0
- /package/dist/{chunk-OOTAJZXG.js.map → chunk-B7CZZBKZ.js.map} +0 -0
- /package/dist/{chunk-UB55GFHD.js.map → chunk-C7OK4MBX.js.map} +0 -0
- /package/dist/{chunk-7BHPPEWK.js.map → chunk-DAR2TMBL.js.map} +0 -0
- /package/dist/{chunk-4OQ3JGNI.js.map → chunk-DI7WHDXG.js.map} +0 -0
- /package/dist/{chunk-UJARPT2G.js.map → chunk-FFBZG5MK.js.map} +0 -0
- /package/dist/{chunk-2SOILEGV.js.map → chunk-FW7QWLBL.js.map} +0 -0
- /package/dist/{chunk-FM33S6NN.js.map → chunk-HCCQTNDS.js.map} +0 -0
- /package/dist/{chunk-D37FRGQT.js.map → chunk-HIUHLJQD.js.map} +0 -0
- /package/dist/{chunk-SBHOOTMT.js.map → chunk-JGAY3BHY.js.map} +0 -0
- /package/dist/{chunk-R6MRWKSL.js.map → chunk-JQBUWC6W.js.map} +0 -0
- /package/dist/{chunk-YGQBX5D3.js.map → chunk-K23A2CP7.js.map} +0 -0
- /package/dist/{chunk-4BGPR423.js.map → chunk-LXYM2EST.js.map} +0 -0
- /package/dist/{chunk-AQBOKFSW.js.map → chunk-N4UL5NEO.js.map} +0 -0
- /package/dist/{chunk-A6CQXV52.js.map → chunk-NX5A22B6.js.map} +0 -0
- /package/dist/{chunk-QVMQ2NDS.js.map → chunk-QOIZF57S.js.map} +0 -0
- /package/dist/{chunk-4QVMW26U.js.map → chunk-RMMMNE2V.js.map} +0 -0
- /package/dist/{chunk-4PNWGIFX.js.map → chunk-UAEY6VPV.js.map} +0 -0
- /package/dist/{chunk-OAU5DO2L.js.map → chunk-VC2SS3OH.js.map} +0 -0
- /package/dist/{chunk-Y27V3EBB.js.map → chunk-VXNR2JYB.js.map} +0 -0
- /package/dist/{chunk-W5MRFI5K.js.map → chunk-YJ4J6EG5.js.map} +0 -0
- /package/dist/{chunk-PBNL6TOS.js.map → chunk-YM4AEOS4.js.map} +0 -0
- /package/dist/{chunks-DNAX75UI.js.map → chunks-A67IJS56.js.map} +0 -0
- /package/dist/{formula-AT252TKF.js.map → formula-N4TZPWWU.js.map} +0 -0
- /package/dist/{formula-VUABWUUV.js.map → formula-ZFB6JGOW.js.map} +0 -0
- /package/dist/{image-ocr-JYUWUJVP.js.map → image-ocr-4Y23NCW4.js.map} +0 -0
- /package/dist/{image-ocr-RXNTLXZ4.js.map → image-ocr-7YHK7Q4C.js.map} +0 -0
- /package/dist/{model-bundle-KPTPEAK5.js.map → model-bundle-WISSN6YF.js.map} +0 -0
- /package/dist/{models-34A4VIVW.js.map → models-SG4VHU65.js.map} +0 -0
- /package/dist/{pdf-ocr-KIQBC3N7.js.map → pdf-ocr-KNNBYXVO.js.map} +0 -0
- /package/dist/{pdf-ocr-ZYCLPDS4.js.map → pdf-ocr-PP2GGLS3.js.map} +0 -0
- /package/dist/{profile-io-SFW2AOCN.js.map → profile-io-72YURUWT.js.map} +0 -0
- /package/dist/{rasterize-S4X4E2CH.js.map → rasterize-UPE2IZLP.js.map} +0 -0
- /package/dist/{redact-doc-ZYUGJ7BI.js.map → redact-doc-GW6ILR52.js.map} +0 -0
- /package/dist/{render-I7CNQ2H7.js.map → render-2XLPO3ZA.js.map} +0 -0
- /package/dist/{seal-ZHGMRUHX.js.map → seal-VLJCGOP7.js.map} +0 -0
- /package/dist/{setup-H6A2OJMU.js.map → setup-GE4JKPHY.js.map} +0 -0
- /package/dist/{visual-NOQSOXZ5.js.map → visual-7NPMIPSC.js.map} +0 -0
- /package/dist/{watch-GFZYBGKG.js.map → watch-XBVNOG6B.js.map} +0 -0
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ HWP 3.x·5.x, HWPX, HWPML, PDF, XLS·XLSX, DOCX, PPTX, PNG·JPG·WebP를 Markdow
|
|
|
12
12
|
[English](README-EN.md) · [상세 사용법](docs/usage.md) · [벤치마크](docs/benchmarks.md) · [변경 이력](CHANGELOG.md)
|
|
13
13
|
|
|
14
14
|
- 📊 **PDF 공개 벤치 종합 0.963** — opendataloader-bench 200문서. 공개 12개 파서 비교 1위(2026-09-29 기록). [측정 조건](docs/benchmarks.md)
|
|
15
|
-
- 🇰🇷 **한국 공문서 표 구조 100%** — 원본 HWPX 2,424문서의 보이는 표 **10,342개 전부 구조 일치**. [4.21.
|
|
15
|
+
- 🇰🇷 **한국 공문서 표 구조 100%** — 원본 HWPX 2,424문서의 보이는 표 **10,342개 전부 구조 일치**. [4.21.13 검증](docs/benchmarks.md)
|
|
16
16
|
|
|
17
17
|
[](https://youtu.be/Q13GmgDcIw0)
|
|
18
18
|
|
|
@@ -98,7 +98,7 @@ await writeFile("보고서.hwpx", Buffer.from(hwpx))
|
|
|
98
98
|
|
|
99
99
|
## 검증 결과
|
|
100
100
|
|
|
101
|
-
**4.21.
|
|
101
|
+
**4.21.13 · 2026-10-10 배포 검증**. 고정 코퍼스와 참조 기준으로 측정한 결과입니다.
|
|
102
102
|
|
|
103
103
|
| 대상 | 규모 | 결과 |
|
|
104
104
|
| --- | --- | --- |
|
|
@@ -111,14 +111,15 @@ await writeFile("보고서.hwpx", Buffer.from(hwpx))
|
|
|
111
111
|
|
|
112
112
|
표 구조 점수와 셀 내용·화면 재현은 별도 지표입니다. 채점 범위·제외 기준·전 벤치 문서별 비교는 [벤치마크 상세](docs/benchmarks.md)에 있습니다.
|
|
113
113
|
|
|
114
|
-
외부 PDF 벤치 **opendataloader-bench 200문서**는 4.21.
|
|
114
|
+
외부 PDF 벤치 **opendataloader-bench 200문서**는 4.21.13 배포 측정에서 기본값 종합 **0.963**, OCR 끔 **0.939**입니다. [옵션별 결과와 재현 방법](docs/benchmarks.md#pdf--markdown--opendataloader-bench)
|
|
115
115
|
|
|
116
116
|
## 최근 업데이트
|
|
117
117
|
|
|
118
|
-
최신 배포: **[4.21.
|
|
118
|
+
최신 배포: **[4.21.13](https://github.com/chrisryugj/kordoc/releases/tag/v4.21.13)** · 2026-10-10
|
|
119
119
|
|
|
120
120
|
| 버전 | 주요 변경 |
|
|
121
121
|
| --- | --- |
|
|
122
|
+
| 4.21.13 | PDF 법령 별표 쪽 넘김 행 — 번호 열이 다음 차례면 새 행, "가)" 항목도 다음 항목 머리로, 쪽을 넘는 긴 칸은 두 행을 덮는 한 칸으로; parse-worker 가 닫힌 stdout 에서 조용히 끝남(#142) (법령 별표 PDF 표 구조 일치 96.82 → 97.40%, 문서별 하락 0) |
|
|
122
123
|
| 4.21.12 | PDF 칸 숫자 줄·걸친 글상자·배분 이름표·첨자 겹침 — 칸을 채운 숫자 줄만 잇기, 서로 걸친 글상자는 글로, 숫자 행 배분 두 음절 붙이기, 붙은 첨자 겹침 허용 0.25em (PDF 어절 F1 98.86 → 98.87%·ODL 표 TEDS 0.9799 → 0.9802, 문서별 하락 0) |
|
|
123
124
|
| 4.21.11 | PDF 목차·라벨탭 상자·칸 첨자 — 목차 리더 걷기, 제목 칩 상자를 글로, 목차 칸 제목·쪽 번호 짝짓기, 서식 칸 붙은 첨자 흡수 (PDF 글 정확도 99.58 → 99.64%·OCR CER 0.0421 → 0.0412, 문서별 하락 0 — 열화 OCR 은 표본 쪽 셋 이동) |
|
|
124
125
|
| 4.21.10 | PDF 흐름도 표·괄호 풀이 — 선 격자 표를 품은 클러스터 후보 거름, 짧은 괄호 풀이 앞 줄 꺾임 이음 (PDF 어절 F1 98.84 → 98.85%·OCR CER 0.0443 → 0.0421, 문서별 하락 0) |
|
|
@@ -147,6 +148,20 @@ await writeFile("보고서.hwpx", Buffer.from(hwpx))
|
|
|
147
148
|
|
|
148
149
|
4.18.8 셀 편집은 같은 수의 비어 있지 않은 줄에 한정됩니다. 빈 줄·줄 추가/삭제·리터럴 `<br>`·모호한 매핑은 계속 건너뜁니다. [전체 변경 이력](CHANGELOG.md)
|
|
149
150
|
|
|
151
|
+
## 자주 묻는 질문
|
|
152
|
+
|
|
153
|
+
**Q. HWP·HWPX 파일을 Markdown으로 바꾸려면?**
|
|
154
|
+
`npx kordoc 문서.hwp -o 문서.md` 한 줄입니다. 한컴오피스 없이 파일을 직접 읽으며, 여러 파일은 `npx kordoc *.hwpx -d ./output`으로 한 번에 바꿉니다.
|
|
155
|
+
|
|
156
|
+
**Q. Claude·Cursor 같은 AI가 한글 문서를 읽게 하려면?**
|
|
157
|
+
`npx -y kordoc setup`으로 MCP를 등록하면 AI가 파일 경로만 받아 HWP·PDF·엑셀을 읽고, 비교하고, 양식을 채웁니다.
|
|
158
|
+
|
|
159
|
+
**Q. 인터넷이 막힌 폐쇄망에서도 되나요?**
|
|
160
|
+
됩니다. `KORDOC_OFFLINE=1`이 외부 통신을 모두 막고, OCR도 API 키 없이 로컬 CPU에서 돕니다. [폐쇄망 설치](docs/offline-deployment.md)
|
|
161
|
+
|
|
162
|
+
**Q. RAG 색인용으로 쓸 수 있나요?**
|
|
163
|
+
`--format chunks`가 제목 경로를 붙인 구조 청크와 독립 표 청크를 냅니다. 표를 HTML 없이 받으려면 `--table-format gfm`(API는 `tableFormat: "gfm"`)을 씁니다. Python·Java에서는 [Python SDK](sdk/python/README.md)·[Java SDK](sdk/java/README.md)로 부릅니다.
|
|
164
|
+
|
|
150
165
|
## 문서·보안
|
|
151
166
|
|
|
152
167
|
- [상세 사용법](docs/usage.md): 전체 CLI·MCP 도구·API·지원 포맷
|
|
@@ -54,17 +54,17 @@ import {
|
|
|
54
54
|
unknownFontWarnings,
|
|
55
55
|
usesGaejosikMunche,
|
|
56
56
|
validateHwpx
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-DAR2TMBL.js";
|
|
58
58
|
import {
|
|
59
59
|
blocksToPages
|
|
60
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-FFBZG5MK.js";
|
|
61
61
|
import {
|
|
62
62
|
applySplices,
|
|
63
63
|
buildParagraphSplices,
|
|
64
64
|
buildRangeSplices,
|
|
65
65
|
placeSealHwpx,
|
|
66
66
|
scanSectionXml
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-JGAY3BHY.js";
|
|
68
68
|
import {
|
|
69
69
|
DEFAULT_REDACT_RULES,
|
|
70
70
|
redactMarkdown,
|
|
@@ -72,7 +72,7 @@ import {
|
|
|
72
72
|
} from "./chunk-3WSNLH4B.js";
|
|
73
73
|
import {
|
|
74
74
|
blocksToChunks
|
|
75
|
-
} from "./chunk-
|
|
75
|
+
} from "./chunk-VC2SS3OH.js";
|
|
76
76
|
import {
|
|
77
77
|
SPACE_EM_FIXED,
|
|
78
78
|
SPACE_EM_FONT,
|
|
@@ -97,20 +97,20 @@ import {
|
|
|
97
97
|
renderSceneToHtml,
|
|
98
98
|
simulateWrap,
|
|
99
99
|
simulateWrapKeepWord
|
|
100
|
-
} from "./chunk-
|
|
100
|
+
} from "./chunk-UAEY6VPV.js";
|
|
101
101
|
import "./chunk-7FCNOKOR.js";
|
|
102
|
-
import "./chunk-
|
|
102
|
+
import "./chunk-YM4AEOS4.js";
|
|
103
103
|
import "./chunk-VQFA55IC.js";
|
|
104
|
-
import "./chunk-
|
|
104
|
+
import "./chunk-YJ4J6EG5.js";
|
|
105
105
|
import {
|
|
106
106
|
blocksToMarkdown,
|
|
107
107
|
flattenLayoutTables,
|
|
108
108
|
hasStructuredCellContent
|
|
109
|
-
} from "./chunk-
|
|
110
|
-
import "./chunk-
|
|
109
|
+
} from "./chunk-QOIZF57S.js";
|
|
110
|
+
import "./chunk-VXNR2JYB.js";
|
|
111
111
|
import {
|
|
112
112
|
VERSION
|
|
113
|
-
} from "./chunk-
|
|
113
|
+
} from "./chunk-LXYM2EST.js";
|
|
114
114
|
export {
|
|
115
115
|
AGENCY_COMMON_NAME,
|
|
116
116
|
BUILTIN_TEMPLATES,
|
|
@@ -204,4 +204,4 @@ export {
|
|
|
204
204
|
usesGaejosikMunche,
|
|
205
205
|
validateHwpx
|
|
206
206
|
};
|
|
207
|
-
//# sourceMappingURL=-
|
|
207
|
+
//# sourceMappingURL=-4UPN43UD.js.map
|
|
@@ -5,11 +5,11 @@ import {
|
|
|
5
5
|
HEADING_RATIO_H2,
|
|
6
6
|
HEADING_RATIO_H3,
|
|
7
7
|
tidyScriptTags
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-YM4AEOS4.js";
|
|
9
9
|
import {
|
|
10
10
|
safeMax,
|
|
11
11
|
safeMin
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-LXYM2EST.js";
|
|
13
13
|
|
|
14
14
|
// src/pdf/line-extract.ts
|
|
15
15
|
import { OPS } from "pdfjs-dist/legacy/build/pdf.mjs";
|
|
@@ -8746,4 +8746,4 @@ export {
|
|
|
8746
8746
|
UNRULED_REGION_TABLES,
|
|
8747
8747
|
mergeOcrImageRegions
|
|
8748
8748
|
};
|
|
8749
|
-
//# sourceMappingURL=chunk-
|
|
8749
|
+
//# sourceMappingURL=chunk-3YD3SAQW.js.map
|
|
@@ -10,10 +10,10 @@ var _chunkTK3FDAEEcjs = require('./chunk-TK3FDAEE.cjs');
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var _chunkDU2HC36Xcjs = require('./chunk-DU2HC36X.cjs');
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _chunkWPZOIIM2cjs = require('./chunk-WPZOIIM2.cjs');
|
|
17
17
|
|
|
18
18
|
// src/ocr/ruling-lines.ts
|
|
19
19
|
var INK_LUMA_MAX = 205;
|
|
@@ -1415,7 +1415,7 @@ var OcrEngine = class _OcrEngine {
|
|
|
1415
1415
|
]);
|
|
1416
1416
|
const sharpAny = sharpModRaw;
|
|
1417
1417
|
const sharpMod = typeof sharpAny === "function" ? sharpAny : _nullishCoalesce(sharpAny.default, () => ( sharpAny));
|
|
1418
|
-
const dir =
|
|
1418
|
+
const dir = _chunkDU2HC36Xcjs.getOcrModelsDir.call(void 0, );
|
|
1419
1419
|
const sessionOpts = {
|
|
1420
1420
|
graphOptimizationLevel: "all",
|
|
1421
1421
|
executionProviders: ["cpu"],
|
|
@@ -1423,11 +1423,11 @@ var OcrEngine = class _OcrEngine {
|
|
|
1423
1423
|
// paddle2onnx 변환 잔여물 W 로그 폭주 억제
|
|
1424
1424
|
};
|
|
1425
1425
|
const [det, rec, dictYml] = await Promise.all([
|
|
1426
|
-
ortMod.InferenceSession.create(_path.join.call(void 0, dir,
|
|
1427
|
-
ortMod.InferenceSession.create(_path.join.call(void 0, dir,
|
|
1428
|
-
_promises.readFile.call(void 0, _path.join.call(void 0, dir,
|
|
1426
|
+
ortMod.InferenceSession.create(_path.join.call(void 0, dir, _chunkDU2HC36Xcjs.OCR_DET_MODEL.filename), sessionOpts),
|
|
1427
|
+
ortMod.InferenceSession.create(_path.join.call(void 0, dir, _chunkDU2HC36Xcjs.OCR_REC_MODEL.filename), sessionOpts),
|
|
1428
|
+
_promises.readFile.call(void 0, _path.join.call(void 0, dir, _chunkDU2HC36Xcjs.OCR_REC_DICT.filename), "utf-8")
|
|
1429
1429
|
]);
|
|
1430
|
-
const dict =
|
|
1430
|
+
const dict = _chunkDU2HC36Xcjs.parseCharacterDict.call(void 0, dictYml);
|
|
1431
1431
|
if (dict.length === 0) throw new Error("OCR \uC0AC\uC804 \uD30C\uC2F1 \uC2E4\uD328 \u2014 \uBAA8\uB378 \uCE90\uC2DC\uB97C \uC0AD\uC81C \uD6C4 \uC7AC\uB2E4\uC6B4\uB85C\uB4DC\uD558\uC138\uC694");
|
|
1432
1432
|
return new _OcrEngine({ det, rec, dict, ort: ortMod, sharp: sharpMod });
|
|
1433
1433
|
}
|
|
@@ -1755,7 +1755,7 @@ async function tryImport(name, loader) {
|
|
|
1755
1755
|
return await loader();
|
|
1756
1756
|
} catch (e) {
|
|
1757
1757
|
throw new Error(
|
|
1758
|
-
`\uB0B4\uC7A5 OCR \uC744 \uC0AC\uC6A9\uD558\uB824\uBA74 optional dependency '${name}' \uC774 \uD544\uC694\uD569\uB2C8\uB2E4. \`npm install ${name}\` \uD6C4 \uB2E4\uC2DC \uC2E4\uD589\uD558\uC138\uC694.${
|
|
1758
|
+
`\uB0B4\uC7A5 OCR \uC744 \uC0AC\uC6A9\uD558\uB824\uBA74 optional dependency '${name}' \uC774 \uD544\uC694\uD569\uB2C8\uB2E4. \`npm install ${name}\` \uD6C4 \uB2E4\uC2DC \uC2E4\uD589\uD558\uC138\uC694.${_chunkWPZOIIM2cjs.OPTIONAL_DEP_INSTALL_HINT} \uC6D0\uC778: ${e.message}`
|
|
1759
1759
|
);
|
|
1760
1760
|
}
|
|
1761
1761
|
}
|
|
@@ -1869,7 +1869,7 @@ async function runPdfOcr(buffer, targets, mode, warnings, onProgress, detectTabl
|
|
|
1869
1869
|
() => Promise.resolve().then(() => _interopRequireWildcard(require("@hyzyla/pdfium")))
|
|
1870
1870
|
);
|
|
1871
1871
|
if (mode === "builtin") {
|
|
1872
|
-
await
|
|
1872
|
+
await _chunkDU2HC36Xcjs.ensureOcrModels.call(void 0, (p) => {
|
|
1873
1873
|
if (p.phase === "download" && p.downloaded === 0) {
|
|
1874
1874
|
process.stderr.write(`[kordoc-ocr] ${p.spec.name} \uB2E4\uC6B4\uB85C\uB4DC \uC911 (~${p.spec.sizeMb}MB)...
|
|
1875
1875
|
`);
|
|
@@ -1950,7 +1950,7 @@ async function ocrOnePage(page, pageNo, mode, engine, warnings, detectTables, ve
|
|
|
1950
1950
|
const x1 = r.x1 * scale - 2, x2 = r.x2 * scale + 2, y1 = (pdfH - r.y2) * scale - 2, y2 = (pdfH - r.y1) * scale + 2;
|
|
1951
1951
|
const columnRules = _nullishCoalesce(_optionalChain([ruling, 'optionalAccess', _21 => _21.verticals, 'access', _22 => _22.filter, 'call', _23 => _23((s) => Math.min(s.x1, s.x2) >= x1 && Math.max(s.x1, s.x2) <= x2 && Math.min(s.y1, s.y2) >= y1 && Math.max(s.y1, s.y2) <= y2), 'access', _24 => _24.length]), () => ( 0));
|
|
1952
1952
|
if (columnRules < 2) {
|
|
1953
|
-
for (const b of blocks) if (b.type === "table")
|
|
1953
|
+
for (const b of blocks) if (b.type === "table") _chunkDU2HC36Xcjs.UNRULED_REGION_TABLES.add(b);
|
|
1954
1954
|
}
|
|
1955
1955
|
return blocks;
|
|
1956
1956
|
});
|
|
@@ -2083,14 +2083,14 @@ function ocrItemsToBlocks(items, pageNumber, pdfW, pdfH, scale, extraLines, dete
|
|
|
2083
2083
|
...xs[i].space ? { hasSpaceBefore: true } : {}
|
|
2084
2084
|
};
|
|
2085
2085
|
});
|
|
2086
|
-
return
|
|
2086
|
+
return _chunkDU2HC36Xcjs.extractPageBlocksWithLines.call(void 0, norm, pageNumber, opList, pdfW, pdfH, extraLines, detectTables);
|
|
2087
2087
|
}
|
|
2088
2088
|
async function tryImport2(name, loader) {
|
|
2089
2089
|
try {
|
|
2090
2090
|
return await loader();
|
|
2091
2091
|
} catch (e) {
|
|
2092
2092
|
throw new Error(
|
|
2093
|
-
`OCR \uC744 \uC0AC\uC6A9\uD558\uB824\uBA74 optional dependency '${name}' \uC774 \uD544\uC694\uD569\uB2C8\uB2E4. \`npm install ${name}\` \uD6C4 \uB2E4\uC2DC \uC2E4\uD589\uD558\uC138\uC694.${
|
|
2093
|
+
`OCR \uC744 \uC0AC\uC6A9\uD558\uB824\uBA74 optional dependency '${name}' \uC774 \uD544\uC694\uD569\uB2C8\uB2E4. \`npm install ${name}\` \uD6C4 \uB2E4\uC2DC \uC2E4\uD589\uD558\uC138\uC694.${_chunkWPZOIIM2cjs.OPTIONAL_DEP_INSTALL_HINT} \uC6D0\uC778: ${e.message}`
|
|
2094
2094
|
);
|
|
2095
2095
|
}
|
|
2096
2096
|
}
|
|
@@ -2130,4 +2130,4 @@ function bgraToRgba(bgra) {
|
|
|
2130
2130
|
|
|
2131
2131
|
|
|
2132
2132
|
exports.getOcrEngine = getOcrEngine; exports.detectRulingLines = detectRulingLines; exports.rulingToPdfLines = rulingToPdfLines; exports.deskewPage = deskewPage; exports.MAX_OCR_PIXELS = MAX_OCR_PIXELS; exports.runPdfOcr = runPdfOcr; exports.groupOcrLines = groupOcrLines; exports.ocrItemsToBlocks = ocrItemsToBlocks;
|
|
2133
|
-
//# sourceMappingURL=chunk-
|
|
2133
|
+
//# sourceMappingURL=chunk-57EOUEB4.cjs.map
|