kordoc 4.21.9 → 4.21.11
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 +16 -12
- package/dist/{-QXIJTZUP.js → -VONBNRVD.js} +11 -11
- package/dist/{chunk-6EKJ6J47.js → chunk-2LFYBDX2.js} +2 -2
- package/dist/{chunk-TAPXIXAD.js → chunk-4U5ISDBU.js} +3 -3
- package/dist/{chunk-QACOMAEX.js → chunk-4UMTGSRH.js} +3 -3
- package/dist/{chunk-LORBG6MG.cjs → chunk-5JRL2VQ6.cjs} +56 -30
- package/dist/chunk-5JRL2VQ6.cjs.map +1 -0
- package/dist/{chunk-FWCKZXJY.js → chunk-5MNDRMFV.js} +2 -2
- package/dist/{chunk-MGSUORGY.js → chunk-6FUFKXB2.js} +50 -25
- package/dist/chunk-6FUFKXB2.js.map +1 -0
- package/dist/{chunk-EFTJ35T6.js → chunk-B6UZYIAR.js} +2 -2
- package/dist/{chunk-EG3UE3BC.cjs → chunk-BVWRQNWQ.cjs} +3 -3
- package/dist/{chunk-EG3UE3BC.cjs.map → chunk-BVWRQNWQ.cjs.map} +1 -1
- package/dist/{chunk-B6QMZ5H6.js → chunk-FUXOABQZ.js} +31 -5
- package/dist/chunk-FUXOABQZ.js.map +1 -0
- package/dist/{chunk-FRM6WYNC.js → chunk-GLZ4XPKX.js} +2 -2
- package/dist/{chunk-BJP4IWGE.js → chunk-J772QFJ5.js} +2 -2
- package/dist/{chunk-LMICG6MM.js → chunk-JDEWFE46.js} +2 -2
- package/dist/{chunk-V4XBYDKE.cjs → chunk-KGA6PQUQ.cjs} +13 -13
- package/dist/{chunk-V4XBYDKE.cjs.map → chunk-KGA6PQUQ.cjs.map} +1 -1
- package/dist/{chunk-O53OIPMY.js → chunk-L652BNX6.js} +2 -2
- package/dist/{chunk-O53OIPMY.js.map → chunk-L652BNX6.js.map} +1 -1
- package/dist/{chunk-HE5XFKH2.js → chunk-LZGPS3FH.js} +2 -2
- package/dist/{chunk-HE5XFKH2.js.map → chunk-LZGPS3FH.js.map} +1 -1
- package/dist/{chunk-5NO6L655.cjs → chunk-MZPJOJO2.cjs} +3 -3
- package/dist/{chunk-5NO6L655.cjs.map → chunk-MZPJOJO2.cjs.map} +1 -1
- package/dist/{chunk-62HRSQL3.js → chunk-N2GL4NZH.js} +2 -2
- package/dist/{chunk-ZK5L7VPR.js → chunk-NI3RMQTS.js} +6 -6
- package/dist/{chunk-B6WEXUMV.js → chunk-NMXMBYRP.js} +2 -2
- package/dist/{chunk-HDPQ7QBF.js → chunk-OEF4V654.js} +3 -3
- package/dist/{chunk-FVCIEW26.cjs → chunk-OZG342GJ.cjs} +84 -59
- package/dist/chunk-OZG342GJ.cjs.map +1 -0
- package/dist/{chunk-MWH3WQ2C.js → chunk-PUAKSOZD.js} +51 -26
- package/dist/chunk-PUAKSOZD.js.map +1 -0
- package/dist/{chunk-2PSKHMH2.js → chunk-Q2F3ZGGS.js} +4 -4
- package/dist/{chunk-EBYYQO6A.js → chunk-S7J7VI4R.js} +10 -10
- package/dist/{chunk-EXCGDQPB.js → chunk-SWV27B56.js} +28 -4
- package/dist/chunk-SWV27B56.js.map +1 -0
- package/dist/{chunk-TS4GX4WP.js → chunk-WAYSJYK4.js} +2 -2
- package/dist/{chunk-R6BSCIZR.cjs → chunk-WSSCBJSU.cjs} +2 -2
- package/dist/{chunk-R6BSCIZR.cjs.map → chunk-WSSCBJSU.cjs.map} +1 -1
- package/dist/{chunk-UKCOUVER.js → chunk-YRWSOFJW.js} +2 -2
- package/dist/{chunk-UK4UHB23.js → chunk-ZTNZ4UZM.js} +5 -3
- package/dist/{chunk-UK4UHB23.js.map → chunk-ZTNZ4UZM.js.map} +1 -1
- package/dist/chunks-CKWDRCT2.js +10 -0
- package/dist/cli.js +30 -30
- package/dist/{formula-3REO53LY.cjs → formula-AYKY6JN4.cjs} +9 -9
- package/dist/{formula-3REO53LY.cjs.map → formula-AYKY6JN4.cjs.map} +1 -1
- package/dist/{formula-KSDCEDLB.js → formula-E7IFGURT.js} +4 -4
- package/dist/{formula-HJ54W6OC.js → formula-ROYY4OPC.js} +3 -3
- package/dist/{image-ocr-Q7QV4L4N.cjs → image-ocr-CVVWQHOV.cjs} +15 -15
- package/dist/{image-ocr-Q7QV4L4N.cjs.map → image-ocr-CVVWQHOV.cjs.map} +1 -1
- package/dist/{image-ocr-YYOYHZDE.js → image-ocr-SIO5GLQK.js} +9 -9
- package/dist/{image-ocr-IFL6L5TW.js → image-ocr-YZHJHHPA.js} +6 -6
- package/dist/index.cjs +276 -276
- package/dist/index.js +5 -5
- package/dist/mcp.js +22 -22
- package/dist/{model-bundle-BY4E4RB4.js → model-bundle-5JREYZVZ.js} +5 -5
- package/dist/{models-KN7YXMZR.js → models-MW56BJEC.js} +5 -5
- package/dist/{parse-worker-v2-YEGH3LDV.js → parse-worker-v2-MGIF63HD.js} +12 -12
- package/dist/{parser-EBH4V7UW.js → parser-53TGQ4FC.js} +34 -18
- package/dist/parser-53TGQ4FC.js.map +1 -0
- package/dist/{parser-H2UDOCP6.cjs → parser-VUJQJDZI.cjs} +221 -205
- package/dist/parser-VUJQJDZI.cjs.map +1 -0
- package/dist/{parser-K67MDRVQ.js → parser-W46CWSPY.js} +31 -15
- package/dist/parser-W46CWSPY.js.map +1 -0
- package/dist/pdf-ocr-BQG3O6HQ.cjs +19 -0
- package/dist/{pdf-ocr-URHROKTL.cjs.map → pdf-ocr-BQG3O6HQ.cjs.map} +1 -1
- package/dist/pdf-ocr-EWS374FU.js +22 -0
- package/dist/pdf-ocr-GKRBJXT4.js +18 -0
- package/dist/{profile-io-5AUIY4ZK.js → profile-io-AYQO4RLD.js} +3 -3
- package/dist/{rasterize-FCFSKOJN.js → rasterize-U23B3ZK4.js} +3 -3
- package/dist/{redact-doc-XNHWZBLI.js → redact-doc-FV5NHVRH.js} +11 -11
- package/dist/{render-GKYMLICR.js → render-TLLHZCMS.js} +7 -7
- package/dist/seal-BLZIPLWT.js +10 -0
- package/dist/{setup-YTGXU6UG.js → setup-HWI3THDP.js} +3 -3
- package/dist/visual-PW74S3AP.js +20 -0
- package/dist/{watch-PGLPSQZB.js → watch-7UBV5B5E.js} +12 -12
- package/package.json +1 -1
- package/dist/chunk-B6QMZ5H6.js.map +0 -1
- package/dist/chunk-EXCGDQPB.js.map +0 -1
- package/dist/chunk-FVCIEW26.cjs.map +0 -1
- package/dist/chunk-LORBG6MG.cjs.map +0 -1
- package/dist/chunk-MGSUORGY.js.map +0 -1
- package/dist/chunk-MWH3WQ2C.js.map +0 -1
- package/dist/chunks-OR6UM6IP.js +0 -10
- package/dist/parser-EBH4V7UW.js.map +0 -1
- package/dist/parser-H2UDOCP6.cjs.map +0 -1
- package/dist/parser-K67MDRVQ.js.map +0 -1
- package/dist/pdf-ocr-ECPSNDNK.js +0 -22
- package/dist/pdf-ocr-URHROKTL.cjs +0 -19
- package/dist/pdf-ocr-XFHI32BK.js +0 -18
- package/dist/seal-VQS7DK5S.js +0 -10
- package/dist/visual-7PEKXK3M.js +0 -20
- /package/dist/{-QXIJTZUP.js.map → -VONBNRVD.js.map} +0 -0
- /package/dist/{chunk-6EKJ6J47.js.map → chunk-2LFYBDX2.js.map} +0 -0
- /package/dist/{chunk-TAPXIXAD.js.map → chunk-4U5ISDBU.js.map} +0 -0
- /package/dist/{chunk-QACOMAEX.js.map → chunk-4UMTGSRH.js.map} +0 -0
- /package/dist/{chunk-FWCKZXJY.js.map → chunk-5MNDRMFV.js.map} +0 -0
- /package/dist/{chunk-EFTJ35T6.js.map → chunk-B6UZYIAR.js.map} +0 -0
- /package/dist/{chunk-FRM6WYNC.js.map → chunk-GLZ4XPKX.js.map} +0 -0
- /package/dist/{chunk-BJP4IWGE.js.map → chunk-J772QFJ5.js.map} +0 -0
- /package/dist/{chunk-LMICG6MM.js.map → chunk-JDEWFE46.js.map} +0 -0
- /package/dist/{chunk-62HRSQL3.js.map → chunk-N2GL4NZH.js.map} +0 -0
- /package/dist/{chunk-ZK5L7VPR.js.map → chunk-NI3RMQTS.js.map} +0 -0
- /package/dist/{chunk-B6WEXUMV.js.map → chunk-NMXMBYRP.js.map} +0 -0
- /package/dist/{chunk-HDPQ7QBF.js.map → chunk-OEF4V654.js.map} +0 -0
- /package/dist/{chunk-2PSKHMH2.js.map → chunk-Q2F3ZGGS.js.map} +0 -0
- /package/dist/{chunk-EBYYQO6A.js.map → chunk-S7J7VI4R.js.map} +0 -0
- /package/dist/{chunk-TS4GX4WP.js.map → chunk-WAYSJYK4.js.map} +0 -0
- /package/dist/{chunk-UKCOUVER.js.map → chunk-YRWSOFJW.js.map} +0 -0
- /package/dist/{chunks-OR6UM6IP.js.map → chunks-CKWDRCT2.js.map} +0 -0
- /package/dist/{formula-KSDCEDLB.js.map → formula-E7IFGURT.js.map} +0 -0
- /package/dist/{formula-HJ54W6OC.js.map → formula-ROYY4OPC.js.map} +0 -0
- /package/dist/{image-ocr-YYOYHZDE.js.map → image-ocr-SIO5GLQK.js.map} +0 -0
- /package/dist/{image-ocr-IFL6L5TW.js.map → image-ocr-YZHJHHPA.js.map} +0 -0
- /package/dist/{model-bundle-BY4E4RB4.js.map → model-bundle-5JREYZVZ.js.map} +0 -0
- /package/dist/{models-KN7YXMZR.js.map → models-MW56BJEC.js.map} +0 -0
- /package/dist/{parse-worker-v2-YEGH3LDV.js.map → parse-worker-v2-MGIF63HD.js.map} +0 -0
- /package/dist/{pdf-ocr-ECPSNDNK.js.map → pdf-ocr-EWS374FU.js.map} +0 -0
- /package/dist/{pdf-ocr-XFHI32BK.js.map → pdf-ocr-GKRBJXT4.js.map} +0 -0
- /package/dist/{profile-io-5AUIY4ZK.js.map → profile-io-AYQO4RLD.js.map} +0 -0
- /package/dist/{rasterize-FCFSKOJN.js.map → rasterize-U23B3ZK4.js.map} +0 -0
- /package/dist/{redact-doc-XNHWZBLI.js.map → redact-doc-FV5NHVRH.js.map} +0 -0
- /package/dist/{render-GKYMLICR.js.map → render-TLLHZCMS.js.map} +0 -0
- /package/dist/{seal-VQS7DK5S.js.map → seal-BLZIPLWT.js.map} +0 -0
- /package/dist/{setup-YTGXU6UG.js.map → setup-HWI3THDP.js.map} +0 -0
- /package/dist/{visual-7PEKXK3M.js.map → visual-PW74S3AP.js.map} +0 -0
- /package/dist/{watch-PGLPSQZB.js.map → watch-7UBV5B5E.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,
|
|
15
|
+
- 🇰🇷 **한국 공문서 표 구조 100%** — 원본 HWPX 2,424문서의 보이는 표 **10,342개 전부 구조 일치**. [4.21.11 검증](docs/benchmarks.md)
|
|
16
16
|
|
|
17
17
|
[](https://youtu.be/Q13GmgDcIw0)
|
|
18
18
|
|
|
@@ -98,28 +98,32 @@ await writeFile("보고서.hwpx", Buffer.from(hwpx))
|
|
|
98
98
|
|
|
99
99
|
## 검증 결과
|
|
100
100
|
|
|
101
|
-
**4.
|
|
101
|
+
**4.21.11 · 2026-10-10 배포 검증**. 고정 코퍼스와 참조 기준으로 측정한 결과입니다.
|
|
102
102
|
|
|
103
103
|
| 대상 | 규모 | 결과 |
|
|
104
104
|
| --- | --- | --- |
|
|
105
|
-
| HWPX | 2,
|
|
106
|
-
| HWP 5.x ↔ HWPX | 1,
|
|
107
|
-
| PDF 글 | 744쌍 | 글자 재현율 **99.83%** · 읽기 순서 **99.
|
|
108
|
-
| PDF 표 | 708쌍 · 2,331표 | 표 탐지 **99.83%** · 구조 일치 **97.
|
|
105
|
+
| HWPX | 2,424문서 · 10,342표 | 표 구조 일치 **10,342/10,342 · 100%** |
|
|
106
|
+
| HWP 5.x ↔ HWPX | 1,130쌍 · 4,315표 | 짝 문서의 표 구조 일치 **100%** |
|
|
107
|
+
| PDF 글 | 744쌍 | 글자 재현율 **99.83%** · 정확도 **99.64%** · 읽기 순서 **99.16%** · 어절 F1 **98.86%** |
|
|
108
|
+
| PDF 표 | 708쌍 · 2,331표 | 표 탐지 **99.83%** · 구조 일치 **97.98%** · 칸 F1 **0.991** |
|
|
109
|
+
| PDF 전체 | 1,911문서 중 1,729건 채점 | 글 커버리지 **99.80%** |
|
|
110
|
+
| OCR | 53문서 · 102쪽 | CER **0.0412** · 글자 재현율 **99.03%** |
|
|
109
111
|
|
|
110
|
-
표 구조 점수와 셀 내용·화면 재현은 별도 지표입니다. 채점 범위·제외
|
|
112
|
+
표 구조 점수와 셀 내용·화면 재현은 별도 지표입니다. 채점 범위·제외 기준·전 벤치 문서별 비교는 [벤치마크 상세](docs/benchmarks.md)에 있습니다.
|
|
111
113
|
|
|
112
|
-
외부 PDF 벤치 **opendataloader-bench 200문서**는 4.21.
|
|
114
|
+
외부 PDF 벤치 **opendataloader-bench 200문서**는 4.21.11 배포 측정에서 기본값 종합 **0.963**, OCR 끔 **0.939**입니다. [옵션별 결과와 재현 방법](docs/benchmarks.md#pdf--markdown--opendataloader-bench)
|
|
113
115
|
|
|
114
116
|
## 최근 업데이트
|
|
115
117
|
|
|
116
|
-
최신 배포: **[4.21.
|
|
118
|
+
최신 배포: **[4.21.11](https://github.com/chrisryugj/kordoc/releases/tag/v4.21.11)** · 2026-10-10
|
|
117
119
|
|
|
118
120
|
| 버전 | 주요 변경 |
|
|
119
121
|
| --- | --- |
|
|
120
|
-
| 4.21.
|
|
121
|
-
| 4.21.
|
|
122
|
-
| 4.21.
|
|
122
|
+
| 4.21.11 | PDF 목차·라벨탭 상자·칸 첨자 — 목차 리더 걷기, 제목 칩 상자를 글로, 목차 칸 제목·쪽 번호 짝짓기, 서식 칸 붙은 첨자 흡수 (PDF 글 정확도 99.58 → 99.64%·OCR CER 0.0421 → 0.0412, 문서별 하락 0 — 열화 OCR 은 표본 쪽 셋 이동) |
|
|
123
|
+
| 4.21.10 | PDF 흐름도 표·괄호 풀이 — 선 격자 표를 품은 클러스터 후보 거름, 짧은 괄호 풀이 앞 줄 꺾임 이음 (PDF 어절 F1 98.84 → 98.85%·OCR CER 0.0443 → 0.0421, 문서별 하락 0) |
|
|
124
|
+
| 4.21.9 | PDF 줄 꺾임 이음 — 낱말 가운데 꺾임·겹조사·계사·접미사·명사+하다, 본문 위 첨자 행 흡수 (PDF 어절 F1 98.81 → 98.84%·글 커버리지 99.79 → 99.80%, 문서별 하락 0) |
|
|
125
|
+
| 4.21.8 | PDF 표 묶음 — 돌려 찍은 가로 표 세우기·데이터 표의 차트 오판·좁은 숫자 열·칸 걸친 한 조각·칸 안 쌓인 금액 (OCR CER 0.0445 → 0.0443·열화 OCR scan 0.0821 → 0.0805, 문서별 하락 0) |
|
|
126
|
+
| 4.21.7 | PDF 토막 괘선 칸·글 조각 클립·연락처 표 — 예산서 상세 칸(OCR CER 0.0512 → 0.0445), ezPDF·MS Print 글 조각 클립이 만든 가짜 표, 연락처 6열 (열화 OCR scan 0.0954 → 0.0821·글 커버리지 99.78 → 99.79%, 문서별 하락 0) |
|
|
123
127
|
| 4.21.6 | 연락처 표 부서별 병합·여러 사람 칸 분할(PDF 표 구조 일치 97.94→97.98%), XLSX·XLS 200열 밖 칸 유실 수리, HWP3 포함 그림 추출, 수식 OCR LaTeX 명령 쪼개기·영역 상한 수리, PPTX 서식 트랙·코퍼스 보강(HWP3 75·서식 58·rhwp 230) |
|
|
124
128
|
| 4.21.5 | PDF 품질 묶음 — OCR 두 단 가짜 표(#141 부작용)·그림 OCR 라벨 묶음·한 자리 눈금, 주소 링크·벡터 차트 값 축·단 끝줄·각주 순서 (ODL 기본 0.958 → 0.963, 문서별 하락 0) · 개조식·보고서 요약 상자가 md→hwpx→md→hwpx 왕복에서 유지 |
|
|
125
129
|
| 4.21.4 | MCP `fill_form` 값 파일 입력 `fields_file`(값이 대화에 안 남고 응답은 글자 수만), 전 벤치 묶음 러너·문서별 비교기 `bench/suite.mjs` |
|
|
@@ -54,17 +54,17 @@ import {
|
|
|
54
54
|
unknownFontWarnings,
|
|
55
55
|
usesGaejosikMunche,
|
|
56
56
|
validateHwpx
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-S7J7VI4R.js";
|
|
58
58
|
import {
|
|
59
59
|
blocksToPages
|
|
60
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-2LFYBDX2.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-OEF4V654.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-GLZ4XPKX.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-NI3RMQTS.js";
|
|
101
101
|
import "./chunk-7FCNOKOR.js";
|
|
102
|
-
import "./chunk-
|
|
102
|
+
import "./chunk-SWV27B56.js";
|
|
103
103
|
import "./chunk-VQFA55IC.js";
|
|
104
|
-
import "./chunk-
|
|
104
|
+
import "./chunk-NMXMBYRP.js";
|
|
105
105
|
import {
|
|
106
106
|
blocksToMarkdown,
|
|
107
107
|
flattenLayoutTables,
|
|
108
108
|
hasStructuredCellContent
|
|
109
|
-
} from "./chunk-
|
|
110
|
-
import "./chunk-
|
|
109
|
+
} from "./chunk-ZTNZ4UZM.js";
|
|
110
|
+
import "./chunk-JDEWFE46.js";
|
|
111
111
|
import {
|
|
112
112
|
VERSION
|
|
113
|
-
} from "./chunk-
|
|
113
|
+
} from "./chunk-L652BNX6.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=-VONBNRVD.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
blocksToMarkdown
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ZTNZ4UZM.js";
|
|
5
5
|
|
|
6
6
|
// src/page-markdown.ts
|
|
7
7
|
function blocksToPages(blocks, render = blocksToMarkdown) {
|
|
@@ -29,4 +29,4 @@ function blocksToPages(blocks, render = blocksToMarkdown) {
|
|
|
29
29
|
export {
|
|
30
30
|
blocksToPages
|
|
31
31
|
};
|
|
32
|
-
//# sourceMappingURL=chunk-
|
|
32
|
+
//# sourceMappingURL=chunk-2LFYBDX2.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
parse
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-S7J7VI4R.js";
|
|
5
5
|
import {
|
|
6
6
|
classifyError,
|
|
7
7
|
sanitizeError,
|
|
8
8
|
toArrayBuffer
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-L652BNX6.js";
|
|
10
10
|
|
|
11
11
|
// src/cli/worker-parse.ts
|
|
12
12
|
import { readFileSync, statSync } from "fs";
|
|
@@ -26,4 +26,4 @@ async function parseWorkerFile(absPath, options) {
|
|
|
26
26
|
export {
|
|
27
27
|
parseWorkerFile
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=chunk-
|
|
29
|
+
//# sourceMappingURL=chunk-4U5ISDBU.js.map
|
|
@@ -10,10 +10,10 @@ import {
|
|
|
10
10
|
extractPageBlocksWithLines,
|
|
11
11
|
getOcrModelsDir,
|
|
12
12
|
parseCharacterDict
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-PUAKSOZD.js";
|
|
14
14
|
import {
|
|
15
15
|
OPTIONAL_DEP_INSTALL_HINT
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-LZGPS3FH.js";
|
|
17
17
|
|
|
18
18
|
// src/ocr/ruling-lines.ts
|
|
19
19
|
var INK_LUMA_MAX = 205;
|
|
@@ -2130,4 +2130,4 @@ export {
|
|
|
2130
2130
|
groupOcrLines,
|
|
2131
2131
|
ocrItemsToBlocks
|
|
2132
2132
|
};
|
|
2133
|
-
//# sourceMappingURL=chunk-
|
|
2133
|
+
//# sourceMappingURL=chunk-4UMTGSRH.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkWSSCBJSUcjs = require('./chunk-WSSCBJSU.cjs');
|
|
5
5
|
|
|
6
6
|
// src/script-tags.ts
|
|
7
7
|
var LITERAL_TAG = /<(?=\/?(?:u|sup|sub)>)/g;
|
|
@@ -804,8 +804,10 @@ function blocksToMarkdown(blocks, options) {
|
|
|
804
804
|
continue;
|
|
805
805
|
}
|
|
806
806
|
if (block.type === "list" && block.text) {
|
|
807
|
-
|
|
807
|
+
let listText = sanitizeText(block.text);
|
|
808
808
|
if (!listText) continue;
|
|
809
|
+
const num = _optionalChain([/^(\d{1,3}[.)])\s/, 'access', _28 => _28.exec, 'call', _29 => _29(block.text.trim()), 'optionalAccess', _30 => _30[1]]);
|
|
810
|
+
if (num && listText.startsWith(num) && !/^\s/.test(listText.slice(num.length))) listText = `${num} ${listText.slice(num.length)}`;
|
|
809
811
|
const alreadyNumbered = block.listType === "ordered" && /^\d+\.\s/.test(listText);
|
|
810
812
|
const alreadyBulleted = block.listType !== "ordered" && /^-\s/.test(listText);
|
|
811
813
|
const prefix = alreadyNumbered || alreadyBulleted ? "" : block.listType === "ordered" ? "1. " : "- ";
|
|
@@ -824,7 +826,7 @@ function blocksToMarkdown(blocks, options) {
|
|
|
824
826
|
if (lines.length && lines[lines.length - 1] !== "") lines.push("");
|
|
825
827
|
if (/^\[별표\s*\d+/.test(text)) {
|
|
826
828
|
const nextBlock = blocks[i + 1];
|
|
827
|
-
if (_optionalChain([nextBlock, 'optionalAccess',
|
|
829
|
+
if (_optionalChain([nextBlock, 'optionalAccess', _31 => _31.type]) === "paragraph" && nextBlock.text && /관련\)?$/.test(nextBlock.text)) {
|
|
828
830
|
lines.push("", `## ${escapeGfm(text)} ${escapeGfm(nextBlock.text)}`, "");
|
|
829
831
|
i++;
|
|
830
832
|
} else {
|
|
@@ -837,10 +839,10 @@ function blocksToMarkdown(blocks, options) {
|
|
|
837
839
|
continue;
|
|
838
840
|
}
|
|
839
841
|
const listIndent = block.listDepth ? " ".repeat(block.listDepth) : "";
|
|
840
|
-
if (_optionalChain([block, 'access',
|
|
842
|
+
if (_optionalChain([block, 'access', _32 => _32.spans, 'optionalAccess', _33 => _33.length])) {
|
|
841
843
|
let rendered = spansToMarkdown(block.spans);
|
|
842
844
|
if (block.href) {
|
|
843
|
-
const href =
|
|
845
|
+
const href = _chunkWSSCBJSUcjs.sanitizeHref.call(void 0, block.href);
|
|
844
846
|
if (href) rendered = `[${rendered}](${href})`;
|
|
845
847
|
}
|
|
846
848
|
if (block.footnoteText) rendered += ` (\uC8FC: ${block.footnoteText})`;
|
|
@@ -848,7 +850,7 @@ function blocksToMarkdown(blocks, options) {
|
|
|
848
850
|
continue;
|
|
849
851
|
}
|
|
850
852
|
if (block.href) {
|
|
851
|
-
const href =
|
|
853
|
+
const href = _chunkWSSCBJSUcjs.sanitizeHref.call(void 0, block.href);
|
|
852
854
|
if (href) text = `[${text}](${href})`;
|
|
853
855
|
}
|
|
854
856
|
if (block.footnoteText) {
|
|
@@ -870,7 +872,7 @@ function blocksToMarkdown(blocks, options) {
|
|
|
870
872
|
return lines.join("\n").trim();
|
|
871
873
|
}
|
|
872
874
|
function captionToMarkdown(table, gfm = false) {
|
|
873
|
-
if (_optionalChain([table, 'access',
|
|
875
|
+
if (_optionalChain([table, 'access', _34 => _34.captionBlocks, 'optionalAccess', _35 => _35.length])) {
|
|
874
876
|
return table.captionBlocks.flatMap((b) => {
|
|
875
877
|
if (b.type === "table" && b.table) {
|
|
876
878
|
const md = tableToMarkdown(b.table, gfm);
|
|
@@ -885,7 +887,7 @@ function captionToMarkdown(table, gfm = false) {
|
|
|
885
887
|
return caption ? [`**${escapeGfm(caption)}**`, ""] : [];
|
|
886
888
|
}
|
|
887
889
|
function captionToHtml(table) {
|
|
888
|
-
if (_optionalChain([table, 'access',
|
|
890
|
+
if (_optionalChain([table, 'access', _36 => _36.captionBlocks, 'optionalAccess', _37 => _37.length])) return cellInnerHtml({ text: "", colSpan: 1, rowSpan: 1, blocks: table.captionBlocks });
|
|
889
891
|
const cap = table.caption ? sanitizeText(table.caption) : "";
|
|
890
892
|
return cap ? escapeHtmlCellText(cap).replace(/\n/g, "<br>") : "";
|
|
891
893
|
}
|
|
@@ -900,7 +902,7 @@ function hasMergedCells(table) {
|
|
|
900
902
|
function hasNestedTables(table) {
|
|
901
903
|
for (const row of table.cells) {
|
|
902
904
|
for (const cell of row) {
|
|
903
|
-
if (_optionalChain([cell, 'access',
|
|
905
|
+
if (_optionalChain([cell, 'access', _38 => _38.blocks, 'optionalAccess', _39 => _39.some, 'call', _40 => _40((b) => b.type === "table" && b.table)])) return true;
|
|
904
906
|
}
|
|
905
907
|
}
|
|
906
908
|
return false;
|
|
@@ -908,7 +910,7 @@ function hasNestedTables(table) {
|
|
|
908
910
|
function hasStructuredCellContent(table) {
|
|
909
911
|
for (const row of table.cells) {
|
|
910
912
|
for (const cell of row) {
|
|
911
|
-
if (_optionalChain([cell, 'access',
|
|
913
|
+
if (_optionalChain([cell, 'access', _41 => _41.blocks, 'optionalAccess', _42 => _42.some, 'call', _43 => _43((b) => b.type === "table" && b.table || b.type === "separator")])) return true;
|
|
912
914
|
}
|
|
913
915
|
}
|
|
914
916
|
return false;
|
|
@@ -917,19 +919,19 @@ function noteSuffix(b) {
|
|
|
917
919
|
return b.footnoteText ? ` (\uC8FC: ${b.footnoteText})` : "";
|
|
918
920
|
}
|
|
919
921
|
function visibleText(b) {
|
|
920
|
-
return _optionalChain([b, 'access',
|
|
922
|
+
return _optionalChain([b, 'access', _44 => _44.spans, 'optionalAccess', _45 => _45.some, 'call', _46 => _46((s) => s.placeholder)]) ? b.spans.filter((s) => !s.placeholder).map((s) => s.text).join("") : _nullishCoalesce(b.text, () => ( ""));
|
|
921
923
|
}
|
|
922
924
|
function escapeHtmlCellText(text) {
|
|
923
|
-
return
|
|
925
|
+
return _chunkWSSCBJSUcjs.escapeHtml.call(void 0, text).replace(/(\\)?<(\/?)(u|sup|sub)>/g, (_, esc, sl, tag) => esc ? `<${sl}${tag}>` : `<${sl}${tag}>`);
|
|
924
926
|
}
|
|
925
927
|
function cellInnerHtml(cell) {
|
|
926
|
-
if (_optionalChain([cell, 'access',
|
|
928
|
+
if (_optionalChain([cell, 'access', _47 => _47.blocks, 'optionalAccess', _48 => _48.length])) {
|
|
927
929
|
return cell.blocks.map((b) => {
|
|
928
930
|
if (b.type === "table" && b.table) {
|
|
929
931
|
const cap = captionToHtml(b.table);
|
|
930
932
|
return (cap ? cap + "<br>" : "") + tableToHtml(b.table);
|
|
931
933
|
}
|
|
932
|
-
if (b.type === "image" && b.text) return `<img src="${
|
|
934
|
+
if (b.type === "image" && b.text) return `<img src="${_chunkWSSCBJSUcjs.escapeHtml.call(void 0, b.text, true)}" alt="image">`;
|
|
933
935
|
const t = (sanitizeText(visibleText(b)) + noteSuffix(b)).trim();
|
|
934
936
|
return t ? escapeHtmlCellText(t).replace(/\n/g, "<br>") : "";
|
|
935
937
|
}).filter(Boolean).join("<br>");
|
|
@@ -945,7 +947,7 @@ function tableToHtml(table) {
|
|
|
945
947
|
const rowHtml = [];
|
|
946
948
|
for (let c = 0; c < numCols; c++) {
|
|
947
949
|
if (skip.has(`${r},${c}`)) continue;
|
|
948
|
-
const cell = _optionalChain([cells, 'access',
|
|
950
|
+
const cell = _optionalChain([cells, 'access', _49 => _49[r], 'optionalAccess', _50 => _50[c]]);
|
|
949
951
|
if (!cell) continue;
|
|
950
952
|
for (let dr = 0; dr < cell.rowSpan; dr++) {
|
|
951
953
|
for (let dc = 0; dc < cell.colSpan; dc++) {
|
|
@@ -966,10 +968,10 @@ function tableToHtml(table) {
|
|
|
966
968
|
return lines.join("\n");
|
|
967
969
|
}
|
|
968
970
|
function hasInlineCellBlocks(cell) {
|
|
969
|
-
return !!_optionalChain([cell, 'access',
|
|
971
|
+
return !!_optionalChain([cell, 'access', _51 => _51.blocks, 'optionalAccess', _52 => _52.some, 'call', _53 => _53((b) => _optionalChain([b, 'access', _54 => _54.spans, 'optionalAccess', _55 => _55.length]) || b.footnoteText || b.type === "image" && b.text)]);
|
|
970
972
|
}
|
|
971
973
|
function cellBlockToMarkdown(b) {
|
|
972
|
-
return b.type === "image" && b.text ? `` : _optionalChain([b, 'access',
|
|
974
|
+
return b.type === "image" && b.text ? `` : _optionalChain([b, 'access', _56 => _56.spans, 'optionalAccess', _57 => _57.length]) ? spansToMarkdown(b.spans) + escapeGfm(noteSuffix(b)) : escapeGfm(sanitizeText(_nullishCoalesce(b.text, () => ( ""))) + noteSuffix(b));
|
|
973
975
|
}
|
|
974
976
|
function cellToMarkdown(cell, separator) {
|
|
975
977
|
if (!hasInlineCellBlocks(cell)) return escapeGfm(sanitizeText(cell.text));
|
|
@@ -988,7 +990,7 @@ function tableToGfm(table) {
|
|
|
988
990
|
return out.join("\n");
|
|
989
991
|
}
|
|
990
992
|
function gfmCellText(cell, parentId, nested, markerless) {
|
|
991
|
-
if (!_optionalChain([cell, 'access',
|
|
993
|
+
if (!_optionalChain([cell, 'access', _58 => _58.blocks, 'optionalAccess', _59 => _59.some, 'call', _60 => _60((b) => b.type === "table" && b.table || b.type === "separator")])) return cellToMarkdown(cell, "<br>");
|
|
992
994
|
let out = "";
|
|
993
995
|
let text = "";
|
|
994
996
|
let hasMarker = false;
|
|
@@ -1051,7 +1053,7 @@ function pipeTable(table, cellText, rowSpanFill) {
|
|
|
1051
1053
|
for (let r = 0; r < numRows; r++) {
|
|
1052
1054
|
for (let c = 0; c < numCols; c++) {
|
|
1053
1055
|
if (skip.has(`${r},${c}`)) continue;
|
|
1054
|
-
const cell = _optionalChain([cells, 'access',
|
|
1056
|
+
const cell = _optionalChain([cells, 'access', _61 => _61[r], 'optionalAccess', _62 => _62[c]]);
|
|
1055
1057
|
if (!cell) continue;
|
|
1056
1058
|
const cellMd = (text2) => text2.replace(/\r\n|\r|\n/g, "<br>").replace(/(?<!\\)\|/g, "\\|");
|
|
1057
1059
|
const text = cellText(cell);
|
|
@@ -1089,13 +1091,14 @@ function pipeTable(table, cellText, rowSpanFill) {
|
|
|
1089
1091
|
var CELL_EDGES = /* @__PURE__ */ new WeakMap();
|
|
1090
1092
|
var CELL_PAGES = /* @__PURE__ */ new WeakMap();
|
|
1091
1093
|
var CONTENT_CELLS = /* @__PURE__ */ new WeakSet();
|
|
1094
|
+
var CELL_BASELINES = /* @__PURE__ */ new WeakMap();
|
|
1092
1095
|
var FRACTION_MAX_CHARS = 40;
|
|
1093
1096
|
function anchorsOf(t) {
|
|
1094
1097
|
const out = [];
|
|
1095
1098
|
const covered = /* @__PURE__ */ new Set();
|
|
1096
1099
|
for (let r = 0; r < t.rows; r++) for (let c = 0; c < t.cols; c++) {
|
|
1097
1100
|
if (covered.has(r * t.cols + c)) continue;
|
|
1098
|
-
const cell = _optionalChain([t, 'access',
|
|
1101
|
+
const cell = _optionalChain([t, 'access', _63 => _63.cells, 'access', _64 => _64[r], 'optionalAccess', _65 => _65[c]]);
|
|
1099
1102
|
if (!cell) continue;
|
|
1100
1103
|
const rs = Math.max(1, Math.min(cell.rowSpan, t.rows - r)), cs = Math.max(1, Math.min(cell.colSpan, t.cols - c));
|
|
1101
1104
|
for (let dr = 0; dr < rs; dr++) for (let dc = 0; dc < cs; dc++) covered.add((r + dr) * t.cols + c + dc);
|
|
@@ -1124,7 +1127,7 @@ function toTex(s) {
|
|
|
1124
1127
|
}
|
|
1125
1128
|
function fractionPart(cell) {
|
|
1126
1129
|
const t = cell.text.trim();
|
|
1127
|
-
return !!t && !t.includes("\n") && !_optionalChain([cell, 'access',
|
|
1130
|
+
return !!t && !t.includes("\n") && !_optionalChain([cell, 'access', _66 => _66.blocks, 'optionalAccess', _67 => _67.length]) && t.replace(/<\/?(?:u|sup|sub)>/g, "").length <= FRACTION_MAX_CHARS && !/(?<!\\)\$/.test(t);
|
|
1128
1131
|
}
|
|
1129
1132
|
function mergeFractions(t, anchors, H, V) {
|
|
1130
1133
|
const at = /* @__PURE__ */ new Map();
|
|
@@ -1159,7 +1162,7 @@ function bandTable(t, anchors, V, H, r0, r1, keepEmptyCols) {
|
|
|
1159
1162
|
let list = anchors.filter((a) => a.r >= r0 && a.r <= r1).map((a) => ({ ...a, rs: Math.min(a.rs, r1 - a.r + 1) }));
|
|
1160
1163
|
const blank = (a) => {
|
|
1161
1164
|
if (CONTENT_CELLS.has(a.cell)) return false;
|
|
1162
|
-
if (!_optionalChain([a, 'access',
|
|
1165
|
+
if (!_optionalChain([a, 'access', _68 => _68.cell, 'access', _69 => _69.blocks, 'optionalAccess', _70 => _70.length])) return !a.cell.text.trim();
|
|
1163
1166
|
return a.cell.blocks.every((b) => (b.type === "paragraph" || b.type === "heading") && !visibleText(b).trim() && !b.footnoteText);
|
|
1164
1167
|
};
|
|
1165
1168
|
let lo = Infinity, hi = -Infinity;
|
|
@@ -1210,25 +1213,47 @@ function bandTable(t, anchors, V, H, r0, r1, keepEmptyCols) {
|
|
|
1210
1213
|
}
|
|
1211
1214
|
return { rows, cols, cells, hasHeader: t.hasHeader, ...emptyBand ? { renderAsTable: true } : {} };
|
|
1212
1215
|
}
|
|
1216
|
+
function tocLines(cells) {
|
|
1217
|
+
if (cells.length !== 2) return null;
|
|
1218
|
+
const [titles, pages] = cells.map((c) => c.text.trim().split("\n").map((l) => l.trim()));
|
|
1219
|
+
const [ty, py] = cells.map((c) => CELL_BASELINES.get(c));
|
|
1220
|
+
if (!ty || !py || ty.length !== titles.length || py.length !== pages.length || titles.length < 2 || !pages.every((l) => /^\d{1,4}$/.test(l)) || titles.some((l) => !l || /^\d{1,4}$/.test(l))) return null;
|
|
1221
|
+
const lines = [...titles], taken = /* @__PURE__ */ new Set();
|
|
1222
|
+
for (let j = 0; j < pages.length; j++) {
|
|
1223
|
+
const i = ty.findIndex((y) => Math.abs(y - py[j]) <= 3);
|
|
1224
|
+
if (i < 0 || taken.has(i)) return null;
|
|
1225
|
+
taken.add(i);
|
|
1226
|
+
lines[i] += " " + pages[j];
|
|
1227
|
+
}
|
|
1228
|
+
return lines;
|
|
1229
|
+
}
|
|
1213
1230
|
function textRow(row, out, pageNumber, keepEmptyCols) {
|
|
1214
1231
|
const parts = [];
|
|
1232
|
+
const cells = [];
|
|
1215
1233
|
const flush = () => {
|
|
1216
1234
|
if (!parts.length) return;
|
|
1217
|
-
|
|
1235
|
+
const toc = tocLines(cells);
|
|
1236
|
+
if (toc) {
|
|
1237
|
+
for (const line of toc) out.push({ type: "paragraph", text: line, pageNumber });
|
|
1238
|
+
} else if (parts.length === 1) {
|
|
1218
1239
|
for (const line of parts[0].split("\n")) if (line.trim()) out.push({ type: "paragraph", text: line.trim(), pageNumber });
|
|
1219
1240
|
} else {
|
|
1220
1241
|
const text = parts.map((p) => p.replace(/\s*\n\s*/g, " ").trim()).filter(Boolean).join(" ");
|
|
1221
1242
|
if (text) out.push({ type: "paragraph", text, pageNumber });
|
|
1222
1243
|
}
|
|
1223
1244
|
parts.length = 0;
|
|
1245
|
+
cells.length = 0;
|
|
1224
1246
|
};
|
|
1225
1247
|
for (const a of row) {
|
|
1226
|
-
if (_optionalChain([a, 'access',
|
|
1248
|
+
if (_optionalChain([a, 'access', _71 => _71.cell, 'access', _72 => _72.blocks, 'optionalAccess', _73 => _73.length])) {
|
|
1227
1249
|
flush();
|
|
1228
1250
|
out.push(...unframeLayoutTables(a.cell.blocks, keepEmptyCols));
|
|
1229
1251
|
continue;
|
|
1230
1252
|
}
|
|
1231
|
-
if (a.cell.text.trim())
|
|
1253
|
+
if (a.cell.text.trim()) {
|
|
1254
|
+
parts.push(a.cell.text.trim());
|
|
1255
|
+
cells.push(a.cell);
|
|
1256
|
+
}
|
|
1232
1257
|
}
|
|
1233
1258
|
flush();
|
|
1234
1259
|
}
|
|
@@ -1257,7 +1282,7 @@ function unframeTable(t, pageNumber, keepEmptyCols) {
|
|
|
1257
1282
|
}, pageNumber }];
|
|
1258
1283
|
}
|
|
1259
1284
|
const out = [];
|
|
1260
|
-
if (_optionalChain([t, 'access',
|
|
1285
|
+
if (_optionalChain([t, 'access', _74 => _74.captionBlocks, 'optionalAccess', _75 => _75.length])) out.push(...t.captionBlocks);
|
|
1261
1286
|
else if (t.caption) out.push({ type: "paragraph", text: t.caption, pageNumber });
|
|
1262
1287
|
const rowPage = (r) => {
|
|
1263
1288
|
const marks = anchors.filter((a) => a.r === r).map((a) => CELL_PAGES.get(a.cell)).filter((p) => p !== void 0);
|
|
@@ -1284,12 +1309,12 @@ function unframeLayoutTables(blocks, keepEmptyCols = false) {
|
|
|
1284
1309
|
out.push(b);
|
|
1285
1310
|
continue;
|
|
1286
1311
|
}
|
|
1287
|
-
if (_optionalChain([b, 'access',
|
|
1312
|
+
if (_optionalChain([b, 'access', _76 => _76.table, 'access', _77 => _77.captionBlocks, 'optionalAccess', _78 => _78.length])) b.table.captionBlocks = unframeLayoutTables(b.table.captionBlocks, keepEmptyCols);
|
|
1288
1313
|
const flat = unframeTable(b.table, b.pageNumber, keepEmptyCols);
|
|
1289
1314
|
const kept = _nullishCoalesce(flat, () => ( [b]));
|
|
1290
1315
|
for (const k of kept) {
|
|
1291
1316
|
if (k.type === "table" && k.table) {
|
|
1292
|
-
for (const row of k.table.cells) for (const cell of row) if (_optionalChain([cell, 'access',
|
|
1317
|
+
for (const row of k.table.cells) for (const cell of row) if (_optionalChain([cell, 'access', _79 => _79.blocks, 'optionalAccess', _80 => _80.length])) cell.blocks = unframeLayoutTables(cell.blocks, keepEmptyCols);
|
|
1293
1318
|
}
|
|
1294
1319
|
out.push(k);
|
|
1295
1320
|
}
|
|
@@ -1332,5 +1357,6 @@ var HEADING_RATIO_H3 = 1.15;
|
|
|
1332
1357
|
|
|
1333
1358
|
|
|
1334
1359
|
|
|
1335
|
-
|
|
1336
|
-
|
|
1360
|
+
|
|
1361
|
+
exports.escapeLiteralTags = escapeLiteralTags; exports.wrapScript = wrapScript; exports.tidyScriptTags = tidyScriptTags; exports.plainScripts = plainScripts; exports.stripScriptTags = stripScriptTags; exports.WINGDINGS = WINGDINGS; exports.mapPuaText = mapPuaText; exports.MAX_COLS = MAX_COLS; exports.MAX_ROWS = MAX_ROWS; exports.MAX_TABLE_CELLS = MAX_TABLE_CELLS; exports.buildTable = buildTable; exports.convertTableToText = convertTableToText; exports.escapeGfm = escapeGfm; exports.escapeLiteralDollar = escapeLiteralDollar; exports.markNonLayoutTable = markNonLayoutTable; exports.flattenLayoutTables = flattenLayoutTables; exports.dedupeRunningHeaders = dedupeRunningHeaders; exports.assignTableIds = assignTableIds; exports.blocksToMarkdown = blocksToMarkdown; exports.hasStructuredCellContent = hasStructuredCellContent; exports.noteSuffix = noteSuffix; exports.escapeHtmlCellText = escapeHtmlCellText; exports.CELL_EDGES = CELL_EDGES; exports.CELL_PAGES = CELL_PAGES; exports.CONTENT_CELLS = CONTENT_CELLS; exports.CELL_BASELINES = CELL_BASELINES; exports.unframeLayoutTables = unframeLayoutTables; exports.HEADING_RATIO_H1 = HEADING_RATIO_H1; exports.HEADING_RATIO_H2 = HEADING_RATIO_H2; exports.HEADING_RATIO_H3 = HEADING_RATIO_H3;
|
|
1362
|
+
//# sourceMappingURL=chunk-5JRL2VQ6.cjs.map
|