Skip to content

Repository files navigation

난독증 훈련 보조 서비스 iRead 대표 이미지


iRead

아동의 읽기 특성을 이해하는 개인화 읽기 훈련 시스템

개발 인원 6명
개발 기간 2026.07.06 ~ 2026.08.10 (6주)
플랫폼 교수자 Web · 아동 Windows Electron App
프로젝트 자료 발표 자료 · 소개 영상
iRead 마스코트 토리


📑 목차


iRead 서비스 소개

iRead는 읽기에 어려움을 겪는 난독증 아동을 위한 시선·발음 데이터 기반 맞춤형 읽기 훈련 서비스입니다.

기존의 읽기 학습은 정답과 점수 같은 결과를 중심으로 평가하기 때문에, 아동이 어디에서 머뭇거리고 어떤 단어나 문장을 어려워하는지와 같은 읽기 과정까지 파악하기 어렵습니다.

iRead는 아동이 글을 읽는 동안의 시선과 발음 데이터를 분석해 읽기 특성을 파악하고, 이를 바탕으로 개인의 수준과 특성에 맞는 읽기 훈련을 제공합니다. 또한 학습 과정에서 축적된 데이터를 통해 교수자는 아동이 어려움을 겪는 지점과 학습 변화를 확인하고 맞춤형 커리큘럼을 관리할 수 있습니다.

아동은 이야기와 놀이 중심의 콘텐츠를 통해 부담 없이 읽기 훈련을 이어갈 수 있으며, 교수자와 보호자는 시선·발음·학습 데이터를 기반으로 제공되는 리포트를 통해 아동의 읽기 과정과 성장 변화를 지속적으로 확인할 수 있습니다.

iRead가 제공하는 가치

1. 읽는 과정까지 이해하는 분석:

정답과 점수뿐만 아니라 시선과 발음을 함께 분석해 아동이 어디에서 어려움을 겪는지 구체적으로 확인할 수 있습니다.

2. 아동에게 맞는 읽기 훈련:

아동의 읽기 특성과 학습 진행 상황을 바탕으로 개인별 맞춤형 훈련을 제공합니다.

3. 변화가 보이는 학습 관리:

훈련 결과와 검사 데이터, 학습 변화 추이를 한눈에 보여주어 교수자가 아동의 성장 과정과 필요한 학습을 판단할 수 있도록 돕습니다.

4. 즐겁게 지속하는 학습 경험:

이야기와 놀이, 상호작용 중심의 콘텐츠를 통해 아동이 읽기 훈련을 부담이 아닌 즐거운 경험으로 지속할 수 있도록 합니다.


👥 팀원 소개 및 역할

윤정
PM · 백엔드
dbswjd0191a
김지훈
김지훈
교수자 웹 백엔드
2hnK
정의찬
아동 앱 백엔드 · 인프라
uichan01
담당 기능
프로젝트 관리 · 커리큘럼 및 훈련 백엔드

주요 구현 내용
  • 훈련 카탈로그와 문항 정책 정리
  • 커리큘럼 교안 자동 생성 연동
  • 진단 문항·발음 평가·성장 정보 API 안정화
담당 기능
교수자 웹 API · 학습 및 이야기 관리

주요 구현 내용
  • 학습 현황·이력·보고서 API 구현
  • 커리큘럼·교안 편집 계약 구현
  • SSE 학습 상태와 이야기·이미지 관리 연동
담당 기능
아동 앱 API · 훈련 및 이야기 실행 · 배포 인프라

주요 구현 내용
  • AWS·Nginx·Docker Compose 배포 환경 구성
  • 훈련 제출·진행·재진입과 성장 정보 API 연동
  • 이야기 분기 생성 중복 제어
  • 교안 생성 완료 실시간 알림 구현
김민재
프론트엔드
minjaekim1122
이승환
이승환
아이트래커
wanderingperson
송승우
AI
themancalledsong
담당 기능
교수자 웹 프론트엔드

주요 구현 내용
  • 학습 현황·이력·보고서 화면 구현
  • 커리큘럼·교안 편집 UI 구현
  • 이야기 이미지 재생성과 시선 리플레이 연동
담당 기능
Tobii 아이트래커 연동 · 시선 데이터 처리 및 분석

주요 구현 내용
  • Tobii 보정·연결 상태·자동 실행 구현
  • 실시간 시선 좌표 수집 및 단어 단위 데이터 매핑
  • 단어별 시선 분석·리플레이 구현
담당 기능
개인화 학습 · 생성형 AI · 발음 평가

주요 구현 내용
  • 읽기 프로필 기반 커리큘럼·교안 생성 및 검증
  • 개인화 이야기·장면 이미지 생성 API 구현
  • Azure Speech 발음 평가 피드백 구현

✨ 주요 기능

기능 설명
개인화 읽기 훈련 아동 앱에서 배정된 커리큘럼을 열고 글자 따라 읽기, 첫소리 찾기, 소리 합치기, 문장 만들기 등의 훈련을 진행합니다.
시선 기반 읽기 분석 Tobii Eye Tracker로 훈련 중 시선을 수집하고 화면의 단어·문장 영역과 연결해 머문 시간, 건너뜀, 되읽기 정보를 기록합니다.
단어별 발음 평가 마이크로 수집한 읽기 음성을 Azure Speech로 분석해 단어별 정확도와 오류 유형을 표시합니다.
AI 이야기 학습 아동의 학습 진행과 선택을 반영해 이야기와 장면 이미지를 생성하고, 이야기 화면에서 읽기와 선택 활동을 진행합니다.
교수자 학습 관리 교수자 웹에서 커리큘럼을 생성·편집하고 아동별 학습 현황, 학습 이력, 분석 보고서와 이야기 기록을 조회합니다.

1. 개인화 읽기 훈련

아동 앱 로그인 후 학습 영역을 선택하는 화면
아동 앱 로그인 및 학습 영역 선택
아동 프로필로 로그인한 뒤 학습 섬에서 진행할 영역을 선택합니다.
글자를 따라 읽는 훈련 화면
글자 따라 읽기
제시된 글자의 획순을 확인하고 마이크로 소리 내어 읽습니다.
소리 합치기 훈련 화면
소리 합치기
제시된 소리 조각을 순서대로 합쳐 알맞은 낱말을 완성합니다.
첫소리 찾기 훈련 화면
첫소리 찾기
낱말의 첫소리를 듣고 보기에서 알맞은 글자를 고릅니다.
문장 만들기 훈련 화면
문장 만들기
낱말 카드를 문장 순서에 맞게 배치해 문장을 완성합니다.

2. 시선 기반 읽기 분석

그림에 맞는 문장 찾기 훈련 화면 그림에 맞는 문장 찾기
그림의 내용을 확인하고 세 개의 보기에서 알맞은 문장을 선택합니다.

훈련 중 Tobii Eye Tracker가 수집한 시선 좌표를 화면의 그림과 문장 영역에 연결해 머문 시간, 건너뜀과 되읽기 정보를 기록합니다.

3. 단어별 발음 평가

낱말 읽기와 발음 평가 화면 낱말 읽기와 발음 평가
화면에 제시된 낱말을 마이크로 읽고 단어별 발음 평가를 진행합니다.

Azure Speech의 한국어 발음 평가가 읽기 음성을 분석하고 단어별 정확도와 오류 유형을 제공합니다.

4. AI 이야기 학습

이야기 내용을 읽고 다음 내용을 선택하는 화면 이야기 선택
이야기를 읽은 뒤 질문에 답하며 다음 장면의 흐름을 선택합니다.

아동의 학습 진행을 반영해 생성된 이야기와 장면 이미지를 읽고 화면의 선택지에서 다음 내용을 고릅니다.
새 이야기 생성 진행 화면 새 이야기 생성
학습을 마친 뒤 새로운 이야기 생성을 요청합니다.

아동의 학습 진행을 반영한 이야기 본문과 장면 이미지를 생성합니다.

5. 교수자 학습 관리

교수자용 학습 분석 리포트 화면 학습 분석 보고서
아동별 학습 참여, 발음 정확도, 읽기 속도와 기간별 변화 추이를 확인합니다.

보고서 화면에는 학습 참여 일수, 총 학습 시간과 총 학습 횟수가 함께 표시됩니다.

교수자 관리 화면

AI 기반 개인화 커리큘럼 생성 화면
AI 커리큘럼 생성
아동과 학습 기간을 선택해 개인화 커리큘럼 생성을 요청합니다.
개인화 커리큘럼 교안 편집 화면
커리큘럼 교안 편집
훈련별 문항, 정답, 보기와 안내 내용을 확인하고 수정합니다.
아동 학습 현황 화면
학습 현황
아동의 학습 진행률과 지표별 변화 추이를 조회합니다.
아동 학습 이력 화면
학습 이력
회차별 훈련 결과와 문항별 상세 기록을 확인합니다.
이야기 이미지 재생성 화면
이야기 이미지 재생성
이야기 장면과 생성 정보를 확인하고 필요한 이미지를 다시 생성합니다.
이야기 읽기 리플레이 화면
이야기 읽기 리플레이
이야기 페이지와 함께 단어별 시선 이동과 읽기 기록을 재생합니다.

🛠️ 기술 스택

분류 기술
Frontend Web Vue.js 3 TypeScript Pinia Tailwind CSS 4 ECharts 6
Frontend App Vue.js 3 TypeScript Pinia Rive Electron
Backend Java 21 Spring Boot 4.0.7 Spring Data JPA Spring Security Flyway
AI Server Python 3.12 FastAPI OpenAI API Google Gemini Azure Speech
Data MySQL 8.4 LTS Redis 7.4
Infrastructure Amazon EC2 Nginx Docker Compose GitHub Actions GitHub Container Registry
Eye Tracking Python FastAPI WebSocket C++ Tobii Game Integration SDK

🏗️ 시스템 아키텍처

iRead 시스템 아키텍처

시선 데이터 흐름도 보기

요약 흐름도

iRead 시선 데이터 흐름 요약

상세 흐름도

iRead 시선 데이터 상세 흐름도


🗄️ ERD

iRead ERD


📋 API 명세

Swagger API 명세 보기

iRead Swagger API 명세


🔬 핵심 기술 상세

1. 시선 데이터 수집 및 분석

Tobii Eye Tracker는 브라우저에서 직접 제어할 수 없으므로, 아동용 Windows 앱과 함께 실행되는 로컬 브리지가 장치의 시선 좌표를 수집합니다. 수집된 좌표는 Electron IPC를 통해 앱으로 전달되고, 화면의 단어·문장 위치와 대조해 단어별 머문 시간, 고정 횟수, 건너뜀과 되읽기 지표로 변환됩니다. 계산 결과는 Backend에 저장되어 교수자 리포트와 이후 훈련 구성에 사용됩니다.

2. 발음 평가

아동이 읽은 음성은 아동 앱에서 Backend를 거쳐 AI server로 전달됩니다. AI server는 Azure Speech의 한국어 단어 단위 발음 평가를 이용해 단어별 정확도, 오류 유형과 발음 구간을 분석합니다. Backend는 분석된 단어가 기준 문장과 같은 순서로 정렬되는지 확인하고, 일치하는 결과만 학습 기록에 저장합니다.

3. 개인화 훈련 구성

Backend는 완료된 학습에서 정답 여부, 발음 정확도, 평균 읽기 시간과 시선 지표를 모아 아동의 읽기 특성별 프로필을 구성합니다. AI server는 어려움이 크게 나타난 특성과 데이터의 신뢰도를 바탕으로 핵심 훈련 3개, 보완 훈련 1개, 확장 훈련 1개를 조합해 다음 커리큘럼을 추천합니다. 생성된 문항은 문제 형식, 정답과 필수 입력값을 확인한 뒤 조건을 충족한 경우에만 커리큘럼에 반영됩니다.

4. AI 이야기 생성

AI server는 아동의 학습 진행 상황, 읽기 특성과 이전 선택을 반영해 다음 이야기와 장면 이미지를 생성합니다. 이야기 텍스트와 이미지는 OpenAI, Gemini, GMS 중 서로 다른 공급자를 선택할 수 있으며, 공급자가 달라도 Backend에는 같은 형식으로 전달됩니다. 생성된 내용은 페이지 구성, 이야기 분기, 어휘와 데이터 형식을 확인하고, 오류가 있으면 정해진 횟수만큼 다시 생성한 뒤 최종 조건을 충족한 결과만 저장합니다.

5. 실시간 학습 연동

아동 앱과 교수자 Web은 서로 직접 연결하지 않고 Backend를 통해 학습 상태를 공유합니다. Backend는 서버 전송 이벤트(SSE)로 훈련 시작·완료와 학습 정보 변경 사실을 알리고, 각 화면은 관련 API를 다시 조회해 최신 내용을 표시합니다. 연결이 끊어졌을 때는 하트비트와 자동 재연결을 이용해 실시간 동기화를 복구합니다.


🚀 개발자 가이드 (빌드·실행)

사전 준비

도구 용도
Git 루트 저장소와 submodule 내려받기
Docker Desktop 통합 데모 환경 실행
Node.js·pnpm 교수자 Web과 아동 App 개발·검증
Java 21 Spring Boot Backend 실행·검증
Python 3.12·uv AI server 실행·검증
Windows·Tobii SDK 실제 Eye Tracker를 사용하는 경우에만 필요

저장소 받기

git clone --recurse-submodules https://github.com/iRead-B105/iRead.git
cd iRead

이미 루트 저장소만 clone했다면 submodule을 초기화합니다.

git submodule update --init --recursive

통합 데모 실행

Docker Compose로 전체 서비스를 실행합니다.

cp .env.example .env
docker compose up -d

Windows에서 각 서비스를 로컬 프로세스로 실행하려면 .env.example.env로 복사한 뒤 다음 스크립트를 사용할 수 있습니다.

.\start-all-local.bat
서비스 주소
교수자 Web http://localhost:5173
아동 App http://localhost:5174
Backend API http://localhost:8080
AI server http://localhost:8081
Mailpit http://localhost:8025

서비스별 검증

아래 명령은 저장소 루트에서 각 서비스 디렉터리로 이동해 실행합니다.

# Frontend Web
cd services/frontend-web
pnpm install
pnpm build
pnpm test
cd ../..

# Frontend App
cd services/frontend-app
pnpm install
pnpm build
pnpm test
cd ../..
# Backend
cd services\backend
.\gradlew.bat test
cd ..\..

# AI server
cd services\ai
uv sync --extra dev
uv run pytest
cd ..\..

Tobii Eye Tracker를 사용할 때는 Windows에서 시선 추적 bridge를 먼저 실행합니다.

cd services\eyetracking
.\run_server.bat
cd ..\..
📁 디렉터리 구조
iRead/
├─ services/
│  ├─ backend/          # Spring Boot API와 데이터 처리
│  ├─ frontend-web/     # 교수자용 Vue Web
│  ├─ frontend-app/     # 아동용 Vue·Electron App
│  ├─ ai/               # FastAPI 기반 AI 기능
│  └─ eyetracking/      # Tobii 시선 수집·보정 bridge
├─ contracts/
│  ├─ openapi/          # App·Admin·Auth·AI API 계약
│  └─ database/         # MySQL 스키마와 ERD
├─ docs/                # 제품·아키텍처·결정·계획 문서
│  └─ assets/readme/
│     ├─ api/           # Swagger 명세 이미지
│     ├─ architecture/  # 시스템·데이터 흐름도
│     └─ features/
│        ├─ child-app/  # 아동 앱 공통 화면 GIF
│        ├─ training/   # 아동 읽기 훈련 GIF
│        ├─ story/      # AI 이야기 학습 GIF
│        └─ teacher/    # 교수자 관리 화면 GIF
├─ design-resources/    # UI와 콘텐츠 제작 원본
├─ tools/               # 계약·문서·통합 데모 검증 도구
├─ compose.yml          # 로컬 통합 실행 구성
├─ .env.example         # 환경 변수 예시
└─ README.md

services/*는 각각 독립된 Git 저장소이며 루트 저장소에는 submodule로 연결됩니다.

🌿 브랜치 전략 & 커밋 컨벤션

브랜치 전략

브랜치 용도
main 배포 가능한 릴리스 이력
develop 다음 릴리스의 통합 기준
feature/* 기능 개발과 검토가 필요한 변경
release/* 정식 릴리스 안정화
hotfix/* 운영 버전 긴급 수정

커밋 컨벤션

<type>(<scope>): <한국어 제목>
Type 용도
feat사용자 기능 추가
fix오류 수정
docs문서 변경
refactor동작 변경 없는 구조 개선
test테스트 추가·수정
perf성능 개선
style동작과 무관한 서식 변경
build빌드와 의존성 변경
ciCI/CD 설정 변경
chore기타 유지보수
revert이전 커밋 되돌리기
Scope 용도
feat(training)개인화 훈련 조회 기능 추가
fix(gaze)시선 세션 종료 오류 수정
docs(readme)프로젝트 소개 갱신

About

아동의 읽기 특성을 이해하는 개인화 읽기 훈련 시스템

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages