Skip to content

leesumin0526/Memoir-Archive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Memoir Archive

"AI를 협업 파트너로 활용해 제한된 시간 안에 완성한 웹–AI 서버 통합 시스템"

🏆 숭실대학교 2025 컴퓨터학부 소프트웨어 공모전: 지금은 vibe 금상 수상


1. 프로젝트 개요

📝 프로젝트 소개

Memoir Archive는 AI 기반 이미지 텍스트 분석 및 감성 키워드 생성 플랫폼입니다. 사용자가 업로드한 이미지에서 텍스트를 추출하고, 이를 분석해 기록에 담긴 맥락과 분위기를 반영한 키워드를 자동으로 생성합니다. 단순히 텍스트를 디지털화하는 데서 그치지 않고, 손글씨와 이미지에 담긴 의미를 보존해 개인 기록을 보다 가치 있게 관리할 수 있도록 설계했습니다.

🎯 기획 배경 및 목적

  • 문제 인식: 손글씨나 이미지 속 텍스트를 디지털화하고 의미를 파악하는 과정의 번거로움
  • 해결 방안: AI OCR 기술과 자연어 처리를 결합한 자동화된 텍스트 분석 시스템
  • 핵심 가치: 단순한 텍스트 추출을 넘어 감성적 의미를 담은 키워드 생성으로 사용자 경험 향상

🎨 서비스 컨셉

  • "의미 있는 순간을 기록하다": 이미지 속 텍스트에 담긴 감정과 의미를 AI가 해석
  • 개인화된 갤러리: 각 이미지마다 고유한 감성적 제목과 키워드 자동 생성
  • 직관적 UX: 간단한 업로드만으로 완성되는 스마트한 텍스트 분석 경험

👥 타겟 사용자

  • 손글씨 메모나 편지를 디지털로 보관하고 싶은 사용자
  • 이미지 속 텍스트를 빠르게 추출하고 정리하고 싶은 사용자
  • 개인적인 기록물에 의미 있는 태그를 자동으로 생성하고 싶은 사용자

2. 기술 스택 및 아키텍처

항목 사용 기술 / 라이브러리
백엔드 프레임워크 Spring Boot 3.3.6
AI 서버 Flask (Python)
언어 Java 17, Python
데이터베이스 MariaDB
ORM Spring Data JPA (Hibernate)
보안 Spring Security + JWT
API 문서화 SpringDoc OpenAPI (Swagger)
빌드 도구 Gradle
AI/ML EasyOCR, KoGPT2, KoNLPy, PIL
기타 Lombok, WebFlux, Transformers

📐 아키텍처 특징

  • 마이크로서비스 구조: Spring Boot (웹서버) + Flask (AI서버) 분리
  • JWT 기반 인증/인가 시스템
  • RESTful API 설계

3. 핵심 기능

🔍 AI 텍스트 분석 워크플로우

  1. 이미지 업로드 → 사용자가 텍스트가 포함된 이미지 업로드
  2. OCR 처리 → EasyOCR로 한국어/영어 텍스트 추출
  3. 텍스트 개선 → KoGPT2 기반 문맥 보정 및 오타 수정
  4. 감성 분석 → 텍스트 내용 분석하여 감정적 키워드 추출
  5. 자동 제목 생성 → 내용에 맞는 감성적 제목 자동 생성

📱 사용자 여정 (User Journey)

로그인 → 이미지 업로드 → AI 분석 대기 → 결과 확인 → 갤러리 저장 → 마이페이지에서 관리
기능 설명
🔐 로그인/회원가입 JWT 기반 인증, 이메일 로그인
👤 사용자 관리 사용자 정보 조회 및 수정
📤 이미지 업로드 파일 업로드 및 저장 기능
🤖 AI 이미지 분석 EasyOCR + KoGPT2 기반 텍스트 추출 및 개선
🏷️ 자동 키워드 생성 감성 분석 기반 자동 태그 생성
🖼️ 갤러리 기능 업로드된 이미지 조회 및 관리
📊 마이페이지 사용자별 개인 정보 관리
📖 API 문서화 Swagger UI를 통한 API 문서 제공

4. 시스템 작동 방식

🔄 전체 프로세스

1. [프론트엔드] 사용자가 웹에서 이미지 업로드, 회원가입, 로그인, 갤러리 조회 등 인터랙션 수행

2. [Spring Boot 웹서버] 프론트에서 전달된 요청 처리

  • 회원가입, 로그인: JWT 발급 및 검증
  • 이미지 업로드: 서버 로컬에 이미지 저장
  • OCR 요청: 저장된 이미지 파일을 파이썬 서버로 전송
  • 분석 결과 수신: 파이썬 서버로부터 텍스트·키워드 수신 후 DB에 저장

3. [Python AI 서버] Spring Boot에서 전송한 이미지 파일 분석

  • EasyOCR로 텍스트 추출
  • KoGPT2로 텍스트 개선 및 문맥 보정
  • 추출된 텍스트에서 감성 키워드(예: 부드러운 기억, 따뜻한 순간 등) 생성
  • 텍스트·키워드 JSON으로 응답

4. [프론트엔드] 결과 표시 및 갤러리 관리

  • 업로드 후 result.html에서 결과 확인
  • gallery.html에서 업로드된 이미지별 키워드 최신순 조회
  • gallery-detail.html에서 선택한 키워드·이미지의 상세 결과 확인

5. 역할별 기여 및 개발 과정

🔧 Backend | 웹 서버

  • Spring Boot 기반 웹 서버 아키텍처 설계
    • 인증, 요청 라우팅, 데이터 저장을 담당하는 웹 서버 구현
    • 도메인 단위로 책임을 분리한 패키지 구조를 적용해 핵심 로직을 명확히 관리
  • 이미지 업로드 및 AI 분석 연동 플로우 구현
    • 단일/다중 이미지 업로드 API 인터페이스 정의
    • 업로드된 이미지를 서버에 임시 저장 후, AI 분석 서버로 HTTP 요청 전달
    • AI 서버 분석 결과를 도메인 객체로 변환해 사용자 기준으로 DB 저장
  • JWT 기반 인증·인가 처리
    • 로그인 시 Access Token 발급 후, 이후 요청에서 토큰 기반 사용자 식별
    • 인증 정보가 도메인 서비스 계층에서도 일관되게 활용되도록 사용자 컨텍스트 조회 구조 설계

🤖 AI Server | 손글씨 분석 서버

  • Flask 기반 경량 AI 분석 서버 구현
    • 웹 서버와 역할을 분리해 이미지 분석과 텍스트 처리 로직만 담당
  • EasyOCR을 활용한 손글씨 텍스트 추출
    • 한국어·영어 손글씨 이미지를 입력으로 받아 원문 텍스트 추출
  • 단계적 텍스트 정제 및 보정 파이프라인 설계
    • 정규식을 활용해 불필요한 괄호, 특수문자 제거 및 공백 정리
    • 자주 발생하는 OCR 인식 오류를 보정하기 위한 규칙 기반 교정 로직 적용
    • KoGPT2 기반 문맥 보정 단계를 옵션으로 구성
  • 형태소 분석 기반 키워드 생성
    • 형태소 분석을 통해 의미 있는 형용사·동사를 추출
    • 사전에 정의된 단어 조합 규칙을 적용해 손글씨 내용의 분위기를 반영한 키워드 및 제목 생성

🌐 Web Frontend

  • 로그인, 회원가입, 이미지 업로드, 결과 조회 화면 구현
  • 업로드 → 분석 요청 → 결과 확인까지 하나의 흐름으로 자연스럽게 이어지도록 사용자 경험 구성
  • 로그인 후 발급된 인증 토큰을 활용해 이후 API 요청에서 사용자 상태 유지

6. 기술적 의사결정

🎯 배경 및 문제

  • 3시간 내 웹 서버, AI 서버, 프론트엔드를 동시에 구현해야 하는 시간 제약
  • 사용자별 데이터 분리를 위한 인증 구조 필요
  • OCR 결과 품질 편차로 인해 단순 추출만으로는 가독성이 떨어지는 문제 존재

⚡ 의사결정

  • JWT 기반 Stateless 인증
    • Access Token 중심의 JWT 인증으로 구현 복잡도를 낮추고 빠른 개발에 집중
  • 웹 서버–AI 서버 분리
    • 인증·데이터 관리는 웹 서버, 분석 로직은 AI 서버로 역할을 명확히 분리
    • 짧은 개발 시간 안에서도 각 컴포넌트를 독립적으로 완성할 수 있는 구조 선택
  • 단계적 텍스트 정제 파이프라인
    • 정규식 → 규칙 기반 교정 → 선택적 언어 모델 보정 구조로 설계
  • 감성 키워드 생성 로직
    • 형태소 분석 결과와 사전 정의된 단어 조합을 통해 기록의 성격을 드러내는 제목 생성

📊 Trade-off

장점

  • 짧은 시간 안에 인증–분석–저장–조회까지 하나의 엔드투엔드 흐름 완성
  • AI 분석 로직을 독립적으로 개선하거나 교체할 수 있는 구조 확보

단점

  • 해커톤 환경으로 인해 이미지 저장을 서버 로컬 디렉토리로 처리
  • 인증 구조는 최소 구성으로, 토큰 갱신 전략은 후속 개선 과제로 남김

7. 개선 계획

🔍 아쉬운 점

  • 테스트 코드 및 CI/CD 기반 자동화 환경을 구성하지 못함
  • AI 분석 요청이 동기 처리로 구성되어 처리량 확장에 한계 존재

🚀 개선 계획

  • GitHub Actions 기반 CI/CD 파이프라인 도입
  • Refresh Token 도입 및 인증 구조 리팩토링
  • AI 분석 요청을 비동기 처리 구조로 전환해 처리 성능 개선

8. 사용 방법

🚀 프론트엔드 실행 방법

  1. 회원가입: signup.html에서 사용자 아이디와 비밀번호를 입력해 계정을 생성
  2. 로그인: index.html에서 계정으로 로그인해 JWT 토큰을 발급받고 저장
  3. 업로드: upload.html에서 이미지 파일을 선택해 단일 또는 다중 업로드를 수행
  4. 결과 확인: result.html 또는 gallery-detail.html에서 OCR로 추출된 텍스트와 감성 키워드를 확인
  5. 갤러리: gallery.html에서 업로드한 이미지들의 키워드 리스트를 최신순으로 확인
  6. 로그아웃: 헤더의 Logout 버튼을 클릭하면 JWT 토큰이 삭제되고 로그인 화면으로 이동

🌐 접근 방법

🎪 차별화 포인트

  • 감성 키워드 생성: 단순 OCR을 넘어 감정적 의미 해석
  • 한국어 특화: KoNLPy, KoGPT2 활용한 한국어 자연어 처리
  • 개인화된 갤러리: 각 이미지마다 고유한 스토리텔링 제공

About

숭실대학교 2025 컴퓨터학부 소프트웨어 공모전 금상 수상작 Memoir-Archive의 레포지토리입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors