Upload ORIGINAL_README.md with huggingface_hub
Browse files- ORIGINAL_README.md +126 -0
ORIGINAL_README.md
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# AI๋ฅผ ์ํ HWP ๋ณํ๊ธฐ (pyhwp Python 3 Port)
|
| 2 |
+
|
| 3 |
+
> "AI๊ฐ ์ HWP ํ์ผ์ ์ธ์ํ์ง ๋ชปํฉ๋๊น?"
|
| 4 |
+
|
| 5 |
+
์ด ํ๋ก์ ํธ๋ ํ๊ตญ์ ๊ตญ์ ๊ฐ์ฌ์์ ์ด์ฌ๋ช
๋ํต๋ น์ ์ด ํ ๋ง๋ ๋ฐ์ธ์์ ์์๋์์ต๋๋ค. ๋น๋ก ์ ๋ถ๊ฐ ๊ฐ๋ฐฉํ ํฌ๋งท์ธ HWPX ๋์
์ ์ถ์งํ๊ณ ์์ง๋ง, ์ฌ์ ํ ์๋ง์ ๊ณต๊ณต ๋ฐ์ดํฐ์ ์ผ๋ฐ ์ฌ์ฉ์๋ค์ ๋ฌธ์๋ ๋ ๊ฑฐ์ HWP ํฌ๋งท(OLE ๊ธฐ๋ฐ)์ผ๋ก ์ ๊ฒจ ์์ต๋๋ค. ๋๋ค์์ ์ฌ์ฉ์๋ค์ HWP์ HWPX์ ์ฐจ์ด์กฐ์ฐจ ์ธ์ํ์ง ๋ชปํ๋ฉฐ, AI ๊ธฐ์ ์ ํํ์์ ์์ธ๋๊ณ ์์ต๋๋ค.
|
| 6 |
+
|
| 7 |
+
## ๐ ํ๋ก์ ํธ ๋ฐฐ๊ฒฝ ๋ฐ ๋ชฉ์
|
| 8 |
+
|
| 9 |
+
**"ํ๊ธ(HWP) ์ค์น ์์ด, ๋ชจ๋ ํ๊ฒฝ์์ HWP๋ฅผ ์ดํดํ๋ค."**
|
| 10 |
+
|
| 11 |
+
๊ธฐ์กด์ AI๊ฐ HWP ํ์ผ์ ํ์ตํ๊ฑฐ๋ ์ธ์ํ๊ฒ ํ๋ ค๋ฉด, ๊ณ ๊ฐ์ '์๋์ํ๊ธ' ์๋ํ๋ก์ธ์๊ฐ ์ค์น๋ ์๋์ฐ ํ๊ฒฝ์์ OLE Automation์ ์ด์ฉํด ํ
์คํธ๋ฅผ ์ถ์ถํ๋ ๊ฒ์ด ์ ์ผํ ๋์์ด์์ต๋๋ค. ์ด๋ ๋ฆฌ๋
์ค ์๋ฒ, ๋งฅ(Mac), ๋ชจ๋ฐ์ผ ํ๊ฒฝ, ๊ทธ๋ฆฌ๊ณ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ์ AI ์์ด์ ํธ(Cursor, Antigravity ๋ฑ)๊ฐ HWP ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ๋ฐ ์น๋ช
์ ์ธ ์ฅ๋ฒฝ์ด์์ต๋๋ค.
|
| 12 |
+
|
| 13 |
+
๊ธฐ์กด์ `pyhwp`๋ผ๋ ํ๋ฅญํ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์กด์ฌํ์ผ๋, ์ค๋ ๊ธฐ๊ฐ Python 2.7 ํ๊ฒฝ์ ๋จธ๋ฌผ๋ฌ ์์ด ํ๋์ ์ธ AI ํ์ดํ๋ผ์ธ(Python 3.10+)์ ํตํฉํ๊ธฐ ์ด๋ ค์ ์ต๋๋ค. ์ด์ ์ฐ๋ฆฌ๋ **pyhwp๋ฅผ Python 3.11๋ก ์๋ฒฝํ๊ฒ ํฌํ
ํ๊ณ , AI๊ฐ ์ฆ์ ์ดํดํ ์ ์๋ HTML ๋ณํ ๊ธฐ๋ฅ์ ์ถ๊ฐ**ํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
|
| 14 |
+
|
| 15 |
+
> **Note:** ๋ณธ๋ ์ด๋ฌํ ์ํธ์ด์ฉ์ฑ ์ง์์ HWP ํฌ๋งท์ ๋ง๋ ์ ์กฐ์ฌ(ํ๊ธ๊ณผ์ปดํจํฐ) ์ฐจ์์์ ์ง์ ์ ๊ณต๋์์ด์ผ ๋ง๋
ํ ๊ธฐ๋ฅ์
๋๋ค. ํ์ง๋ง ์ ์กฐ์ฌ์ ์ง์ ๋ถ์ฌ๋ก ์ธํด ์๋ง์ ๊ฐ๋ฐ์์ ์ฌ์ฉ์๊ฐ ๋ถํธ์ ๊ฒช์ด์์ผ๋ฉฐ, ๊ฒฐ๊ตญ ์ปค๋ฎค๋ํฐ ์ฃผ๋์ ์คํ์์ค ํ๋ก์ ํธ๊ฐ ์ด ๊ณต๋ฐฑ์ ๋ฉ์ฐ๊ฒ ๋์์ต๋๋ค.
|
| 16 |
+
์ด ํ๋ก์ ํธ๋ ์ํฐ๊ทธ๋ํผํฐ์ ์์ด์ ํธ๋ฉ๋์ , ํด๋ก๋ ์๋ท4.5 ๋ฒ์ ์ ์ด์ฉํ์ฌ 2์๊ฐ์ ๋์ ์์
์ ํตํด ์๋ฃ ๋์์ต๋๋ค.
|
| 17 |
+
๊ทธ ๋งํผ ์ด๋ ๊ฒ ๊ฐ๋จํ๊ฒ ๊ฐ์ ํ ์ ์๋ ์์
์์๋ ๋ถ๊ตฌํ๊ณ 20๋
๊ฐ ๊ฐ์ ์ด ์ด๋ฃจ์ด์ง์ง ์์๋ ๊ฒ์ ๋งค์ฐ ์์ฌ์ด ์ ์ด๋ฉฐ, ์ด ํ๋ก์ ํธ์ ์๊ฐ์ ์ฃผ์ ,
|
| 18 |
+
๊ทธ๋ฆฌ๊ณ ์ด ํ๋ก์ ํธ๊ฐ ๊ฐ๋ฅํ ์ ์์๋ ๊ธฐ์ด๊ฐ ๋์ด์ค pyhwp ๊ฐ๋ฐ์ ์ ๋งค์ฐ ํฐ ๊ฐ์ฌ๋ฅผ ๋๋ฆฝ๋๋ค.
|
| 19 |
+
|
| 20 |
+
## ๐ ๏ธ ๊ธฐ์ ์ ๊ฐ์ ์ฌํญ (Why This Fork?)
|
| 21 |
+
|
| 22 |
+
์ด ํ๋ก์ ํธ๋ ๋จ์ํ ๋ฒ์ ์
๊ทธ๋ ์ด๋๊ฐ ์๋๋๋ค. "์ฃฝ์ด์๋" ์ฝ๋๋ฅผ ํ๋์ ์ธ ๊ฐ๋ฐ ํ๊ฒฝ์ผ๋ก ๋์ด๋ ค๋์ต๋๋ค.
|
| 23 |
+
|
| 24 |
+
1. **Python 3.11 ์์ ์ง์**:
|
| 25 |
+
- `2to3` ์๋ ๋ณํ์ ๊ทธ์น์ง ์๊ณ , `metaclass`, `bytes/str` ์ฒ๋ฆฌ, `ugettext` ๋ฑ Python 2 ๊ธฐ๋ฐ์ ๋ ๊ฑฐ์ ์ฝ๋๋ฅผ ์ ๋ฉด ๋ฆฌํฉํ ๋งํ์ต๋๋ค.
|
| 26 |
+
- `six` ๋ชจ๋ ์์กด์ฑ์ ์ ๊ฑฐํ๊ณ ํ๋์ ์ธ Python ๋ฌธ๋ฒ์ ์ ์ฉํ์ต๋๋ค.
|
| 27 |
+
|
| 28 |
+
2. **AI ์ต์ ํ ๋ณํ๊ธฐ (`HwpToHtmlConverter`)**:
|
| 29 |
+
- ๋ณต์กํ ๋ด๋ถ ๋ก์ง์ ๋ชฐ๋ผ๋ ๋จ ๋ ์ค์ ์ฝ๋๋ก HWP๋ฅผ HTML๋ก ๋ณํํ ์ ์๋ ๋ํผ(Wrapper)๋ฅผ ๊ตฌํํ์ต๋๋ค.
|
| 30 |
+
- ๋ณํ๋ HTML์ CSS ์คํ์ผ๊ณผ ์ด๋ฏธ์ง(`bindata`)๋ฅผ ํฌํจํ์ฌ ์๋ณธ์ ๋ ์ด์์์ ์ต๋ํ ๋ณด์กดํฉ๋๋ค. ์ด๋ VLM(Vision Language Model)์ด๋ RAG(Retrieval-Augmented Generation) ์์คํ
์ด ๋ฌธ์๋ฅผ ์๊ฐ์ /๊ตฌ์กฐ์ ์ผ๋ก ์ดํดํ๋ ๋ฐ ํฐ ๋์์ ์ค๋๋ค.
|
| 31 |
+
|
| 32 |
+
3. **ํ๋ซํผ ๋
๋ฆฝ์ฑ**:
|
| 33 |
+
- ์๋์ฐ๋ฟ๋ง ์๋๋ผ **Linux, macOS, Mobile** ๋ฑ Python์ด ๋๋ ๋ชจ๋ ํ๊ฒฝ์์ ์๋ํฉ๋๋ค.
|
| 34 |
+
- ๋ฌด๊ฑฐ์ด ํ๊ธ ์๋ํ๋ก์ธ์ ์ค์น๊ฐ **์ ํ ํ์ ์์ต๋๋ค**.
|
| 35 |
+
|
| 36 |
+
## ๐ฆ ์ค์น ๋ฐฉ๋ฒ
|
| 37 |
+
|
| 38 |
+
# PyPI์์ ์ค์น (์ถ์ฒ)
|
| 39 |
+
pip install pyhwp2
|
| 40 |
+
|
| 41 |
+
# ์์ค ์ฝ๋์์ ์ค์น (๊ฐ๋ฐ ๋ฒ์ )
|
| 42 |
+
git clone https://github.com/your-repo/pyhwp-py3.git
|
| 43 |
+
cd pyhwp-py3
|
| 44 |
+
pip install -e .
|
| 45 |
+
|
| 46 |
+
|
| 47 |
+
## ๐ป ์ฌ์ฉ ์์ (Python Code)
|
| 48 |
+
|
| 49 |
+
AI ์์ด์ ํธ ๊ฐ๋ฐ์๋ Python ๊ฐ๋ฐ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
|
| 50 |
+
|
| 51 |
+
```python
|
| 52 |
+
from pyhwp.html_converter import HwpToHtmlConverter
|
| 53 |
+
|
| 54 |
+
# HWP ํ์ผ์ HTML๋ก ๋ณํ
|
| 55 |
+
# styles.css ์์ฑ ๋ฐ bindata(์ด๋ฏธ์ง) ํด๋ ์๋ ์ถ์ถ
|
| 56 |
+
hwp_file = "document.hwp"
|
| 57 |
+
html_output = "document.html"
|
| 58 |
+
|
| 59 |
+
try:
|
| 60 |
+
converter = HwpToHtmlConverter(hwp_file)
|
| 61 |
+
converter.convert(html_output)
|
| 62 |
+
print(f"๋ณํ ์๋ฃ: {html_output}")
|
| 63 |
+
# ์ดํ ์์ฑ๋ HTML์ AI ๋ชจ๋ธ(OpenAI, Claude ๋ฑ)์ ์ปจํ
์คํธ๋ก ์ฃผ์
ํ๋ฉด ๋ฉ๋๋ค.
|
| 64 |
+
except Exception as e:
|
| 65 |
+
print(f"๋ณํ ์คํจ: {e}")
|
| 66 |
+
```
|
| 67 |
+
|
| 68 |
+
## ๐ฅ๏ธ ์ปค๋งจ๋๋ผ์ธ ์ฌ์ฉ๋ฒ (CLI Usage)
|
| 69 |
+
|
| 70 |
+
ํ์ด์ฌ ์ฝ๋๋ฅผ ์์ฑํ์ง ์๊ณ ๋ ํฐ๋ฏธ๋(CMD, PowerShell, Bash)์์ ๋ฐ๋ก ๋ณํํ ์ ์์ต๋๋ค.
|
| 71 |
+
|
| 72 |
+
### 1. Python ๋ชจ๋๋ก ์คํ
|
| 73 |
+
`pip install pyhwp2` ํ ๋ค์๊ณผ ๊ฐ์ด ์คํํ์ธ์.
|
| 74 |
+
|
| 75 |
+
```bash
|
| 76 |
+
# ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ (ํ์ผ๋ช
.html๋ก ์๋ ์ ์ฅ)
|
| 77 |
+
python -m pyhwp.html_converter ๋ฌธ์.hwp
|
| 78 |
+
|
| 79 |
+
# ์ถ๋ ฅ ํ์ผ๋ช
์ง์
|
| 80 |
+
python -m pyhwp.html_converter ๋ฌธ์.hwp -o ๊ฒฐ๊ณผ๋ฌผ.html
|
| 81 |
+
```
|
| 82 |
+
|
| 83 |
+
### 3. ๋จ์ผ HTML ํ์ผ๋ก ๋ณํ (CSS์ ์ด๋ฏธ์ง ํฌํจ)
|
| 84 |
+
๊ธฐ๋ณธ์ ์ผ๋ก HWP๋ฅผ HTML๋ก ๋ณํํ๋ฉด HTML ํ์ผ, CSS ํ์ผ, ๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ์ง ํด๋(bindata)๊ฐ ๊ฐ๊ฐ ์์ฑ๋ฉ๋๋ค.
|
| 85 |
+
ํ์ง๋ง `--embed-image` ์ต์
์ ์ฌ์ฉํ๋ฉด **๋ชจ๋ CSS์ ์ด๋ฏธ์ง๋ฅผ ํ๋์ HTML ํ์ผ์ ํตํฉ**ํ์ฌ ๊ด๋ฆฌ๊ฐ ํจ์ฌ ์ฌ์์ง๋๋ค.
|
| 86 |
+
|
| 87 |
+
```bash
|
| 88 |
+
# hwp5html ๋ช
๋ น์ด ์ฌ์ฉ (๋จ์ผ ํ์ผ ์์ฑ)
|
| 89 |
+
python -m hwp5.hwp5html --embed-image ๋ฌธ์.hwp --output ๋จ์ผํ์ผ.html
|
| 90 |
+
|
| 91 |
+
# ๋๋ hwp2html ๋ช
๋ น์ด ์ฌ์ฉ (์ค์น๋ ๊ฒฝ์ฐ)
|
| 92 |
+
hwp5html --embed-image ๋ฌธ์.hwp --output ๋จ์ผํ์ผ.html
|
| 93 |
+
```
|
| 94 |
+
|
| 95 |
+
์ด ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ํนํ ์ ์ฉํฉ๋๋ค:
|
| 96 |
+
- ์ด๋ฉ์ผ๋ก HTML ํ์ผ์ ์ฒจ๋ถํ ๋
|
| 97 |
+
- ์น ์๋ฒ ์์ด ๋ก์ปฌ์์ HTML์ ์ด์ด๋ณผ ๋
|
| 98 |
+
- AI ๋ชจ๋ธ์ ๋จ์ผ ํ์ผ๋ก ์ ๋ฌํ ๋
|
| 99 |
+
```
|
| 100 |
+
|
| 101 |
+
### 2. ๋จ๋
์คํ ํ์ผ (.exe) ์ฌ์ฉ (Windows)
|
| 102 |
+
Python ์ค์น๊ฐ ์๋ ํ๊ฒฝ์์๋ `hwp2html.exe` ํ์ผ ํ๋๋ง ์์ผ๋ฉด ๋ฉ๋๋ค. (`dist/` ํด๋ ํ์ธ)
|
| 103 |
+
|
| 104 |
+
```bash
|
| 105 |
+
# ๊ทธ๋ฅ ๋๋๊ทธ ์ค ๋๋กญ ํ๊ฑฐ๋ ํฐ๋ฏธ๋์์ ์คํ
|
| 106 |
+
hwp2html.exe ๋ฌธ์.hwp
|
| 107 |
+
|
| 108 |
+
# ์ต์
์ฌ์ฉ
|
| 109 |
+
hwp2html.exe ๋ฌธ์.hwp -o ๊ฒฐ๊ณผ/๋ณด๊ณ ์.html
|
| 110 |
+
```
|
| 111 |
+
|
| 112 |
+
## ๐ค AI ์์ด์ ํธ ํ์ฉ (MCP & Automation)
|
| 113 |
+
|
| 114 |
+
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ **MCP (Model Context Protocol)** ์๋ฒ๋ **Cursor**, **์ํฐ๊ทธ๋ํผํฐ(Antigravity)** ๊ฐ์ AI ์ฝ๋ฉ ์์ด์ ํธ ๋ด์์ HWP ์ฒ๋ฆฌ ๋๊ตฌ๋ก ํ์ฉํ ์ ์์ต๋๋ค.
|
| 115 |
+
|
| 116 |
+
- **Before**: ์์ด์ ํธ๊ฐ HWP ํ์ผ์ ๋ง๋๋ฉด "์ฝ์ ์ ์๋ ๋ฐ์ด๋๋ฆฌ ํ์ผ์
๋๋ค"๋ผ๊ณ ํฌ๊ธฐํจ.
|
| 117 |
+
- **After**: ์์ด์ ํธ๊ฐ ๋ด๋ถ์ ์ผ๋ก `HwpToHtmlConverter`๋ฅผ ํธ์ถํด HTML ํ
์คํธ๋ก ๋ณํํ ๋ค, ๋ด์ฉ์ ์๋ฒฝํ๊ฒ ์ดํดํ๊ณ ์์ฝ/๋ถ์ํจ.
|
| 118 |
+
|
| 119 |
+
## ๐ ๊ธฐ์ฌ ์์ฒญ
|
| 120 |
+
|
| 121 |
+
์ด ํ๋ก์ ํธ๊ฐ Python 3๋ก์ ์๋ช
๋ ฅ์ ์ป์์ง๋ง, ์ฌ์ ํ ๊ฐ์ ํ ์ ์ ๋ง์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด ๋ฌธ์๊ฐ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋จธ๋ค์๊ฒ ์๊ฐ์ด ๋์ด, **"ํ์์ ์ธ ํฌ๋งท์ ๊ฐ๋ฐฉํ์ฌ AI์ ์์ญ์ผ๋ก ๊ฐ์ ธ์ค๋"** ์์ง์์ ๋์ฐธํ๊ฒ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
|
| 122 |
+
|
| 123 |
+
์คํ์์ค ์ ์ ์ ํตํด, ๋ ๋ง์ ๊ณต๊ณต ๋ฐ์ดํฐ๊ฐ AI์ ์ฐ๊ฒฐ๋ ์ ์๋๋ก ๊ธฐ์ฌํด ์ฃผ์ธ์.
|
| 124 |
+
|
| 125 |
+
|
| 126 |
+
๋ฐ์ ์ค (june9713@gmail.com ์ฃผ์ํ์ฌ ๋ฅ์คํธ๋์ธ ๋ํ์ด์ฌ)
|