Skip to content
@2024-EveryCare

2024-EveryCare

개요

EveryCare는 스마트 약봉투 OCR, 의약품 정보 조회, 병원 정보 추천을 하나의 플랫폼에서 제공합니다.
사용자가 손쉽게 약봉투 이미지를 업로드하면, OCR을 통해 약품명을 자동 인식하고, 관련 의약품 정보를 제공합니다.

주요 기능

  • 📷 약봉투 사진 업로드
    • 휴대폰으로 촬영한 약봉투 이미지를 웹에서 바로 업로드
  • 📝 OCR 자동 텍스트 추출
    • EasyOCR 기반 Flask 마이크로서비스로 한글·영어 약품명 인식
  • 💊 의약품 상세 정보 조회
    • 국내외 의약품 데이터베이스 연동 후 복용법·주의사항·성분 정보 제공
  • 🏥 인근 병원 추천
    • 추출된 약품 유형에 적합한 전문 진료과·병원 검색 및 거리·평점 기반 정렬
  • 🔒 사용자 인증 & 관리
    • OAuth2 기반 소셜 로그인 및 JWT 세션 관리

개발 환경 세팅 핵심 목표

  • 모듈화 & 확장성
    각 기능(이미지 OCR, 의약품 조회, 병원 검색, UI)이 독립 서비스로 구현되어 향후 추가 기능이나 트래픽 증가에도 유연 대응
  • 컨테이너 기반 통합 개발 환경
    Flask-OCR 서버, Spring Boot 백엔드, React 프론트엔드를 Docker Compose로 통합 실행하여 일관된 개발/테스트 환경 확보
  • 도메인 중심 구조
    OCR, Drug, Hospital, UI 도메인별 책임을 분리하여 유지보수성과 가독성 극대화

시스템 구성 및 레포지토리 분리 전략

EveryCare 서비스는 아래 세 개의 레포지토리로 구성됩니다:

레포지토리 역할
flask-server EasyOCR 기반 OCR 처리 및 의약품/병원 필터링 로직을 제공하는 마이크로서비스
backend Spring Boot REST API 서버
- OCR 서버 연동
- 의약품·병원 조회 API 제공
- Swagger UI 문서화
frontend React + Vite + TypeScript UI
- 약봉투 촬영/업로드 화면
- OCR 결과 및 정보 조회 화면
- 사용자 인증/관리 화면

각 레포지토리는 완전한 독립 빌드·배포가 가능하며, Dockerfile을 통해 컨테이너화되어 있습니다.

환경 변수 관리

  • 공통 원칙
    1. 민감 정보(.env)는 Git에 커밋 금지
    2. 서비스별 .env 파일 분리 관리
    3. Docker Compose에서 env_file로 로드
항목 변수 이름 예시 설명
DB 연결 정보 MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE Backend가 MySQL 접속 시 사용
OCR 서버 URL OCR_SERVER_URL Backend → Flask-OCR API 호출 URL
Spring Profile SPRING_PROFILES_ACTIVE dev / prod 구분
Frontend API URL VITE_API_BASE_URL React 앱에서 호출할 Backend 기본 URL
OCR 설정 EASYOCR_LANGUAGES, MODEL_PATH Flask-OCR 서버 모델 경로/언어 설정
# backend/.env
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=password
MYSQL_DATABASE=everycare
OCR_SERVER_URL=http://flask-server:5000
SPRING_PROFILES_ACTIVE=dev

# flask-server/.env
EASYOCR_LANGUAGES=ko,en
MODEL_PATH=/app/.EasyOCR/model

# frontend/.env
VITE_API_BASE_URL=http://localhost:8080/api

의존성 관리

레포지토리 주요 프레임워크/라이브러리 비고
flask-server Flask, EasyOCR, PyTorch, Requests Python 패키지 requirements.txt 관리
backend Spring Boot, Spring Web, Spring Data JPA, Lombok Gradle(build.gradle) 관리
frontend React, Vite, TypeScript, TailwindCSS, Axios package.json & yarn.lock 관리

Infra & Docker 환경 구성

  • 서비스별 Dockerfile

    • flask-server/Dockerfile
    • backend/Dockerfile
    • frontend/Dockerfile
  • 통합 실행 프로젝트 루트에 있는 docker-compose.yml로 전체 스택( MySQL + Flask-OCR + Backend + Frontend ) 동시 실행 가능

# docker-compose.yml
version: '3.8'

services:
  mysql:
    image: mysql:8.0
    container_name: everycare-mysql
    env_file: ./backend/.env
    volumes:
      - mysql_data:/var/lib/mysql
    ports:
      - '3306:3306'

  flask-server:
    build: ./flask-server
    container_name: everycare-ocr
    env_file: ./flask-server/.env
    ports:
      - '5000:5000'
    depends_on:
      - mysql

  backend:
    build: ./backend
    container_name: everycare-backend
    env_file: ./backend/.env
    ports:
      - '8080:8080'
    depends_on:
      - mysql
      - flask-server

  frontend:
    build: ./frontend
    container_name: everycare-frontend
    env_file: ./frontend/.env
    ports:
      - '3000:3000'
    depends_on:
      - backend

volumes:
  mysql_data:

패키지 구조

flask-server

flask-server/
├── .EasyOCR/           # OCR 모델 파일
├── fonts/              # 테스트용 글꼴
├── app.py              # Flask 애플리케이션 진입점
├── drug_gpt.py         # GPT 기반 의약품 정보 로직
├── drug_search_api.py  # 외부 의약품 API 연동 모듈
├── filter_drug.py      # 의약품명 필터링 유틸
├── filter_hospital.py  # 병원 정보 필터링 유틸
├── perform_ocr.py      # OCR 수행 유틸
├── ocr_test.py         # 로컬 OCR 테스트 스크립트
├── requirements.txt    # Python 라이브러리 목록
└── Dockerfile

backend

backend/
├── src/
│   └── main/
│       └── java/com/everycare/backend
│           ├── config/       # Swagger, CORS 등 설정
│           ├── controller/   # REST 컨트롤러
│           ├── service/      # 비즈니스 로직
│           ├── repository/   # JPA 리포지토리
│           ├── dto/          # 요청/응답 객체
│           └── entity/       # JPA 엔티티
├── build.gradle
├── Dockerfile
├── docker-compose.yml
└── HELP.md

frontend

frontend/
├── public/              # 정적 리소스(html, favicon 등)
├── src/
│   ├── components/      # 재사용 UI 컴포넌트
│   ├── pages/           # 화면별 페이지
│   ├── App.tsx          # 루트 컴포넌트
│   └── main.tsx         # 애플리케이션 진입점
├── package.json
├── tsconfig.json
├── tailwind.config.js
└── Dockerfile

로컬 개발 환경 세팅 절차

  1. 전체 클론

    git clone https://github.com/2024-EveryCare.git
    cd EveryCare
  2. 환경 변수 파일 복사 및 수정

    cp backend/.env.example backend/.env
    cp flask-server/.env.example flask-server/.env
    cp frontend/.env.example frontend/.env
    # 각 .env 파일을 열어 호스트, 포트, 패스워드 등 환경에 맞게 수정
  3. Docker Compose 실행

    docker-compose up --build -d
  4. 서비스 확인

  5. 개별 서비스 실행 (선택)

    • flask-server

      cd flask-server
      pip install -r requirements.txt
      python app.py
    • backend

      cd backend
      ./gradlew bootRun
    • frontend

      cd frontend
      yarn install
      yarn dev

Popular repositories Loading

  1. frontend frontend Public

    에브리케어 웹 서비스 프론트엔드 개발을 위한 레퍼지토리

    TypeScript 1

  2. backend backend Public

    Java 1

  3. flask-server flask-server Public

    Flask 를 이용한 EasyOcr 서버입니다.

    Python

  4. .github .github Public

    의약품 복용 내역 모니터링 웹 서비스 Everycare 입니다.

Repositories

Showing 4 of 4 repositories

Top languages

Loading…

Most used topics

Loading…