데이터 파이프라인
사진 속 가격을 데이터로
식당 가격은 웹에 구조화된 형태로 존재하지 않습니다. 메뉴판 사진 안에만 있습니다. 그래서 이 서비스의 출발점은 검색이 아니라 사진 수집입니다.
1수집명륜동·혜화 식당의 메뉴판 사진을 모아 한 저장소에 쌓습니다. 출처와 촬영일을 함께 기록합니다.
2파싱Upstage Document Parse에
ocr=force·coordinates=true로 요청해, 사진 속 레이아웃을 유지한 채 메뉴명과 가격을 뽑습니다.3검수파싱 결과는 바로 쓰지 않습니다. 사람이 고치도록 프리필로 띄우고, 0원·10만원 초과 같은 이상치는 표시해 둡니다.
4보강주소는 지오코딩으로 좌표를 자동으로 채우고, 학식은 매일 크롤링해 당일 식단을 넣습니다.
왜 학식은 파싱하지 않나
도구는 문제에 맞춰 고릅니다. 학교 식단 페이지는 이미 표로 정리된 HTML이라, 사진 파싱을 적용하면 비용만 늘고 정확도는 떨어집니다. 비구조 입력(메뉴판 사진)에만 Document Parse를 씁니다.
| 입력 | 형태 | 처리 |
|---|---|---|
| 메뉴판 | 사진(비구조) | Document Parse → 검수 |
| 학식 | HTML(구조화) | 크롤러 → 정규화 |
| 위치 | 주소 텍스트 | 지오코딩 → 좌표 |
추천 이유를 검증합니다
추천 이유는 Solar가 씁니다. 다만 생성만 하고 끝내지 않습니다. 생성과 검증을 다른 모델이 나눠 맡습니다 — 판정자가 이유 문장을 실제 데이터(메뉴·가격·도보 시간)와 대조해, 근거가 없으면 그 문장을 버리고 데이터 사실로 교체합니다.
화면에서 보이는 것
추천 카드 아래 "Solar 생성 · 근거 검증됨" 또는 "근거 미달 판정으로 데이터 팩트로 교체됨" 배지가 그 결과입니다. 환각을 막았다는 주장이 아니라, 막는 동작을 그대로 보여주는 방식입니다.
데이터가 틀리면
파싱은 완벽하지 않습니다. 그래서 모든 메뉴 행에는 출처(사진 파싱/수기)와 검수 상태가 붙어 있고, 잘못된 값은 사람이 고치면 다음 조회부터 반영됩니다. 틀릴 수 있다는 사실을 숨기지 않는 것이 이 파이프라인의 설계입니다.