AI Wiki - 100-hours-a-week/KTB4-5th-wiki GitHub Wiki
์ค์กฐ์ฌ๋ง์ AI ์ค๊ณ Wiki
๊ฐ๋จ ์ค๋ช
์ค๋งํธ ๋์ฅ๊ณ ์๋น์ค์ AI๋ ์ฌ์ฉ์๊ฐ ์ดฌ์ํ ์์์ฆยท์์ฌ๋ฃ ์ฌ์ง์์ ์ฌ๊ณ ํ๋ณด๋ฅผ ๋ง๋ค๊ณ , ์ฌ์ฉ์๊ฐ ํ์ธํ ๋ณด์ ์ฌ๋ฃ์ ์๋น๊ธฐํ์ ๊ทผ๊ฑฐ๋ก ์ค์ ๋ก ๋ง๋ค๊ธฐ ์ฌ์ด ๋ ์ํผ๋ฅผ ์ถ์ฒํฉ๋๋ค.
์ด ๋ฌธ์๋ AI ๊ธฐ๋ฅ์ ์ธ๋ถ API ํ๋์ ์ข ์์ํค์ง ์๊ณ , ์์ฒด ๋ชจ๋ธ๊ณผ ๊ท์น ๊ธฐ๋ฐ ์ฒ๋ฆฌ๋ฅผ ์ ์ง์ ์ผ๋ก ๋ฐ์ ์ํค๊ธฐ ์ํ ์ค๊ณ ๋ฌธ์์ ์ง์ ์ ์ ๋๋ค.
AI๊ฐ ํด๊ฒฐํ๋ ๋ ๊ฐ์ง ์ฌ์ฉ์ ๋ฌธ์
์์ฌ๋ฃ ๋ฑ๋ก ํ๋ณด ์์ฑ
- ์ ๋ ฅ ์ด๋ฏธ์ง๊ฐ ์์์ฆ์ธ์ง ์ค๋ฌผ ์ฌ์ง์ธ์ง ๊ตฌ๋ถํฉ๋๋ค.
- ์ํยท์์ฌ๋ฃ๋ช , ์๋, ์๋น๊ธฐํ ํ๋ณด๋ฅผ ์ถ์ถํฉ๋๋ค.
- ํฌ์ฅ์์ ์ฉ๋์ ํ์ธํ ์ ์์ผ๋ฉด ๊ณ ์ฒด๋
g, ์ก์ฒด๋ml๋ก ํ์คํํฉ๋๋ค. - ์๋น์ค๊ฐ ์ฌ์ฉํ๋ ๊ณ ์ ์นดํ ๊ณ ๋ฆฌ๋ก ์ ๊ทํํฉ๋๋ค.
- ์ธ์ ๊ทผ๊ฑฐ์ ๋ถํ์ค์ฑ์ ๋ฐํ์ผ๋ก
์ธ์,๋ฏธ์ธ์,ํ์ธ ํ์,AI ์์์ ๊ฒฐ์ ํฉ๋๋ค. - ์ฌ์ฉ์๊ฐ ์์ ํ ๋ด์ฉ์ ์ ์ฅ์ยท๋์ยท๋ณด๊ดยท์ฒ ํ ์ ์ฑ ์ด ์น์ธ๋ ๋ค์๋ง ํ๊ฐ ๋ฐ์ดํฐ๋ก ์ถ์ ํฉ๋๋ค.
RECOGNIZED ์ํ๋ AI๊ฐ ์ฌ์ฉ์ ์ฌ๊ณ ๋ฅผ ์๋์ผ๋ก ์ ์ฅํ๋ค๋ ๋ป์ ์๋๋๋ค. ๋ชจ๋ ๋ถ์ ๊ฒฐ๊ณผ๋ ์์ ํ๋ณด์ด๋ฉฐ ์ฌ์ฉ์๊ฐ ํ์ธํ ๋ค์๋ง ์๋น์ค API๊ฐ ๋์ฅ๊ณ ์ฌ๊ณ ์ ๋ฐ์ํฉ๋๋ค. ๋ฌธ์์์ ์ฌ์ฉํ๋ โ์๋ ํ์ โ๋ ๋ชจ๋ธ ๋ด๋ถ์์ ํ๋ณด ์ํ์ ํ๋ ๊ทผ๊ฑฐ๋ฅผ ๊ฒฐ์ ํ๋ค๋ ๋ป์ด๋ฉฐ, ์ฌ์ฉ์ ์ฌ๊ณ ์ ์๋ ์ ์ฅํ๋ค๋ ์๋ฏธ๊ฐ ์๋๋๋ค.
๋์ฅ๊ณ ๊ธฐ๋ฐ ๋ ์ํผ ์ถ์ฒ
- ํ์ฌ ๋ณด์ ํ ์ฌ๋ฃ๋ฅผ ์ต๋ํ ๋ง์ด ํ์ฉํฉ๋๋ค.
- ์๋น๊ธฐํ์ด ๊ฐ๊น์ด ์ฌ๋ฃ์ ๊ฐ์ฅ ๋์ ์ฐ์ ์์๋ฅผ ์ค๋๋ค.
- ์๋น์ค ๋ฐฑ์๋๊ฐ ๊ถํ ํ์ธ ํ ์ ๋ฌํ ์ ์ธ ์ฌ๋ฃ๋ ์ถ์ฒ ํ๋ณด๋ฅผ ๋ง๋ค๊ธฐ ์ ์ ์ ์ธํฉ๋๋ค. ํ์ฌ ERD์๋ ์๋ ๋ฅด๊ธฐยท๋น์ ํธ ์ค์ ํ ์ด๋ธ์ด ์์ผ๋ฏ๋ก ์์ ์ค์ ์กฐํ๋ฅผ ๊ฐ์ ํ์ง ์์ต๋๋ค.
- AI๋ ์ ๋ฌ๋ฐ์ ์ฌ๋ฃ๋ก ์ํ์์ ๋๋ผ, TheMealDB, Tavily ์์์ ์น์ธ๋ ์ถ์ฒ์์ ๋ ์ํผ๋ฅผ ๊ฒ์ํด AI PostgreSQL์ ์๋ณธ์ ์ ์ฅํ๊ณ , ๊ท์น์ผ๋ก ์์๋ฅผ ์ ํฉ๋๋ค. Tavily๋ ์์ ๋ ์์ฒ์ ํ๋ณด๊ฐ ์์ ๋๋ง ์ฌ์ฉํ๋ฉฐ ๋ฐฑ์๋ MySQL์๋ ๋ณ๊ฒฝ๋ถ์ ๋จ๋ฐฉํฅ ๋๊ธฐํํฉ๋๋ค.
๊ณ ์ ์นดํ ๊ณ ๋ฆฌ
AI๋ ๋ค์ ๋ชฉ๋ก ๋ฐ์ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์๋ก ์์ฑํ์ง ์์ต๋๋ค.
| ์ฝ๋ | ํ์ ์ด๋ฆ |
|---|---|
VEGETABLE |
์ฑ์ |
FRUIT |
๊ณผ์ผ |
MEAT |
์ก๋ฅ |
SEAFOOD |
์์ฐ |
DAIRY |
์ ์ ํ |
TOFU_BEAN |
๋๋ถยท์ฝฉ๋ฅ |
GRAINS_NOODLE |
๊ณก๋ฅยท๋ฉด |
PROCESSED_FOOD |
๊ฐ๊ณต์ํ |
SEASONING |
์๋ |
BEVERAGE |
์๋ฃ |
OTHER |
๊ธฐํ |
์นดํ
๊ณ ๋ฆฌ ์ฝ๋๋ ๋ฐฑ์๋ API ๋ช
์ธ์ ํต์ผํ์ต๋๋ค(2026-10-08 GRAIN_NOODLEโGRAINS_NOODLE, PROCESSEDโPROCESSED_FOOD, ETCโOTHER). ์นดํ
๊ณ ๋ฆฌ OTHER๋ ๋ชจ๋ธ์ด ๋ถ๋ฅ์ ์คํจํ์ ๋ ์ฌ์ฉํ๋ ๊ฐ์ด ์๋๋ผ, ์์ฌ๋ฃ๋ ์๋ณํ์ง๋ง ์์ ์ด ๊ฐ ์นดํ
๊ณ ๋ฆฌ์ ์ํ์ง ์์ ๋๋ง ์ฌ์ฉํฉ๋๋ค. ์ด๋ฆ์ด ๊ฐ์ ์
๋ ฅ ์ด๋ฏธ์ง ์ ํ(documentType)์ OTHER์๋ ๋ค๋ฅธ ํ๋์
๋๋ค.
์ค๊ณ ์์น
- AI์ ์ถ์ ๊ณผ ์ด๋ฏธ์ง์์ ์ง์ ํ์ธํ ์ฌ์ค์ ๊ตฌ๋ถํฉ๋๋ค.
- ์๋น๊ธฐํ๊ณผ ์๋ ๋ฅด๊ธฐ์ฒ๋ผ ์์ ์ ์ํฅ์ ์ฃผ๋ ๊ฐ์ ๋ชจ๋ธ์ด ์์๋ก ํ์ ํ์ง ์์ต๋๋ค.
- ์ด๋ฏธ์ง ๋ถ์์ ์์ฒด ๋ชจ๋ธ(์๊ฒฉ GPU Worker)๊ณผ ๊ท์น์ผ๋ก ์ฒ๋ฆฌํ๊ณ , ํ์ ํ ์ ์๋ ๊ฒฐ๊ณผ๋ ์ฌ์ฉ์ ํ์ธ์ด๋ ์ง์ ์ ๋ ฅ์ผ๋ก ์ ํํฉ๋๋ค.
- OCR, ๋ฌธ์ ๋ถ๋ฅ, ์นดํ ๊ณ ๋ฆฌ ๋ถ๋ฅ, ์ถ์ฒ ๋ญํน์ ์์ฒด ๋ฐ์ดํฐ์ ๋ชจ๋ธ๋ก ๊ณ์ ๊ฐ์ ํฉ๋๋ค.
- ๋ชจ๋ธ์ด ์คํจํด๋ ์ฌ์ฉ์๋ ์ง์ ์ ๋ ฅ์ผ๋ก ๋์ฅ๊ณ ์ฌ๊ณ ๋ฅผ ๋ฑ๋กํ ์ ์์ด์ผ ํฉ๋๋ค.
- ๋ชจ๋ธ ๋ณ๊ฒฝ์ ์ ํ๋, ์ง์ฐ์๊ฐ, ๋น์ฉ์ ๊ฐ์ ํ๊ฐ ์ธํธ์์ ๋น๊ตํ ๋ค ์น์ธํฉ๋๋ค.
- ERD์
measure_type์ ๋ฐ๋ผ ๊ฐ์์ ์ค๋ยท์ฉ๋์ ๋ฐฐํ์ ์ผ๋ก ํํํ๋ฉฐ, ํ์ธํ ์ ์๋ ์ธก์ ๊ฐ์ ์์๋ก ์์ฑํ์ง ์์ต๋๋ค.
๊ธฐ์ค ๋ชจ๋ธ ๊ตฌ์ฑ
| ์ญํ | 1์ฐจ ์ ์ ๋ชจ๋ธยท๊ธฐ์ | ์๋น์ค ์ ์ฉ ๋ฐฉ์ |
|---|---|---|
| ์ด๋ฏธ์ง ์ ๋ ฅ ์ ํ ๋ถ๋ฅ | MobileNetV3-Small |
์์์ฆยท์ค๋ฌผยท๊ธฐํ ๋ถ๋ฅ. ์ ๋ขฐ๋ 0.8ยท1ยท2์ ์ฐจ์ด 0.2 ๋ฏธ๋ง์ด๋ฉด OCR ๊ท์น์ผ๋ก ํด๋ฐฑ |
| ํ๊ตญ์ด OCR | PP-OCRv5 (์๋ฒ ๊ฒ์ถ + ํ๊ตญ์ด ๋ชจ๋ฐ์ผ ์ธ์) |
์์์ฆ ์ํํ, ํฌ์ฅ ์ํ๋ช , ์๋น๊ธฐํ, ์ฉ๋ ๋ฌธ์ ์ธ์ |
| ์ํ ํ๋ณ ๋ณด์กฐ ์๋ฃ | PostgreSQL ์ํ ์นดํ๋ก๊ทธยท๋ณ์นญ(์ ํ ์ผ์น โ ์ ์ฌ๋) + ํค์๋ ๊ท์น | ํ์คํ ์ํ์ ๋ชจ๋ธ ํธ์ถ ์์ด ์ด๋ฆยท์นดํ ๊ณ ๋ฆฌ ํ์ |
| ๋ชจ๋ฅด๋ ์์์ฆ ์ํ ํ๋ณ | Ollama gemma4:e2b (5.1B, Q4_K_M) |
๊ท์นยท์นดํ๋ก๊ทธ๋ก ํ์ ํ์ง ๋ชปํ OCR ์ํํ๋ง GPU Worker์์ ๋ณด์ |
| ์ค๋ฌผ ์ด๋ฏธ์ง ํด์ | YOLO-World yolov8s-worldv2 + Gemma ๋น์ |
YOLO๋ก ํฌ์ฅ ์์ญ์ ๋๋๊ณ ์์ญ๋ณ OCR ํํธ์ ํจ๊ป Gemma๊ฐ ์ํ๋ช ยท์นดํ ๊ณ ๋ฆฌ ํ๋ณ. ๋ฐ์ฝ๋๋ ๋ณด๋ฅ |
| ๋ ์ํผยท๋ณด๊ด ์ง์ ๊ฒ์ | PostgreSQL ๋ณด๊ด ์๋ฃยทAI PostgreSQL ๋ ์ํผ ๊ฒ์ | ๋ณด๊ด ์๋ฃ๋ receipt_ai.shelf_life_rules์์ ์กฐํํ๊ณ ๋ ์ํผ ์๋ณธ์ ๋ฐฑ์๋ MySQL๊ณผ ๋๊ธฐํ |
| ๋ ์ํผ ์์ | ๊ท์น ๊ธฐ๋ฐ ๋ญ์ปค โ LightGBM LambdaMART |
์ด๊ธฐ์๋ ์๋ฐ๋ยท์ฌ๋ฃ ํ์ฉ๋ฅ ๋ก ๊ณ์ฐํ๊ณ ์ฌ์ฉ์ ํ๋์ด ์์ด๋ฉด ํ์ต ๋ญ์ปค๋ก ๋ฐ์ |
| ์ถ์ฒ ์ค๋ช | ์ด๊ธฐ ์ถ์์์๋ ํ ํ๋ฆฟ | ์ถ์ฒ ๊ทผ๊ฑฐ๋ฅผ ์งง๊ฒ ์ค๋ช ํ๋ฉฐ ๋ ์ํผ ์๋ฌธ์ ์๋ก ์์ฑํ์ง ์์. ์ํ ์ธ์ด ๋ชจ๋ธ์ ์ดํ ๋ฒ์ ์ ๊ฒ์ฆ ํ๋ณด |
์ ์ ๊ทผ๊ฑฐ์ ํ๋ยท์ต์ ํยท๊ต์ฒด ๊ธฐ์ค์ ๋จ๊ณ 2: ๋ชจ๋ธ ์ถ๋ก ์ฑ๋ฅ ์ต์ ํ์ ์ ๋ฆฌํฉ๋๋ค.
๋ชจ๋ ๋จ๊ณ๋ณ ๋ฌธ์๋ ํ์ฌ AI Wiki์ ๋ ๋ฒจ ๋ณ๋ก ๊ด๋ฆฌํฉ๋๋ค.
์ธก์ ๊ฐ ํ์คํ ์์น
measure_type=COUNT์ด๋ฉดquantity๋ 1~100์ ์ ์์ด๊ณweight_value=null,weight_unit=NONE์ ๋๋ค.measure_type=WEIGHT์ด๋ฉดquantity=null,weight_value๋ ์์์ด๊ณweight_unit์G๋๋ML์ ๋๋ค.- ๊ณ ์ฒดยท๋ถ๋งยท๋ฉดยท์ก๋ฅยท์ฑ์ ๋ฑ ์ค๋ ๊ธฐ๋ฐ ์ํ์
g๋ก ์ ์ฅํฉ๋๋ค. - ๋ฌผยท์ฐ์ ยท์๋ฃยท์ก์ ์๋
๋ฑ ๋ถํผ ๊ธฐ๋ฐ ์ํ์
ml๋ก ์ ์ฅํฉ๋๋ค. - ์ด๋ฏธ์ง์์
kg๋ฅผ ์ฝ์ผ๋ฉดg,L๋ฅผ ์ฝ์ผ๋ฉดml๋ก ํ์ฐํฉ๋๋ค. 1 kg = 1,000 g,1 L = 1,000 ml์ ๋จ์ ๋จ์ ํ์ฐ๋ง ์๋ ์ ์ฉํฉ๋๋ค.- ๊ณ ์ฒด์ ๋ถํผ๋ฅผ ์ค๋์ผ๋ก ๋ฐ๊พธ๊ฑฐ๋ ์ก์ฒด์ ์ค๋์ ๋ถํผ๋ก ๋ฐ๊พธ๋ ๋ฐ๋ ํ์ฐ์ ์๋ ์ ์ฉํ์ง ์์ต๋๋ค.
- ํ์ฌ ERD๋ ๊ฐ์์ ์ค๋์ ํ ์ฌ๊ณ ํ์ ๋์์ ์ ์ฅํ์ง ์์ต๋๋ค.
2๊ฐ์ 500g์ฒ๋ผ ์ฉ๋์ด ๋ณด์ด๋ฉด ์ด์ค๋ 500g(WEIGHT) ํ๋ณด๋ก ๋ฐํํ๊ณ , ์ฌ์ฉ์๊ฐ ํ์ธ ํ๋ฉด์์ ๊ฐ์ ๊ด๋ฆฌ๋ก ๋ฐ๊ฟ ์ ์์ต๋๋ค. - ์ซ์๋ ๋จ์๊ฐ ๋ถ๋ช
ํํ๋ฉด
ํ์ธ ํ์๋ก ์ฒ๋ฆฌํฉ๋๋ค.
์ ์ฒด ํ๋ฆ๋
flowchart TD
I[์
๋ ฅ ์ด๋ฏธ์ง ์
๋ก๋] --> Q[EC2 FastAPI ์ธ๋ฉ๋ชจ๋ฆฌ ํ]
Q --> C[์๋น์ ์ฝ๋ฃจํด 2๊ฐ]
C -->|์๋ช
URL| W[์๊ฒฉ GPU WorkerยทMobileNetV3]
W -- ์์์ฆ --> R[PP-OCRv5 ๋ถ์]
W -- ์ค๋ฌผ --> P[PP-OCRv5ยทYOLO-WorldยทGemma ๋น์ ]
W -- ๊ธฐํ --> N[๋น ๊ฒฐ๊ณผยท์ฌ์ดฌ์ยท์ง์ ์
๋ ฅ]
R --> G[๋ฏธํ์ ํ๋ง Gemma ๋ณด์]
G --> D[EC2 ๊ท์นยทPostgreSQL ์นดํ๋ก๊ทธ ํ์ ]
P --> D
D --> V[๊ฒฐ๊ณผ ๊ฒ์ฆยท์ํ ํ์ ]
V --> M[์ธ๋ฉ๋ชจ๋ฆฌ ์ํยท๊ฒฐ๊ณผ]
M --> B[๋ฐฑ์๋ ์๋ฃ ์ฝ๋ฐฑ]
B --> U[์ฌ์ฉ์ ํ์ธยท์์ ]
U --> F[๋์ฅ๊ณ ์ฌ๊ณ ๋ฑ๋ก]
์ด ๊ทธ๋ฆผ์ ์๋น์ค์ ์ด๋ฏธ์ง ๋ถ์ ํ๋ฆ์ ์์ฝํฉ๋๋ค. ๋ชจ๋ธ ์ถ๋ก ์ ์๊ฒฉ GPU Worker๊ฐ, ํยทํ์ฒ๋ฆฌยท์ฝ๋ฐฑ์ EC2 FastAPI๊ฐ ๋งก์ต๋๋ค. ํ์ ์งํ ์ํ๋ FastAPI ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ์๋ง ์์ด ์ฌ์์ ์ ์ฒ๋ฆฌ ์ค์ด๋ ์์ ์ ๋ณต๊ตฌ๋์ง ์์ต๋๋ค. ์๋ฃ๋ ๊ฒฐ๊ณผ๋ ํผ๋๋ฐฑ ์๋ณธ์ผ๋ก ์ฐ๊ธฐ ์ํด AI PostgreSQL์๋ ์ ์ฅํฉ๋๋ค. ๋ ์ํผ๋ ๊ฒ์ ํ AI PostgreSQL์ ์ ์ฅํ๊ณ ๋ฐฑ์๋ MySQL๋ก ๋จ๋ฐฉํฅ ๋๊ธฐํํฉ๋๋ค.