Skip to content

TeamLightrain/DataCollection

Repository files navigation

VeganScan 데이터 수집 및 분석 시스템

채식주의자를 위한 식당 메뉴 분석 서비스의 데이터 수집 및 AI 분석 자동화 시스템


📋 목차

  1. 시스템 개요
  2. 빠른 시작
  3. 전체 워크플로우
  4. 주요 기능
  5. 파일 구조
  6. 문서

시스템 개요

완성된 기능

1단계: 메뉴 자동 수집 (collect_area_menus.py)

  • 네이버 검색 API로 지역 내 식당 검색
  • Playwright로 Place ID 자동 추출
  • 메뉴 정보 (이름, 가격, 설명, 이미지) 자동 수집

2단계: AI 메뉴 분석 (analyze_menus.py)

  • GPT-4 API로 재료 자동 분석
  • 이미지 기반 분석 지원 (빈번한 오류 발상으로 사용 권장하지 않음)
  • 채식 범주 자동 분류 (CompleteVegan ~ Uncertain)
  • 프롬프트 파일 기반 관리 (튜닝 용이)

빠른 시작

필수 요구사항

# Python 3.8+
python --version

# 필수 패키지 설치
pip install playwright requests openai
pip install -r requirements.txt

# Playwright 사용을 위한 추가 설치
playwright install chromium

실행 명령어

# 1. 메뉴 수집 (별내동 식당 5개)
python collect_area_menus.py

# 2. AI 분석 (GPT-4)
python analyze_menus.py data/menus_별내동_식당_최신파일.json

전체 워크플로우

Phase 1: 데이터 수집

[지역 이름]
    ↓
1. 네이버 검색 API
    ↓ 식당 목록 (이름, 주소, 카테고리)
2. Playwright Place ID 추출
    ↓ Place ID
3. Playwright 메뉴 크롤링
    ↓
[메뉴 데이터 JSON]

명령어:

python collect_area_menus.py

설정:

출력:

  • data/menus_별내동_식당_20260205_181333.json

Phase 2: AI 분석

[메뉴 데이터 JSON]
    ↓
1. GPT-4 재료 분석
    ↓ 주재료, 부재료, 동물성 성분
2. GPT-4 채식 범주 분류
    ↓
[분석 결과 JSON]

명령어:

python analyze_menus.py data/menus_별내동_식당_20260205_181333.json

출력:

  • data/analyzed_menus_별내동_식당_20260205_184835.json

주요 기능

1. 완전 자동화 메뉴 수집

특징:

  • Place ID 수동 입력 불필요
  • 이미지 URL 자동 수집
  • 메타데이터 자동 생성
  • 실패 시 재시도 로직

성능:

  • 10개 식당: 약 3분
  • 100개 식당: 약 30분
  • 성공률: 95%+

사용 예시:

# 강남역 식당 20개 수집
QUERY = "강남역 식당"
MAX_RESTAURANTS = 20

2. AI 기반 재료 분석

특징:

  • 메뉴명 + 설명 → 재료 추정
  • 이미지 포함 시 더 정확한 분석
  • 동물성 성분 자동 탐지
  • 불확실성 명시

분석 항목:

  • 주재료, 부재료
  • 육수 종류
  • 소스 및 양념
  • 동물성 재료 (육류, 해산물, 유제품, 달걀 등)

3. 채식 범주 자동 분류

8가지 범주:

  1. CompleteVegan: 완전 비건
  2. Lacto: 락토 베지테리언
  3. Ovo: 오보 베지테리언
  4. Lacto/Ovo: 락토-오보 베지테리언
  5. Pescatarian: 페스코 베지테리언
  6. Pollotarian: 폴로테리언
  7. Flexitarian: 플렉시테리언
  8. Noremal: 일반식(육식 확실히 포함)
  9. Uncertain: 판단 불가

분류 원칙:

  • 주재료 기반 우선 분류
  • 가장 엄격한 범주 적용
  • 불확실성 명시

파일 구조

Root/
├── README.md                           📖 메뉴 수집, AI 분석 가이드
│
├── collect_area_menus.py               ⭐ 메뉴 자동 수집 (메인)
├── analyze_menus.py                    ⭐ AI 메뉴 분석 (메인)
│
├── prompts/
│   ├── analyze_ingredients.txt         📝 재료 분석 프롬프트
│   └── classify_vegetarian_type.txt    📝 채식 범주 분류 프롬프트
│
├── data/
│   ├── menus_*.json                    💾 수집된 메뉴 데이터
│   └── analyzed_*.json                 💾 분석된 메뉴 데이터
│

사용 예시

예시 1: 별내동 식당 10개 수집 및 분석

# 1. collect_area_menus.py 설정 수정
# QUERY = "별내동 식당"
# MAX_RESTAURANTS = 10

# 2. 메뉴 수집
python collect_area_menus.py
# 출력: data/menus_별내동_식당_20260205_181333.json

# 3. AI 분석
python analyze_menus.py data/menus_별내동_식당_20260205_181333.json
# 출력: data/analyzed_menus_별내동_식당_20260205_184835.json

# 4. 결과 확인
cat data/analyzed_menus_별내동_식당_20260205_184835.json | jq '.metadata'

예시 2: 강남역 비건 메뉴 찾기

# 1. 강남역 식당 50개 수집
# QUERY = "강남역 식당"
# MAX_RESTAURANTS = 50
python collect_area_menus.py

# 2. AI 분석
python analyze_menus.py data/menus_강남역_식당_최신.json

# 3. CompleteVegan 메뉴만 필터링
cat data/analyzed_menus_강남역_식당_최신.json | \
  jq '.restaurants[].menus[] | select(.analysis.vegetarian_type.category == "CompleteVegan")'

예시 3: 이미지 없이 빠른 분석

# 이미지 분석 제외 (2배 빠름)
python analyze_menus.py data/menus_홍대_식당_최신.json --no-image

API 키 설정

네이버 검색 API

[collect_area_menus.py] env 파일에 추가:

CLIENT_ID = "YOUR_NAVER_CLIENT_ID"
CLIENT_SECRET = "YOUR_NAVER_CLIENT_SECRET"

발급 방법:

  1. https://developers.naver.com/apps/#/register
  2. 애플리케이션 등록
  3. "검색" API 선택

OpenAI API

[analyze_menus.py] env 파일에 추가:

api_key = "sk-proj-YOUR_OPENAI_API_KEY"

성능 및 비용

메뉴 수집

식당 수 소요 시간 비용
10개 3분 무료 (네이버 API 무료)
50개 15분 무료
100개 30분 무료

AI 분석

메뉴 수 이미지 포함 소요 시간 비용 (GPT-4o-mini)
10개 2분 $0.01~0.03
10개 아니오 1분 $0.005~0.01
100개 20분 $0.10~0.30
100개 아니오 10분 $0.05~0.10

문제 해결

메뉴 수집 관련

Q: Place ID 추출 실패

  • 인터넷 연결 확인
  • delay_between_requests 증가 (3 → 5초)
  • Playwright 재설치: playwright install chromium

Q: 이미지 URL 수집 안 됨

AI 분석 관련

Q: OpenAI API 오류

  • API 키 확인
  • 사용량 제한 확인
  • 모델 availability 확인

Q: 분류가 부정확함


기여

이 프로젝트는 VeganScan MVP의 일부입니다.


라이선스

이 프로젝트는 Lightrain 팀 프로젝트입니다.


About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages