kordoc 4.1.0 → 4.2.1

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.
Files changed (126) hide show
  1. package/README.md +38 -11
  2. package/dist/{-AS4IABL2.js → -BSO3CDQQ.js} +13 -10
  3. package/dist/chunk-35U3MVA2.cjs +560 -0
  4. package/dist/chunk-35U3MVA2.cjs.map +1 -0
  5. package/dist/chunk-54WVWWT4.js +13 -0
  6. package/dist/chunk-54WVWWT4.js.map +1 -0
  7. package/dist/{chunk-UOO7LSDG.js → chunk-7FCNOKOR.js} +1 -9
  8. package/dist/chunk-7FCNOKOR.js.map +1 -0
  9. package/dist/{chunk-4KI23VHA.js → chunk-7IMNZ2BL.js} +16 -130
  10. package/dist/chunk-7IMNZ2BL.js.map +1 -0
  11. package/dist/{chunk-GQVSHGG4.js → chunk-BHILWIE6.js} +2 -2
  12. package/dist/{chunk-WO52HVQJ.js → chunk-BKBYTPSL.js} +2 -2
  13. package/dist/{parser-XX4QTDFQ.js → chunk-EZHWPKCH.js} +1343 -2020
  14. package/dist/chunk-EZHWPKCH.js.map +1 -0
  15. package/dist/chunk-F5ECB53I.js +505 -0
  16. package/dist/chunk-F5ECB53I.js.map +1 -0
  17. package/dist/chunk-GEPINOL6.js +83 -0
  18. package/dist/chunk-GEPINOL6.js.map +1 -0
  19. package/dist/chunk-H7OWEYH2.cjs +243 -0
  20. package/dist/chunk-H7OWEYH2.cjs.map +1 -0
  21. package/dist/chunk-HTCKGSSW.js +130 -0
  22. package/dist/chunk-HTCKGSSW.js.map +1 -0
  23. package/dist/chunk-J2RZ444H.js +243 -0
  24. package/dist/chunk-J2RZ444H.js.map +1 -0
  25. package/dist/chunk-KRAYUNFM.js +560 -0
  26. package/dist/chunk-KRAYUNFM.js.map +1 -0
  27. package/dist/{parser-PEOYBXBO.js → chunk-L5JWKIOT.js} +1345 -2024
  28. package/dist/chunk-L5JWKIOT.js.map +1 -0
  29. package/dist/{chunk-37VKMUST.cjs → chunk-LSXXGUWA.cjs} +34 -148
  30. package/dist/chunk-LSXXGUWA.cjs.map +1 -0
  31. package/dist/chunk-NNDVFNMJ.js +246 -0
  32. package/dist/chunk-NNDVFNMJ.js.map +1 -0
  33. package/dist/{chunk-37HJHCPA.js → chunk-PLTG6ZRF.js} +3 -3
  34. package/dist/{chunk-F2ZU3IZG.js → chunk-QOC7S5VE.js} +2 -2
  35. package/dist/{chunk-SSTK6IKK.js → chunk-QSB2RTX5.js} +14 -5
  36. package/dist/chunk-QSB2RTX5.js.map +1 -0
  37. package/dist/{parser-N4A7UGDK.cjs → chunk-R22KDUKW.cjs} +1309 -1989
  38. package/dist/chunk-R22KDUKW.cjs.map +1 -0
  39. package/dist/chunk-RBUBZ2TA.cjs +130 -0
  40. package/dist/chunk-RBUBZ2TA.cjs.map +1 -0
  41. package/dist/{chunk-YOO6ET6M.js → chunk-TCJRGFYY.js} +11 -1
  42. package/dist/chunk-TCJRGFYY.js.map +1 -0
  43. package/dist/{chunk-AX2R5Q2N.js → chunk-WJSGYVFD.js} +3 -3
  44. package/dist/{chunk-L2XQQTOY.js → chunk-WWYAYZ5U.js} +146 -47
  45. package/dist/chunk-WWYAYZ5U.js.map +1 -0
  46. package/dist/{chunk-O5VS7RIR.js → chunk-Z6LPEWIX.js} +3 -3
  47. package/dist/{chunk-O5VS7RIR.js.map → chunk-Z6LPEWIX.js.map} +1 -1
  48. package/dist/chunks-LRFS5NJE.js +10 -0
  49. package/dist/cli.js +77 -20
  50. package/dist/cli.js.map +1 -1
  51. package/dist/{detect-YEZX2XCF.js → detect-FX2ZHKZP.js} +4 -2
  52. package/dist/{formula-RXVSQPXI.js → formula-KSNAEBZ2.js} +23 -232
  53. package/dist/formula-KSNAEBZ2.js.map +1 -0
  54. package/dist/{formula-5NKVS2LR.cjs → formula-SB3NHDUM.cjs} +30 -240
  55. package/dist/formula-SB3NHDUM.cjs.map +1 -0
  56. package/dist/{formula-JCNF43NE.js → formula-SXC6LRRC.js} +23 -233
  57. package/dist/formula-SXC6LRRC.js.map +1 -0
  58. package/dist/image-ocr-DALT7PFQ.js +65 -0
  59. package/dist/image-ocr-DALT7PFQ.js.map +1 -0
  60. package/dist/image-ocr-N5Z32R4U.cjs +66 -0
  61. package/dist/image-ocr-N5Z32R4U.cjs.map +1 -0
  62. package/dist/image-ocr-SLUEM3FA.js +69 -0
  63. package/dist/image-ocr-SLUEM3FA.js.map +1 -0
  64. package/dist/index.cjs +555 -447
  65. package/dist/index.cjs.map +1 -1
  66. package/dist/index.d.cts +11 -5
  67. package/dist/index.d.ts +11 -5
  68. package/dist/index.js +157 -49
  69. package/dist/index.js.map +1 -1
  70. package/dist/mcp.js +24 -22
  71. package/dist/mcp.js.map +1 -1
  72. package/dist/models-KA4GLQK5.js +25 -0
  73. package/dist/parser-33TK5SMH.js +800 -0
  74. package/dist/parser-33TK5SMH.js.map +1 -0
  75. package/dist/parser-F5KY3YSD.js +804 -0
  76. package/dist/parser-F5KY3YSD.js.map +1 -0
  77. package/dist/parser-R4CXIXRN.cjs +803 -0
  78. package/dist/parser-R4CXIXRN.cjs.map +1 -0
  79. package/dist/pdf-ocr-34F5AQKK.js +12 -0
  80. package/dist/pdf-ocr-BXQZKU3N.js +15 -0
  81. package/dist/pdf-ocr-WGWZDHMV.cjs +13 -0
  82. package/dist/pdf-ocr-WGWZDHMV.cjs.map +1 -0
  83. package/dist/{profile-io-PLDQFPJA.js → profile-io-CBYHKLFU.js} +3 -3
  84. package/dist/profile-io-CBYHKLFU.js.map +1 -0
  85. package/dist/{rasterize-WWNQLKYW.js → rasterize-AWMM2CSW.js} +2 -2
  86. package/dist/render-Y3IE2FIK.js +10 -0
  87. package/dist/render-Y3IE2FIK.js.map +1 -0
  88. package/dist/seal-7RXFCRMT.js +10 -0
  89. package/dist/seal-7RXFCRMT.js.map +1 -0
  90. package/dist/{watch-SFHXZALC.js → watch-HKXCISVO.js} +12 -11
  91. package/dist/watch-HKXCISVO.js.map +1 -0
  92. package/package.json +2 -1
  93. package/dist/chunk-37VKMUST.cjs.map +0 -1
  94. package/dist/chunk-4KI23VHA.js.map +0 -1
  95. package/dist/chunk-L2XQQTOY.js.map +0 -1
  96. package/dist/chunk-SSTK6IKK.js.map +0 -1
  97. package/dist/chunk-UOO7LSDG.js.map +0 -1
  98. package/dist/chunk-YOO6ET6M.js.map +0 -1
  99. package/dist/chunks-WVMGF7JL.js +0 -10
  100. package/dist/formula-5NKVS2LR.cjs.map +0 -1
  101. package/dist/formula-JCNF43NE.js.map +0 -1
  102. package/dist/formula-RXVSQPXI.js.map +0 -1
  103. package/dist/parser-N4A7UGDK.cjs.map +0 -1
  104. package/dist/parser-PEOYBXBO.js.map +0 -1
  105. package/dist/parser-XX4QTDFQ.js.map +0 -1
  106. package/dist/provider-4FAYHJ6N.cjs +0 -39
  107. package/dist/provider-4FAYHJ6N.cjs.map +0 -1
  108. package/dist/provider-C6IOGIS5.js +0 -37
  109. package/dist/provider-C6IOGIS5.js.map +0 -1
  110. package/dist/provider-UIBW2MIH.js +0 -39
  111. package/dist/provider-UIBW2MIH.js.map +0 -1
  112. package/dist/render-T7S6H6AN.js +0 -10
  113. package/dist/seal-7PTL6MXH.js +0 -10
  114. package/dist/watch-SFHXZALC.js.map +0 -1
  115. /package/dist/{-AS4IABL2.js.map → -BSO3CDQQ.js.map} +0 -0
  116. /package/dist/{chunk-GQVSHGG4.js.map → chunk-BHILWIE6.js.map} +0 -0
  117. /package/dist/{chunk-WO52HVQJ.js.map → chunk-BKBYTPSL.js.map} +0 -0
  118. /package/dist/{chunk-37HJHCPA.js.map → chunk-PLTG6ZRF.js.map} +0 -0
  119. /package/dist/{chunk-F2ZU3IZG.js.map → chunk-QOC7S5VE.js.map} +0 -0
  120. /package/dist/{chunk-AX2R5Q2N.js.map → chunk-WJSGYVFD.js.map} +0 -0
  121. /package/dist/{chunks-WVMGF7JL.js.map → chunks-LRFS5NJE.js.map} +0 -0
  122. /package/dist/{detect-YEZX2XCF.js.map → detect-FX2ZHKZP.js.map} +0 -0
  123. /package/dist/{profile-io-PLDQFPJA.js.map → models-KA4GLQK5.js.map} +0 -0
  124. /package/dist/{render-T7S6H6AN.js.map → pdf-ocr-34F5AQKK.js.map} +0 -0
  125. /package/dist/{seal-7PTL6MXH.js.map → pdf-ocr-BXQZKU3N.js.map} +0 -0
  126. /package/dist/{rasterize-WWNQLKYW.js.map → rasterize-AWMM2CSW.js.map} +0 -0
package/README.md CHANGED
@@ -7,11 +7,13 @@
7
7
 
8
8
  > *대한민국에서 둘째가라면 서러울 문서지옥. 거기서 7년 버틴 공무원이 만들었습니다.*
9
9
 
10
- HWP 3.x/5.x, HWPX, HWPML, PDF, XLS, XLSX, DOCX — 관공서에서 쏟아지는 모든 문서를 파싱하고, 비교하고, 분석하고, 생성합니다.
10
+ HWP 3.x/5.x, HWPX, HWPML, PDF, XLS, XLSX, DOCX, 이미지(PNG/JPG/WebP) — 관공서에서 쏟아지는 모든 문서를 파싱하고, 비교하고, 분석하고, 생성합니다.
11
11
 
12
12
  [English](./README-EN.md)
13
13
 
14
- ![kordoc 데모](./demo.gif)
14
+ [![Kordoc 활용하기 — 영상 보기](./docs/video-demo.jpg)](https://youtu.be/Q13GmgDcIw0)
15
+
16
+ <sub>▶ 클릭하면 유튜브에서 재생됩니다.</sub>
15
17
 
16
18
  ---
17
19
 
@@ -27,7 +29,7 @@ npx -y kordoc setup
27
29
  1. 사용 중인 AI 클라이언트 번호 선택 (Claude Desktop / Cursor / Claude Code / Windsurf / VS Code / Gemini CLI / Zed / Antigravity — 설치된 건 `[감지됨]` 표시)
28
30
  2. 설정 파일 자동 패치 → 클라이언트 재시작
29
31
 
30
- Windows 도 자동으로 `cmd /c npx` 래핑. 수동 JSON 편집 불필요. 재시작하면 11개 문서 도구 (`parse_document`, `parse_table`, `fill_form`, `patch_document`, `generate_document` 등) 활성화.
32
+ Windows 도 자동으로 `cmd /c npx` 래핑. 수동 JSON 편집 불필요. 재시작하면 15개 문서 도구 (`parse_document`, `parse_table`, `fill_form`, `patch_document`, `generate_document` 등) 활성화.
31
33
 
32
34
  > **CLI 로만 쓸 거면** 설치 없이 `npx kordoc <파일>` 바로 사용. 아래 [CLI](#cli) 섹션 참고.
33
35
 
@@ -70,7 +72,7 @@ MCP 등록 대신 스킬(SKILL.md) 형태로 쓰려면:
70
72
 
71
73
  단순한 텍스트 추출을 넘어, **공문서 처리를 위한 모든 과정**을 자동화합니다.
72
74
 
73
- * **📄 어떤 문서든 마크다운으로**: `HWP3` (구버전), `HWP`(5.x), `HWPX`, `HWPML`, `PDF`, `XLS`, `XLSX`, `DOCX` 파일을 즉시 `Markdown`으로 변환합니다. AI(LLM)가 문서를 읽고 분석하기 가장 좋은 상태로 만들어줍니다.
75
+ * **📄 어떤 문서든 마크다운으로**: `HWP3` (구버전), `HWP`(5.x), `HWPX`, `HWPML`, `PDF`, `XLS`, `XLSX`, `DOCX` 파일은 물론 `PNG`/`JPG`/`WebP` 이미지(자동 OCR)까지 즉시 `Markdown`으로 변환합니다. AI(LLM)가 문서를 읽고 분석하기 가장 좋은 상태로 만들어줍니다.
74
76
  * **📊 복잡한 표(Table) 완벽 재현**: 선이 없는 PDF나 복잡하게 병합된 HWP 표도 구조를 분석하여 정확한 마크다운 테이블로 복원합니다. 법령 개정안 PDF의 신구조문대비표도 통째로 살립니다 (v3.16.2).
75
77
  * **🔍 신구대조표 자동 생성**: 두 문서의 차이점을 분석하여 무엇이 바뀌었는지 한눈에 보여줍니다. (HWP와 HWPX 간의 비교도 가능!)
76
78
  * **📝 마크다운을 다시 HWPX로**: AI가 작성한 내용을 다시 보고서 양식(`HWPX`)으로 되돌려줍니다. 이제 복사-붙여넣기 노가다에서 해방되세요.
@@ -84,6 +86,17 @@ MCP 등록 대신 스킬(SKILL.md) 형태로 쓰려면:
84
86
 
85
87
  ---
86
88
 
89
+ ## v4.2.1 변경사항
90
+
91
+ - **🖼️ 이미지(PNG/JPG/WebP) 직접 입력**: 스크린샷·스캔 이미지를 PDF 래핑 없이 바로 변환합니다 — `kordoc 서식.png` / `parse(buffer)` / MCP `parse_document`. 텍스트층이 없으므로 내장 OCR 이 자동 적용됩니다 (플래그 불필요, 디코딩은 optional dependency `sharp`).
92
+ - **📐 스캔본 표 괘선 감지**: OCR 경로에 래스터 괘선 감지기 신설 — 페이지 픽셀에서 수평/수직 괘선을 직접 찾아(이진화+런렝스, ML 없음) 선 기반 표 파이프라인에 태웁니다. 세로 병합 라벨 셀 + 다중줄 서술형 서식(정부 제출 서식류)도 rowspan/colspan 이 살아있는 표로 복원됩니다. 종전 클러스터 감지는 괘선이 안 잡히는 무테두리 표의 fallback 으로 유지.
93
+
94
+ ## v4.2.0 변경사항
95
+
96
+ - **👓 내장 텍스트 OCR (PP-OCRv5 korean)**: 스캔/이미지 PDF를 **API 키 없이 로컬 추론**으로 읽습니다 — `parse(buffer, { ocr: true })` / CLI `--ocr` / MCP `parse_document`의 `ocr` 옵션. 모델 ~18MB는 첫 사용 시 자동 다운로드+SHA 검증. 품질 신호가 가리키는 페이지(스캔·글꼴 매핑 깨짐)만 정밀 OCR 하고 정상 페이지는 그대로 두며, OCR 라인 좌표를 표 감지 파이프라인에 태워 **스캔본에서도 표가 복원**됩니다. 한국어 사전 11,945자(완성형 한글 11,172자 전량 + 자모·라틴·기호), 1페이지 ≈1초.
97
+ - **🩹 HWP3 구버전 파서 정합 3종**: 탭/필드코드/책갈피의 스트림 소비 결함으로 이후 텍스트가 통째로 오염되던 것과, 로마숫자(Ⅰ~Ⅹ)·원문자(①~⑩)·따옴표·글머리가 증발하던 것을 원저장소(rhwp) 후속 패치 반영으로 수리.
98
+ - **🐛 수식 OCR 페이지 off-by-one 수리**: `--pages` 필터가 한 페이지 밀리고 수식이 이전 페이지에 붙던 잠복 결함. XLSX/XLS `--keep-empty-cols` 배선 누락도 수리.
99
+
87
100
  ## v4.1.0 변경사항
88
101
 
89
102
  - **👁️ `render_document` MCP 도구 신설**: 생성·패치·양식 채움 결과 HWPX를 조판 그대로 **PNG 이미지로 응답에 직접 반환** — AI가 자기가 만든 문서를 눈으로 확인하고 다시 고치는 루프가 MCP 안에서 닫힙니다 (한컴 저장본은 조판 캐시, 생성본은 reflow 조판, 검색어 형광펜 지원).
@@ -108,7 +121,7 @@ MCP 등록 대신 스킬(SKILL.md) 형태로 쓰려면:
108
121
  ## v4.0.6 변경사항
109
122
 
110
123
  - **📊 PDF 무괘선 밴드 표 파편화 수정**: 세출예산 사업명세서류의 요약행 밴드에서 수직선이 끊겨 부서명이 유실되던 것을 4중 가드 수직선 브리지로 복원 (광진구 2026 세출예산 637곳 실측).
111
- - **📝 HWPX 캡션 안 중첩표 보존 (#46)**: 캡션 속 표 내용이 통째로 사라지던 것(304자 중 297자)을 문서 순서 평탄화로 보존. 제보 [@jumaniac](https://github.com/jumaniac), 조언 [@hiSandog](https://github.com/hiSandog).
124
+ - **📝 HWPX 캡션 안 중첩표 보존 (#46)**: 캡션 속 표 내용이 통째로 사라지던 것(304자 중 297자)을 문서 순서 평탄화로 보존. 제보 [@jumaniac](https://github.com/jumaniac), 조언 @hiSandog.
112
125
 
113
126
  ## v4.0.5 변경사항
114
127
 
@@ -148,7 +161,7 @@ MCP 등록 대신 스킬(SKILL.md) 형태로 쓰려면:
148
161
 
149
162
  ## v3.18.0 변경사항
150
163
 
151
- - **🎨 서식 프로필**: 표의 위상뿐 아니라 **테두리·음영·열 실측폭·셀 글꼴까지** 원본 문서 없이 재현합니다. `hwpxToProfile(hwpx)`로 레퍼런스 서식만 JSON으로 추출하고, `markdownToHwpx(md, { profile })`로 다른 문서에 그 서식을 입힙니다 — 원본 유출 없이 기관 서식만 공유·재현(이슈 #41, 스키마 [`docs/format-profile-spec.md`](docs/format-profile-spec.md)). 스키마·예시 기여: [@chiclooc-rgb](https://github.com/chiclooc-rgb) (PR #42).
164
+ - **🎨 서식 프로필**: 표의 위상뿐 아니라 **테두리·음영·열 실측폭·셀 글꼴까지** 원본 문서 없이 재현합니다. `hwpxToProfile(hwpx)`로 레퍼런스 서식만 JSON으로 추출하고, `markdownToHwpx(md, { profile })`로 다른 문서에 그 서식을 입힙니다 — 원본 유출 없이 기관 서식만 공유·재현(이슈 #41, 스키마 [`docs/format-profile-spec.md`](docs/format-profile-spec.md)). 스키마·예시 기여: [@ai-localgov-officer](https://github.com/ai-localgov-officer) (PR #42).
152
165
 
153
166
  ## v3.17.0 변경사항
154
167
 
@@ -491,7 +504,7 @@ MCP 등록 대신 스킬(SKILL.md) 형태로 쓰려면:
491
504
  - **구조화 파싱** — `IRBlock[]`과 `DocumentMetadata`에 직접 접근. 마크다운 넘어선 데이터 활용.
492
505
  - **페이지 범위** — `parse(buffer, { pages: "1-3" })` — 필요한 페이지만 빠르게.
493
506
  - **Markdown → HWPX** — 역변환. AI가 생성한 내용을 바로 공문서로.
494
- - **OCR 연동** 이미지 기반 PDF 텍스트 추출 (Tesseract, Claude Vision 등 프로바이더 직접 제공).
507
+ - **OCR**스캔/이미지 PDF 텍스트 추출. 내장 엔진(`ocr: true`, PP-OCRv5 korean) 또는 외부 프로바이더(Tesseract, Claude Vision 등).
495
508
  - **Watch 모드** — `kordoc watch ./수신함 -d ./변환결과 --webhook https://...`
496
509
  - **MCP 7개 도구** — parse_document, detect_format, parse_metadata, parse_pages, parse_table, compare_documents, parse_form
497
510
  - **에러 코드** — `"ENCRYPTED"`, `"ZIP_BOMB"`, `"IMAGE_BASED_PDF"` 등 구조화된 에러 핸들링
@@ -638,12 +651,26 @@ const result = await parse(buffer, { pages: "1-3" }) // 1~3 페이지만
638
651
  const result = await parse(buffer, { pages: [1, 5, 10] }) // 특정 페이지
639
652
  ```
640
653
 
641
- ### OCR (이미지 PDF)
654
+ ### OCR (스캔/이미지 PDF) — 내장 엔진 (v4.2.0+)
655
+
656
+ ```typescript
657
+ // 내장 OCR (PP-OCRv5 korean, 첫 사용 시 모델 ~18MB 자동 다운로드)
658
+ const result = await parse(buffer, { ocr: true }) // OCR 필요 페이지만 자동 판정
659
+ const result = await parse(buffer, { ocr: "force" }) // 전 페이지 강제 OCR
660
+ ```
661
+
662
+ - **API 키·외부 서비스 불필요** — det(선 검출)+rec(CTC 인식) ONNX 를 로컬 CPU 로 추론합니다
663
+ (PaddlePaddle 공식 변환본, Apache-2.0 / 한국어 사전 11,945자 — 완성형 한글 11,172자 전량 + 자모·라틴·기호).
664
+ - **페이지 단위 정밀 적용** — 텍스트층이 없는 스캔 페이지, ToUnicode 가 깨진 페이지
665
+ (`needsOcr` 신호)만 OCR 하고 정상 페이지의 파싱 결과는 그대로 유지합니다.
666
+ - **표 복원** — OCR 라인 좌표를 기존 블록 파이프라인(xy-cut 읽기 순서 + 클러스터 표
667
+ 감지)에 태우므로 스캔본에서도 표 구조가 복원됩니다.
668
+ - 외부 OCR 을 쓰고 싶으면 종전대로 프로바이더 함수를 전달하세요:
642
669
 
643
670
  ```typescript
644
671
  const result = await parse(buffer, {
645
672
  ocr: async (pageImage, pageNumber, mimeType) => {
646
- return await myOcrService.recognize(pageImage)
673
+ return await myOcrService.recognize(pageImage) // Claude Vision, Tesseract 등
647
674
  }
648
675
  })
649
676
  ```
@@ -655,8 +682,8 @@ PDF는 텍스트층이 있어도 ToUnicode/CMap이 깨졌거나 NUL 등 제어
655
682
  ```typescript
656
683
  const r = await parsePdf(buffer)
657
684
  if (r.success && r.qualitySummary?.needsOcr) {
658
- // OCR 큐로 라우팅 (kordoc은 OCR 기본 탑재하지 않음)
659
- await routeToOcr(buffer, r.qualitySummary.ocrCandidatePages)
685
+ // 내장 OCR 재시도 (v4.2.0+) — 또는 외부 OCR 큐로 라우팅
686
+ const retried = await parse(buffer, { ocr: true })
660
687
  }
661
688
 
662
689
  // 페이지 단위 신호
@@ -30,6 +30,7 @@ import {
30
30
  parseHwp3,
31
31
  parseHwpml,
32
32
  parseHwpx,
33
+ parseImage,
33
34
  parsePdf,
34
35
  parseXls,
35
36
  parseXlsx,
@@ -39,8 +40,9 @@ import {
39
40
  renderHtml,
40
41
  unknownFontWarnings,
41
42
  validateHwpx
42
- } from "./chunk-L2XQQTOY.js";
43
- import "./chunk-UOO7LSDG.js";
43
+ } from "./chunk-WWYAYZ5U.js";
44
+ import "./chunk-7FCNOKOR.js";
45
+ import "./chunk-54WVWWT4.js";
44
46
  import {
45
47
  detectFormat,
46
48
  detectOle2Format,
@@ -49,7 +51,7 @@ import {
49
51
  isOldHwpFile,
50
52
  isPdfFile,
51
53
  isZipFile
52
- } from "./chunk-YOO6ET6M.js";
54
+ } from "./chunk-TCJRGFYY.js";
53
55
  import "./chunk-MOL7MDBG.js";
54
56
  import {
55
57
  applySplices,
@@ -57,7 +59,7 @@ import {
57
59
  buildRangeSplices,
58
60
  placeSealHwpx,
59
61
  scanSectionXml
60
- } from "./chunk-AX2R5Q2N.js";
62
+ } from "./chunk-WJSGYVFD.js";
61
63
  import {
62
64
  DEFAULT_REDACT_RULES,
63
65
  redactMarkdown,
@@ -65,10 +67,10 @@ import {
65
67
  } from "./chunk-DZIXKL7E.js";
66
68
  import {
67
69
  blocksToChunks
68
- } from "./chunk-F2ZU3IZG.js";
70
+ } from "./chunk-QOC7S5VE.js";
69
71
  import {
70
72
  blocksToMarkdown
71
- } from "./chunk-SSTK6IKK.js";
73
+ } from "./chunk-QSB2RTX5.js";
72
74
  import {
73
75
  SPACE_EM_FIXED,
74
76
  SPACE_EM_FONT,
@@ -78,11 +80,11 @@ import {
78
80
  renderHwpxToSvg,
79
81
  simulateWrap,
80
82
  simulateWrapKeepWord
81
- } from "./chunk-37HJHCPA.js";
82
- import "./chunk-GQVSHGG4.js";
83
+ } from "./chunk-PLTG6ZRF.js";
84
+ import "./chunk-BHILWIE6.js";
83
85
  import {
84
86
  VERSION
85
- } from "./chunk-O5VS7RIR.js";
87
+ } from "./chunk-Z6LPEWIX.js";
86
88
  export {
87
89
  DEFAULT_REDACT_RULES,
88
90
  HwpxSession,
@@ -133,6 +135,7 @@ export {
133
135
  parseHwp3,
134
136
  parseHwpml,
135
137
  parseHwpx,
138
+ parseImage,
136
139
  parsePdf,
137
140
  parseXls,
138
141
  parseXlsx,
@@ -150,4 +153,4 @@ export {
150
153
  unknownFontWarnings,
151
154
  validateHwpx
152
155
  };
153
- //# sourceMappingURL=-AS4IABL2.js.map
156
+ //# sourceMappingURL=-BSO3CDQQ.js.map