Shelfie: 75달러짜리 라즈베리 파이와 Gemma 4만으로 책 스캐너를 완전 구축.
출처: Dev.to
이 글은 Gemma 4 Challenge: Build with Gemma 4에 제출한 내용입니다.
Shelfie — 카메라를 책장에 향하면 Gemma 4가 모든 책을 식별하고, 평점·설명까지 포함한 전체 카탈로그를 만들며, 다음에 읽을 책을 추천해 줍니다.
클라우드 API 없이, 토큰당 비용 없이, 가정용 하드웨어만으로 동작합니다.
시도해 보기: github.com/scastile/shelfie
Gemma 4 E4B 세 번의 호출만으로 모든 작업을 수행
- 감지 — 사진을 전송 → Gemma 4의 비전 모델이 모든 책등을 스캔하고 제목·저자·장르를 담은 JSON 배열을 반환합니다.
- 보강 — 감지된 책들을 배치로 다시 전송 → Gemma가 설명, 평점, 페이지 수, “추천 대상” 등을 추가합니다.
- 요약 — 전체 카탈로그를 분석 → 장르 비율, 읽을 거리 제안, 컬렉션 속 “숨은 보석”을 알려줍니다.
전체 추론 시간: 내 홈랩(Ryzen 7 + RTX 1060)에서 약 8분. 여기까지입니다.
네 가지 변형을 모두 테스트했습니다. 아래가 솔직한 결과입니다.
| 모델 | 파라미터 | 4‑bit 크기 | 비전 품질 | 속도 | Shelfie 적합도 |
|---|---|---|---|---|---|
| E2B | ~2.3 B | 1.5 GB | 작은 텍스트에 취약 | 빠름 | ❌ 책등을 신뢰성 있게 읽지 못함 |
| E4B | ~4.5 B | 2.1 GB | 우수 | 보통 | ✅ 최적의 균형점 |
| 26B MoE | 26 B/4 B | 13 GB | 약간 더 좋음 | 빠름 | ⚠️ 과도함, 서버 GPU 필요 |
| 31B Dense | 31 B | 16 GB | 약간 더 좋음 | 느림 | ❌ 24 GB 이상 VRAM 필요 |
E4B는 테스트 사진에서 16권을 찾았고, E2B는 6권만 찾으며 나머지는 환각했습니다. 더 큰 모델들은 1~2권 정도 더 찾을 수 있었지만, 대부분이 갖추지 못한 하드웨어가 필요합니다.
핵심 인사이트
- 비전 작업에서 E2B → E4B 로의 도약은 엄청납니다.
- E4B → 31B 로의 도약은 미미합니다.
- 따라서 E4B가 로컬 멀티모달 AI를 실제로 활용할 수 있게 하는 모델입니다.
주요 특징
- 네이티브 멀티모달 입력 — 이미지 + 텍스트를 하나의 메시지로 전송, 별도 비전 인코더 파이프라인 불필요.
- 구조화된 JSON 출력 — Gemma가 바로 깔끔한 JSON을 반환, 책 제목 파싱을 위한 정규식 해킹 불필요.
- 128K 컨텍스트 윈도우 — 한 번에 10~15권을 배치 보강 가능.
- Apache 2.0 라이선스 — 영구 운영 가능, 청구 대시보드에 대한 불안감 제로.
Shelfie는 내 Ubuntu 서버에서 실행되며, 로컬 머신(Ryzen 7 5700X + RTX 1060 6GB)에서 LM Studio를 OpenAI 호환 API로 호출합니다.
전체 파이프라인은 순수 Python(≈200줄)이며, 이미지 전처리는 Pillow, API 호출은 urllib, ML 프레임워크는 전혀 사용하지 않습니다.
- 감지는 스트리밍을 이용해 큰 응답도 타임아웃 없이 처리합니다.
- 보강은 10권씩 배치 호출해 컨텍스트 제한을 지킵니다.
- 요약은 전체 카탈로그를 한 번에 받아 책 간 연관성을 추론합니다.
이미지 크기의 중요성
- 400 px 폭: 감지에 약 100 s 소요, 15~20권 탐지.
- 800 px 폭: 감지에 약 45 s 소요, 40권 이상 탐지.
Payload 크기와 정확도 사이의 트레이드오프이며, Shelfie에서는 400 px가 최적입니다.
프롬프트 최적화
- 초기 감지 프롬프트는 책당 5개 필드를 요청했지만, 4개(짧은 키: t, a, g, c) 로 줄이면서 토큰 제한 내에서 탐지 가능한 책 수가 거의 두 배가 되었습니다.
스트리밍은 필수
LM Studio의 비스트리밍 엔드포인트는 큰 응답 시 120 s에서 타임아웃되지만, 스트리밍은 생성되는 대로 청크를 전달해 1600 자 정도의 감지 응답을 ≈100 s에 문제없이 받아볼 수 있습니다.
“작지만 능력 있는 모델이 승리한다”는 규칙이 그대로 적용
E4B를 3060 GPU에서 실행하면, 클라우드 API의 31B 모델보다 이 작업에서 더 빠르고, 비용도 없으며, 프라이버시도 보장됩니다.
앞으로 추가하고 싶은 기능
- 웹 UI (Gradio 또는 Streamlit)
- 높은 책장을 위한 다중 사진 스티칭
- Goodreads / LibraryThing 연동
- Gemma가 읽지 못하는 책등을 위한 OCR 백업
- 원-클릭 배포용 Docker 이미지
Shelfie는 Gemma 4 E4B를 활용해 사진 한 장으로 책장을 전체 스캔하고, 메타데이터를 보강하며, 읽을 거리까지 제안합니다. 로컬에서 실행되며 비용이 들지 않고, 약 200줄의 Python 코드만으로 구현됩니다. E4B는 Gemma 4 라인업 중 과소평가된 최고의 스위트 스폿입니다.
코드: github.com/scastile/shelfie