# ๐Ÿ“„ 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 **์ƒํƒœ**: โœ… ์™„๋ฃŒ