[Control Tower] 2차 개발 구현 계획(Spring Ai & OCR)

2026. 2. 11. 18:11·Projects/Team Projects

1. 구현 계기: "사용자의 번거로움을 어떻게 줄일 수 있을까?"

이전 프로젝트에서는 PDF를 활용한 기능을 구현해 보았으나, 이번 '근태 정정 신청' 기능을 개발하며 새로운 고민이 생겼습니다.

기존 방식은 증빙 자료(이미지)를 필수로 제출하더라도, 그 안의 세부 내용은 사용자가 일일이 수동으로 입력해야 하는 번거로움이 있었습니다. 저는 이 과정에서 "사용자가 이미지를 업로드하면 시스템이 자동으로 내용을 읽어주면 어떨까?"라는 아이디어를 떠올렸고, 이를 위해 Spring AI를 도입하게 되었습니다.


2. Spring AI란?

Spring AI는 자바 개발자들이 생성형 AI 기능을 애플리케이션에 쉽고 빠르게 통합할 수 있도록 돕는 스프링 프레임워크 기반의 프로젝트입니다. 파이썬 중심의 AI 생태계를 스프링의 익숙한 구조(Bean 관리, 인터페이스 기반 설계 등) 안에서 다룰 수 있게 해줍니다.

주요 특징:

  • 다양한 AI 모델 지원: OpenAI, Google Gemini, Azure AI 등과의 손쉬운 연동
  • 표준화된 API: 인터페이스 추상화를 통해 모델이 변경되어도 코드 수정을 최소화
  • RAG(Retrieval-Augmented Generation) 지원: 외부 데이터를 활용한 정확한 답변 생성 가능
  • 프롬프트 템플릿: AI에게 전달할 복잡한 페르소나와 명령어를 체계적으로 관리

3. OCR(광학 문자 인식)의 원리 이해

이미지에서 텍스트를 추출하기 위해 가장 먼저 공부한 기술은 **OCR(Optical Character Recognition)**입니다. 이미지 내의 글자 형태를 분석해 디지털 데이터로 변환하는 기술로, 다음과 같은 4단계를 거칩니다.

  1. 이미지 전처리(Preprocessing): 선명도 향상, 노이즈 제거를 통해 인식률을 높임
  2. 문자 검출(Character Detection): 이미지에서 글자가 포함된 '영역'을 특정함
  3. 문자 인식(Character Recognition): 검출된 영역의 모양을 분석해 어떤 글자인지 식별함
  4. 후처리(Post-processing): 오타 교정 및 문맥 파악으로 최종 텍스트 완성

4. 구현 계획: Spring AI(Gemini) 활용

이번 개발에서는 복잡한 OCR 엔진을 직접 구축하는 대신, 구글의 강력한 멀티모달 AI인 Gemini를 Spring AI를 통해 활용할 예정입니다. Gemini는 이미지 자체를 이해하는 능력이 뛰어나 별도의 복잡한 전처리 없이도 높은 텍스트 인식률을 보여줍니다.

핵심 로직:

  1. 입력: 사용자로부터 증빙 자료(MultipartFile)를 전달받음
  2. 변환: MultipartFile을 Spring AI가 인식할 수 있는 Resource나 Media 객체로 변환
  3. 요청: GeminiChatModel에 "이 이미지에서 근태 정정에 필요한 정보를 텍스트로 추출해줘"라는 프롬프트와 함께 전달
  4. 결과: 추출된 텍스트를 파싱하여 사용자 화면에 자동 입력(Auto-fill)

'Projects > Team Projects' 카테고리의 다른 글

[Control Tower] Spring AI로 구현한 항공사 사원 가입 자동화 (명함 OCR & 프롬프트 엔지니어링)  (0) 2026.03.07
[Control Tower] Spring AI(Gemini)로 근태 증빙서류 자동 완성(OCR) 구현하기 🚀 (Zero-Click UX 적용기)  (0) 2026.02.12
[Control Tower] 1차 개발 회고: 협업의 가치와 성장을 기록하다  (0) 2026.02.10
[Control Tower] 개발 효율은 AI로, 팀 성장은 믿음으로 (Cursor, DDD, Git 회고)  (0) 2026.01.23
[Control Tower] 프론트엔드 혼자서 이틀 만에 백엔드 API 명세서 역설계하기 (feat. AI)  (0) 2026.01.22
'Projects/Team Projects' 카테고리의 다른 글
  • [Control Tower] Spring AI로 구현한 항공사 사원 가입 자동화 (명함 OCR & 프롬프트 엔지니어링)
  • [Control Tower] Spring AI(Gemini)로 근태 증빙서류 자동 완성(OCR) 구현하기 🚀 (Zero-Click UX 적용기)
  • [Control Tower] 1차 개발 회고: 협업의 가치와 성장을 기록하다
  • [Control Tower] 개발 효율은 AI로, 팀 성장은 믿음으로 (Cursor, DDD, Git 회고)
tlsgkstj
tlsgkstj
짱구의 성장 일기
  • tlsgkstj
    코딩하는 짱구
    tlsgkstj
  • 전체
    오늘
    어제
    • 분류 전체보기 (159)
      • About (1)
      • Projects (35)
        • Personal Projects (21)
        • Team Projects (14)
      • Engineering (20)
        • CS & Tools (0)
        • Backend Core (15)
        • Frontend (1)
        • Infra & Cloud (2)
        • AI & Tools (1)
      • Trouble Shooting & Issues (0)
      • Growth & Career (38)
        • Interview Prep (0)
        • Retrospectives (38)
      • Archive (65)
        • TIL (8)
        • Daily Dev Q&A (56)
  • 블로그 메뉴

    • 홈
    • About
    • Projects
    • Tech Stack
    • Dev Log
    • GitHub
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    경기기후바이브코딩
    Spring비교
    aws_s3
    클로드코드
    backend
    devlog
    프로덕트개발자
    OrphanRemova
    REACT
    DevFestIncheon2025
    til
    java
    프로젝트회고
    network
    커리어리셋
    jpa
    spring
    SpringBoot
    Project_Review
    데브페스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
tlsgkstj
[Control Tower] 2차 개발 구현 계획(Spring Ai & OCR)
상단으로

티스토리툴바