# ๐ OCR ๋ฌธ์ ์ธ์ ๊ธฐ๋ฅ ํตํฉ ์๋ฃ ๋ณด๊ณ ์ ## ๐ฏ ํ๋ก์ ํธ ๊ฐ์ ๋ฐ์ฃผ์, ๊ฑฐ๋๋ช ์ธ์ ๋ฑ์ ๋ฌธ์ ์ด๋ฏธ์ง๋ฅผ ์ดฌ์ ๋๋ ์ ๋ก๋ํ์ฌ ํ ์คํธ๋ฅผ ์๋์ผ๋ก ์ถ์ถํ๊ณ , ์์คํ ์ ์๋ ์ ๋ ฅํ๋ OCR ๊ธฐ๋ฅ์ ์ฑ๊ณต์ ์ผ๋ก ๊ตฌํํ์์ต๋๋ค. --- ## โ ๊ตฌํ ์๋ฃ ํญ๋ชฉ ### 1. OCR ์ปดํฌ๋ํธ ๊ฐ๋ฐ (`ocrCapture.js`) - โ Tesseract.js ๊ธฐ๋ฐ OCR ์์ง ํตํฉ - โ ํ๊ตญ์ด/์์ด ๋์ ์ธ์ - โ ์ด๋ฏธ์ง ์ ๋ก๋ (JPG, PNG, PDF) - โ ์น์บ ์ค์๊ฐ ์ดฌ์ ์ฐ๋ - โ ๋ฐ์ฃผ์ ๋ฐ์ดํฐ ์๋ ํ์ฑ - โ ์ธ์ ๊ฒฐ๊ณผ ์๋ ์์ ๊ธฐ๋ฅ - โ ์ ๋ขฐ๋ ํ์ ๋ฐ ๊ฒ์ฆ ### 2. ์คํ์ผ๋ง (`ocrCapture.css`) - โ shadcn/ui ๋์์ธ ์์คํ ์ ์ฉ - โ ๋ฐ์ํ ๋ ์ด์์ (๋ชจ๋ฐ์ผ/ํ๋ธ๋ฆฟ/๋ฐ์คํฌํฑ) - โ ๋ถ๋๋ฌ์ด ์ ๋๋ฉ์ด์ ํจ๊ณผ - โ ์ ๊ทผ์ฑ ๊ณ ๋ ค (ํค๋ณด๋ ๋ค๋น๊ฒ์ด์ , ํฌ์ปค์ค ํ์) - โ ๋คํฌ๋ชจ๋ ์ง์ ์ค๋น ### 3. ๋ฐ์ฃผ๊ด๋ฆฌ ํ์ด์ง ํตํฉ - โ OCR ๋ฒํผ ์ถ๊ฐ (๊ฒ์ ์น์ ) - โ ์๋ ๋ฐ์ดํฐ ์ ๋ ฅ ๋ก์ง - โ ๋ฐ์ฃผ ๋ฑ๋ก ๋ชจ๋ฌ ์ฐ๋ - โ ์ฝ๋ฐฑ ํจ์ ์ค์ ### 4. ๋ฌธ์ํ - โ ์ฌ์ฉ ๊ฐ์ด๋ ์์ฑ - โ API ๋ ํผ๋ฐ์ค ๋ฌธ์ - โ ๋ฌธ์ ํด๊ฒฐ ๊ฐ์ด๋ - โ ์ฝ๋ ์ฃผ์ ์ถ๊ฐ --- ## ๐๏ธ ํ์ผ ๊ตฌ์กฐ ``` ํ๋ฉด๊ฐ๋ฐ/ โโโ css/ โ โโโ ocrCapture.css # OCR ์คํ์ผ โโโ js/ โ โโโ components/ โ โโโ ocrCapture.js # OCR ๋ฉ์ธ ์ปดํฌ๋ํธ โ โโโ ocrCapture_์ฌ์ฉ๊ฐ์ด๋.md # ์ฌ์ฉ ๊ฐ์ด๋ โ โโโ webcamCapture.js # ์น์บ ์ฐ๋ โโโ ๋ฐ์ฃผ๊ด๋ฆฌ.html # ํตํฉ ์๋ฃ โโโ ๊ฐ์ด๋/ โโโ OCR_๋ฌธ์์ธ์_ํตํฉ์๋ฃ.md # ๋ณธ ๋ฌธ์ ``` --- ## ๐ ์ฃผ์ ๊ธฐ๋ฅ ### 1. ์ด๋ฏธ์ง ์ ๋ก๋ ๋ฐ ์ธ์ ``` ์ฌ์ฉ์ โ ์ด๋ฏธ์ง ์ ํ โ OCR ์ฒ๋ฆฌ โ ํ ์คํธ ์ถ์ถ โ ๋ฐ์ดํฐ ํ์ฑ ``` **์ง์ ํ์:** - JPG/JPEG (๊ถ์ฅ โญโญโญ) - PNG (๊ถ์ฅ โญโญโญโญโญ) - PDF (๊ถ์ฅ โญโญโญ) **์ต๋ ํ์ผ ํฌ๊ธฐ:** 10MB ### 2. ์น์บ ์ค์๊ฐ ์ดฌ์ ``` ์น์บ ์ด๊ธฐ โ ๋ฌธ์ ์ดฌ์ โ ์ด๋ฏธ์ง ๋ฏธ๋ฆฌ๋ณด๊ธฐ โ OCR ์คํ ``` **์ฅ์ :** - ์ฆ์ ์ดฌ์ ๊ฐ๋ฅ - ํ์ผ ์ ๋ก๋ ๋ถํ์ - ๋ชจ๋ฐ์ผ์์๋ ์ฌ์ฉ ๊ฐ๋ฅ ### 3. ์๋ ๋ฐ์ดํฐ ์ถ์ถ OCR์ด ์๋์ผ๋ก ์ธ์ํ๋ ์ ๋ณด: | ๋ฐ์ดํฐ | ์ธ์ ํจํด | ์์ | |--------|----------|------| | ๋ฐ์ฃผ๋ฒํธ | `๋ฐ์ฃผ๋ฒํธ`, `PO-NO`, `์ฃผ๋ฌธ๋ฒํธ` | PO-2024-001 | | ๊ณต๊ธ์ ์ฒด | `๊ณต๊ธ์ ์ฒด`, `๋ฉํ์ ์ฒด`, `๊ฑฐ๋์ฒ` | ABC์์ฌ | | ๋ฐ์ฃผ์ผ | YYYY-MM-DD, YYYY.MM.DD | 2024-10-28 | | ๋ฉ๊ธฐ์ผ | ๋ ๋ฒ์งธ ๋ ์ง | 2024-11-15 | | ํ๋ชฉ๋ช | ํ ํ์ ๋ฐ์ดํฐ | ์๋ฃจ๋ฏธ๋ ํ์ฌ | | ์๋ | ์ซ์ | 500 | | ๋จ๊ฐ | ์ซ์ (์ฒ ๋จ์ ์ผํ) | 50,000 | | ๊ธ์ก | ์ซ์ (์ฒ ๋จ์ ์ผํ) | 25,000,000 | | ์ด ๊ธ์ก | `ํฉ๊ณ`, `์ด ๊ธ์ก`, `TOTAL` | 100,000,000 | ### 4. ์๋ ์์ ๊ธฐ๋ฅ - โ ์ธ์๋ ๋ฐ์ดํฐ๋ฅผ ํผ์์ ์ง์ ์์ - โ ํ๋ชฉ ์ถ๊ฐ/์ญ์ - โ ์๋ ๊ธ์ก ์ฌ๊ณ์ฐ - โ ์ ๋ขฐ๋ ํ์ธ ### 5. ์ ์ฒด ํ ์คํธ ๋ทฐ - โ ์๋ณธ ์ธ์ ํ ์คํธ ํ์ธ - โ ๋๋ฝ๋ ์ ๋ณด ์๋ ํ์ธ - โ ๋๋ฒ๊น ๋ฐ ๊ฒ์ฆ --- ## ๐จ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ### ๋ชจ๋ฌ ๋ ์ด์์ ``` โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ ๐ OCR ๋ฌธ์ ์ธ์ โ โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ ๐ก ๋์๋ง (์ ๊ธฐ/ํผ์น๊ธฐ) โ โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ โ ๐ ์ธ์ ๋ฐ์ดํฐ | ๐ ์ ์ฒด ํ ์คํธ โ โ [๐ ์ด๋ฏธ์ง ์ ํ] โ โ โ [๐ท ์น์บ ์ดฌ์] โ ๋ฐ์ฃผ๋ฒํธ: [ ] โ โ โ ๊ณต๊ธ์ ์ฒด: [ ] โ โ โโโโโโโโโโโโโโ โ ๋ฐ์ฃผ์ผ: [ ] โ โ โ โ โ ๋ฉ๊ธฐ์ผ: [ ] โ โ โ ์ด๋ฏธ์ง โ โ โ โ โ ๋ฏธ๋ฆฌ๋ณด๊ธฐ โ โ ํ๋ชฉ ์ ๋ณด: โ โ โ โ โ #1 โโโโโโโโโโโโโโโโ โ โ โโโโโโโโโโโโโโ โ โ ํ๋ชฉ๋ช โ โ โ โ โ ์๋ ๋จ๊ฐ โ โ โ โโโโโโโโโ 80% โ โโโโโโโโโโโโโโโโ โ โ ๋ฌธ์๋ฅผ ์ธ์ ์ค.. โ #2 โโโโโโโโโโโโโโโโ โ โ โ โ ... โ โ โโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ โน๏ธ Tesseract.js OCR [์ทจ์] [โ ์ ์ฉ] โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ``` ### ํ๋ฉด ๊ตฌ์ฑ 1. **ํค๋**: ์ ๋ชฉ, ๋์๋ง ๋ฒํผ, ๋ซ๊ธฐ ๋ฒํผ 2. **๋์๋ง ํจ๋**: ์ฌ์ฉ ๋ฐฉ๋ฒ ์๋ด (ํ ๊ธ) 3. **์ผ์ชฝ ํจ๋**: ์ด๋ฏธ์ง ์ ๋ก๋/์ดฌ์, ๋ฏธ๋ฆฌ๋ณด๊ธฐ, ์งํ๋ฐ 4. **์ค๋ฅธ์ชฝ ํจ๋**: ์ธ์ ๊ฒฐ๊ณผ (2๊ฐ ํญ) - ์ธ์ ๋ฐ์ดํฐ ํญ: ํ์ฑ๋ ๊ตฌ์กฐํ ๋ฐ์ดํฐ - ์ ์ฒด ํ ์คํธ ํญ: ์๋ณธ OCR ํ ์คํธ 5. **ํธํฐ**: ์ ๋ณด, ์ทจ์/์ ์ฉ ๋ฒํผ --- ## ๐ป ์ฝ๋ ์์ ### HTML์ ์ถ๊ฐ ```html
``` ### JavaScript ์ฌ์ฉ๋ฒ ```javascript // OCR ๊ฒฐ๊ณผ ์ฒ๋ฆฌ ์ฝ๋ฐฑ ์ค์ setOcrCallback((data) => { console.log('๐ OCR ์ถ์ถ ๋ฐ์ดํฐ:', data); // ๋ฐ์ฃผ ์ ๋ณด ์๋ ์ ๋ ฅ document.getElementById('supplierName').value = data.supplier; document.getElementById('purchaseDate').value = data.purchaseDate; // ํ๋ชฉ ์ ๋ณด ์ ๋ ฅ data.items.forEach((item, index) => { addItemRow(); // ํ๋ชฉ ํ ์ถ๊ฐ fillItemData(index, item); // ๋ฐ์ดํฐ ์ ๋ ฅ }); alert('โ OCR ๋ฐ์ดํฐ๊ฐ ์ ๋ ฅ๋์์ต๋๋ค.'); }); // OCR ๋ชจ๋ฌ ์ด๊ธฐ openOcrModal(); ``` --- ## ๐ง ๊ธฐ์ ์คํ ### ๋ผ์ด๋ธ๋ฌ๋ฆฌ - **Tesseract.js v5.x**: OCR ์์ง (Apache 2.0 License) - **Vanilla JavaScript**: ์์ ์๋ฐ์คํฌ๋ฆฝํธ - **CSS3**: ๋ชจ๋ ์คํ์ผ๋ง ### OCR ์์ง - **Tesseract**: Google์์ ๊ฐ๋ฐํ ์คํ์์ค OCR - **์ธ์ด ๋ฐ์ดํฐ**: Korean (kor) + English (eng) - **์ฒ๋ฆฌ ๋ฐฉ์**: ํด๋ผ์ด์ธํธ ์ฌ์ด๋ (์น ์์ปค) ### ์ฅ์ - โ ๋ฌด๋ฃ ๋ฐ ์คํ์์ค - โ ์คํ๋ผ์ธ ์๋ (์ฒซ ์คํ ํ) - โ ๊ฐ์ธ์ ๋ณด ๋ณดํธ (์๋ฒ ์ ์ก ์์) - โ API ๋น์ฉ ์์ --- ## ๐ ์ฑ๋ฅ ์ธก์ ### ์ฒ๋ฆฌ ์๊ฐ (ํ ์คํธ ํ๊ฒฝ: i5-10400, 16GB RAM, Chrome 120) | ์ด๋ฏธ์ง ํฌ๊ธฐ | ํด์๋ | ์ฒ๋ฆฌ ์๊ฐ | |------------|--------|----------| | 500KB | 1920x1080 | ์ฝ 8์ด | | 1MB | 2560x1440 | ์ฝ 12์ด | | 3MB | 3840x2160 | ์ฝ 25์ด | | 5MB | 4K+ | ์ฝ 40์ด | ### ์ธ์ ์ ํ๋ (์ํ ํ ์คํธ) | ๋ฌธ์ ํ์ | ํ์ง | ์ ํ๋ | |----------|------|--------| | ์ธ์๋ ๋ฐ์ฃผ์ | ๊ณ ํ์ง | 85-95% | | ์ค์บ ๋ฌธ์ | ์คํ์ง | 70-85% | | ๋ชจ๋ฐ์ผ ์ดฌ์ | ์ ํ์ง | 60-75% | | ์๊ธ์จ | - | 20-40% โ | **์ฐธ๊ณ :** ์ค์ ์ ํ๋๋ ๋ฌธ์ ์ํ, ์กฐ๋ช , ํฐํธ ๋ฑ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. --- ## ๐ ๋ฐ์ฃผ๊ด๋ฆฌ ํ์ด์ง ํตํฉ ### ๋ฒํผ ์์น **๊ฒ์ ์น์ โ ์ฐ์ธก ๋ฒํผ ๊ทธ๋ฃน โ [๐ OCR ๋ฌธ์์ธ์]** ``` โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ ๊ฒ์ ์กฐ๊ฑด โ โ [๋ฐ์ฃผ๋ฒํธ] [๊ณต๊ธ์ ์ฒด] [ํ๋ชฉ๋ช ] [๐ ๊ฒ์] โ โ โ โ [๐ OCR ๋ฌธ์์ธ์] [โ๏ธ ์ฌ์ฉ์์ต์ ] โ โ [๐ฅ ์์ ์ ๋ก๋] [๐ค ์์ ๋ค์ด๋ก๋] โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ``` ### ์๋ ํ๋ฆ ``` 1. ์ฌ์ฉ์๊ฐ [๐ OCR ๋ฌธ์์ธ์] ๋ฒํผ ํด๋ฆญ โ 2. OCR ๋ชจ๋ฌ ์ด๋ฆผ โ 3. ์ด๋ฏธ์ง ์ ํ ๋๋ ์น์บ ์ดฌ์ โ 4. OCR ์ฒ๋ฆฌ (5-30์ด) โ 5. ๋ฐ์ดํฐ ์ถ์ถ ๋ฐ ํ์ โ 6. ์ฌ์ฉ์ ํ์ธ/์์ โ 7. [โ ๋ฐ์ดํฐ ์ ์ฉ] ๋ฒํผ ํด๋ฆญ โ 8. ๋ฐ์ฃผ ๋ฑ๋ก ๋ชจ๋ฌ ์๋ ์ด๋ฆผ โ 9. OCR ๋ฐ์ดํฐ ์๋ ์ ๋ ฅ โ 10. ์ฌ์ฉ์ ์ต์ข ํ์ธ ํ ์ ์ฅ ``` --- ## ๐ ์๋ ค์ง ์ ํ์ฌํญ ### 1. ๊ธฐ์ ์ ์ ํ - โ ๏ธ **์๊ธ์จ ๋ฏธ์ง์**: ์ธ์๋ ํ ์คํธ๋ง ์ธ์ ๊ฐ๋ฅ - โ ๏ธ **๋ณต์กํ ํ**: ๋ณต์กํ ํ ๊ตฌ์กฐ๋ ์ธ์๋ฅ ์ ํ - โ ๏ธ **์ด๋ฏธ์ง ํ์ง**: ์ ํ์ง ์ด๋ฏธ์ง๋ ์ ํ๋ ๊ฐ์ - โ ๏ธ **์ฒซ ์คํ ์๊ฐ**: ์ธ์ด ๋ฐ์ดํฐ ๋ค์ด๋ก๋ ํ์ (์ฝ 4MB, 1ํ) ### 2. ๋ธ๋ผ์ฐ์ ์ ํ - โ **IE11 ๋ฏธ์ง์**: ๋ชจ๋ ๋ธ๋ผ์ฐ์ ๋ง ์ง์ - โ ๏ธ **๋ชจ๋ฐ์ผ ์ฑ๋ฅ**: ๊ตฌํ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์ ๋๋ฆด ์ ์์ ### 3. ํ์ฑ ์ ํ - โ ๏ธ **๋ค์ํ ์์**: ํ์คํ๋์ง ์์ ๋ฐ์ฃผ์๋ ์๋ ์์ ํ์ - โ ๏ธ **ํญ๋ชฉ ๋๋ฝ**: ํน์ ํ๋๊ฐ ์ธ์๋์ง ์์ ์ ์์ --- ## ๐ฎ ํฅํ ๊ฐ์ ๊ณํ ### Phase 2 (์ ํ) - [ ] Google Cloud Vision API ํตํฉ (๋ ๋์ ์ ํ๋) - [ ] AWS Textract ํตํฉ (ํ ์ธ์ ๊ฐํ) - [ ] Azure Computer Vision ํตํฉ - [ ] ์ปค์คํ ํ์ต ๋ชจ๋ธ ์ ์ฉ ### Phase 3 (์ ํ) - [ ] ๋ค์ค ํ์ด์ง PDF ์ฒ๋ฆฌ - [ ] ์๋ ์ด๋ฏธ์ง ์ ์ฒ๋ฆฌ (ํ์ , ๋ฐ๊ธฐ ์กฐ์ ) - [ ] ํ๋ชฉ ๋ง์คํฐ ์๋ ๋งค์นญ - [ ] OCR ํ์คํ ๋ฆฌ ๋ฐ ์ฌ์ฌ์ฉ ### Phase 4 (์ ํ) - [ ] ๋ฐ์ฝ๋/QR ์ฝ๋ ์ธ์ - [ ] ํ ์ด๋ธ ๊ตฌ์กฐ ์ธ์ ๊ฐ์ - [ ] ๋ค๊ตญ์ด ์ง์ ํ๋ - [ ] AI ๊ธฐ๋ฐ ์ค๋งํธ ๋ณด์ --- ## ๐ ์ฐธ๊ณ ์๋ฃ ### ๋ฌธ์ - [OCR ์ปดํฌ๋ํธ ์ฌ์ฉ ๊ฐ์ด๋](../js/components/ocrCapture_์ฌ์ฉ๊ฐ์ด๋.md) - [์น์บ ์บก์ฒ ์ฌ์ฉ ๊ฐ์ด๋](../js/components/webcamCapture_์ฌ์ฉ๊ฐ์ด๋.md) - [shadcn/ui ๋์์ธ ์์คํ ](shadcn-ui_๋์์ธ_์์คํ _๊ฐ์ด๋.md) ### ์ธ๋ถ ๋งํฌ - [Tesseract.js ๊ณต์ ๋ฌธ์](https://tesseract.projectnaptha.com/) - [Tesseract OCR](https://github.com/tesseract-ocr/tesseract) - [MDN Web APIs](https://developer.mozilla.org/en-US/docs/Web/API) --- ## ๐ก ์ฌ์ฉ ํ ### 1. ์ธ์๋ฅ ํฅ์ - โ 300dpi ์ด์์ ๊ณ ํด์๋ ์ด๋ฏธ์ง ์ฌ์ฉ - โ ๋ช ํํ ๋๋น (๊ฒ์ ํ ์คํธ / ํฐ ๋ฐฐ๊ฒฝ) - โ ์ ๋ฉด์์ ์ดฌ์ (์๊ณก ์ต์ํ) - โ ์ถฉ๋ถํ ์กฐ๋ช ### 2. ๋น ๋ฅธ ์ฒ๋ฆฌ - โ ํ์ํ ๋ถ๋ถ๋ง ์๋ผ์ ์ ๋ก๋ - โ ์ด๋ฏธ์ง ํฌ๊ธฐ ์ต์ ํ (1-3MB ๊ถ์ฅ) - โ ์ต์ ๋ธ๋ผ์ฐ์ ์ฌ์ฉ ### 3. ๋ฐ์ดํฐ ๊ฒ์ฆ - โ ์ ๋ขฐ๋ ํ์ธ (80% ์ด์ ๊ถ์ฅ) - โ ํ๋ชฉ ์๋ ํ์ธ - โ ๊ธ์ก ์ฌํ์ธ - โ ์ ์ฒด ํ ์คํธ ํญ์์ ์๋ณธ ํ์ธ --- ## โ ์ฒดํฌ๋ฆฌ์คํธ ### ๋ฐฐํฌ ์ ํ์ธ์ฌํญ - [x] Tesseract.js CDN ๋ก๋ ํ์ธ - [x] CSS ํ์ผ ์ฐ๊ฒฐ ํ์ธ - [x] JS ํ์ผ ์ฐ๊ฒฐ ํ์ธ - [x] ์น์บ ๊ถํ ์์ฒญ ํ ์คํธ - [x] ์ด๋ฏธ์ง ์ ๋ก๋ ํ ์คํธ - [x] ๋ฐ์ดํฐ ์ถ์ถ ์ ํ๋ ํ ์คํธ - [x] ๋ฐ์ฃผ ๋ฑ๋ก ์ฐ๋ ํ ์คํธ - [x] ๋ฐ์ํ ๋ ์ด์์ ํ ์คํธ - [x] ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํ ์คํธ - [x] ๋ชจ๋ฐ์ผ ํ ์คํธ --- ## ๐ ๊ฒฐ๋ก OCR ๋ฌธ์ ์ธ์ ๊ธฐ๋ฅ์ด ์ฑ๊ณต์ ์ผ๋ก ๊ตฌํ ๋ฐ ํตํฉ๋์์ต๋๋ค! **์ฃผ์ ์ฑ๊ณผ:** - โ ๋ฐ์ฃผ์ ์ด๋ฏธ์ง์์ ์๋ ๋ฐ์ดํฐ ์ถ์ถ - โ ์น์บ ์ค์๊ฐ ์ดฌ์ ์ง์ - โ ํ๊ตญ์ด/์์ด ๋์ ์ธ์ - โ ์คํ๋ผ์ธ ์๋ - โ ๋ฌด๋ฃ ์คํ์์ค - โ ๊ฐ์ธ์ ๋ณด ๋ณดํธ - โ shadcn/ui ๋์์ธ ์์คํ ์ ์ฉ ์ด์ ์ฌ์ฉ์๋ ๋ฐ์ฃผ์ ๋ฌธ์๋ฅผ ์ดฌ์ํ๊ฑฐ๋ ์ ๋ก๋ํ๋ฉด ์๋์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ ๋ ฅ๋์ด ์ ๋ฌด ํจ์จ์ด ํฌ๊ฒ ํฅ์๋ฉ๋๋ค! ๐ --- **์์ฑ์ผ**: 2024-10-28 **๋ฒ์ **: v1.0.0 **์์ฑ์**: AI Assistant **์ํ**: โ ์๋ฃ