Skip to content

Repository files navigation

LibAR — 카메라로 서가를 읽는 도서관 도우미

바로 써보기: https://ainsof.dev/libar-demo/ (설치 없음 · 폰 브라우저 권장 · 현재 v1.3)

도서관에서 가장 찾기 힘든 책은, 잘못 꽂힌 책입니다. 청구기호 순서에서 한 칸만 벗어나도 그 책은 "있는데 없는 책"이 됩니다. 사서는 이걸 찾으려고 서가 앞에 서서 라벨 수만 장을 눈으로 하나하나 대조합니다(서가 정리, '시프팅'이라 부릅니다). LibAR는 이 일을 카메라에게 시킵니다.

폰으로 서가를 비추면 —

  1. 책등의 청구기호 라벨을 찾아내고 (검출)
  2. 라벨의 글자를 읽고 (인식)
  3. 도서관 장서 목록 20,944권과 대조한 뒤
  4. 꽂힌 순서가 맞는지 판정합니다

결과는 그 자리에서 색으로 표시됩니다. 🟢 제자리 · 🔴 잘못 꽂힘 · ⚪ 다시 확인.

이 네 단계가 전부 폰 안에서 돌아갑니다. 서버가 없고, 촬영한 사진은 휴대폰 밖으로 나가지 않습니다. 와이파이 없는 서가 사이에서도 동작합니다.


처음이라면 이렇게

  1. 데모 링크를 폰 브라우저(사파리/크롬)로 엽니다. 첫 접속 때 AI 모델(약 60MB)을 내려받습니다 — 한 번만 받으면 이후엔 캐시로 바로 실행됩니다.
  2. 서가가 없어도 체험할 수 있습니다: [사서용] 서가 점검 → 샘플 서가 버튼을 누르면 대림도서관에서 찍은 실제 서가 사진으로 전체 과정이 그대로 돌아갑니다.
  3. 실제 서가 앞이라면: 카메라를 라벨 줄이 보이게 약 1m 거리에서 비추고 잠시 기다리면 자동으로 셔터가 눌립니다 — "📸 찍었어요, 폰을 내려놔도 돼요" 안내와 진행 표시가 뜨는 20초 정도 동안 찍힌 화면 위에서 판독이 진행됩니다.

무엇을 할 수 있나

이용자에게 — 책을 찾아주는 눈

  • 도서 찾기: 책 제목·청구기호로 검색 → 층별 배치도로 서가까지 안내 → 서가 앞에서 카메라를 비추면 됩니다. 찾는 책이 발견되는 순간 화면이 그 장면에서 멈추고 사진 위에 📍핀이 찍힙니다 — 폰을 내려도 핀은 사진 속 그 자리라, 사진과 실물 서가를 천천히 대조하면 됩니다. 화면에 없으면 "오른쪽으로 약 N권" 방향까지 알려줍니다. 찾기 중에는 오배열 경보나 사서용 버튼이 나타나지 않는, 이용자 전용 화면으로 동작합니다.
  • 추천·인기 도서 발견: 국립중앙도서관 사서추천도서와 도서관 정보나루 인기대출도서 중 이 도서관이 소장한 책을 목록으로 보여주고, 서가를 비추면 그 책 위에 ⭐/🔥 핀을 띄웁니다. 대출 빅데이터가 실물 서가 위에 표시되는 새로운 방식의 책 발견입니다.

사서에게 — 점검을 대신하는 눈

  • 서가 점검: 라이브 스캔 또는 사진 촬영으로 한 칸씩 판독 → 오배열 의심 책은 🔴로 표시되고, 탭하면 "왜 이 자리가 아닌지"(현재 이웃 vs 올바른 이웃) 근거를 보여줍니다.
  • 점검 리포트: 판독 화면과 판정 목록을 한 장 이미지로 묶어 기록으로 남길 수 있습니다.
  • 점검 현황: 세션의 확인/미조치/조치완료 수치를 대시보드로 확인합니다.

어떻게 동작하나 (조금 더 깊이)

브라우저에서 ONNX Runtime Web(WebGPU, 미지원 기기는 WASM 자동 전환)으로 AI 모델 3개를 실행합니다.

단계 모델 크기
① 책등 라벨 검출 YOLO26n — 대림도서관 서가 사진으로 직접 학습 11MB
② 라벨 안 글자 줄 검출 PP-OCRv5 mobile det 4.5MB
③ 청구기호 인식 한국어 인식 모델 — 저해상 라벨 파인튜닝 (fp16) 48MB

읽어낸 청구기호는 장서 목록(catalog.json, 청구기호·서명·구간만 담은 공개 서지 데이터)과 대조하고, 한 줄에 놓인 책들의 순서를 LIS(최장 증가 부분수열) 알고리즘으로 분석해 "순서를 깨뜨리는 책"을 오배열로 특정합니다. 인식이 애매한 위험군(권차 시리즈, 비슷한 청구기호 쌍)은 책등의 제목을 추가로 읽어 교차 확인합니다.

오배열 경보는 정밀도를 최우선으로 설계했습니다. 라벨 일부만 읽혀 저신뢰로 매칭된 책이 같은 줄의 확실히 읽힌 책들과 분류가 동떨어져 있으면, 경보 대신 ⚪"다시 확인"으로 보류합니다(행 문맥 게이트) — 글자 오독 하나가 멀쩡한 서가에 빨간 경보를 울리는 일을 막습니다. 현장 검증에서 나온 오탐 사례를 그대로 재현 테스트로 만들어 회귀를 막고 있습니다.

발열과 배터리를 아끼는 장치도 들어 있습니다 — 화면이 정지해 있으면 검출을 건너뛰고, 판독 중에는 카메라 센서를 재우고, 백그라운드로 가면 큰 메모리를 즉시 반납합니다. iOS가 카메라 스트림을 검게 방치하는 드문 상황도 몇 초 안에 스스로 감지해 다시 연결합니다.

실증

영등포구립 대림도서관 종합자료실(장서 20,944권)에서 개발·검증했습니다. 걷기 스캔 기준 판독률 99%(정답지 87권 대조). 현직 사서의 현장 점검 리포트(서가 10칸·254권)를 사진과 전수 대조한 결과, 오배열 플래그 12건 중 확정 오탐은 0건이었고 권차 뒤바뀜·저자기호 역전 같은 실제 오배열을 사서가 실물로 확인했습니다. 현장에서 발견되는 문제는 리포트의 진단 필드(칸·판독 방식)로 원인을 추적해 당일 수리하는 개선 루프로 운영하고 있습니다.

활용 데이터: ① 자관 장서 목록 ② 도서관 정보나루 인기대출도서 API ③ 국립중앙도서관 사서추천도서 API. 외부 API는 미리 수집해 정적 파일로 동봉하므로 앱은 어떤 서버도 호출하지 않습니다.

솔직한 한계

  • 라벨이 화면에 보여야 읽습니다. 여러 단을 멀리서 한 컷에 담으면 판독률이 떨어집니다 — 한 단씩, 라벨 줄이 보이게 찍는 게 정답입니다.
  • 비닐 커버 반사·바랜 인쇄 등 라벨 자체가 훼손된 경우는 못 읽을 수 있습니다. 이런 책은 ⚪"다시 확인"으로 정직하게 표시합니다 — 추측으로 확인 처리하지 않습니다.
  • 판독 한 번에 폰에서 20~40초가 걸립니다. AI 3개를 온디바이스로 돌리는 비용입니다.

버전

  • v1.3 (2026-07-28) — 이중인식: 청구기호 라벨을 못 읽은 책(얇은 시집 등 — 라벨이 책등 옆면으로 말려 잘리는 경우)만 책등 제목을 추가로 읽어 회수. 회수 책은 하늘색 📖 표시로 구분되고 오배열 경보에는 참여하지 않습니다. 현장 검증: 시집 서가 회수 3/3 정답·오탐 0
  • v1.2 (2026-07-25) — 현장 테스트 당일 피드백 루프로 완성: 판독 중 진행 표시 오버레이, 도서찾기 발견 시 정지 사진 위 📍핀(폰을 내려도 위치 유지), iOS 카메라 블랙아웃 자가 복구, 찾기 모드 이용자 전용 화면, 행 문맥 게이트(혼합 구간 오탐 차단)
  • v1.1 (2026-07-24) — 점검 리포트에 진단 필드(칸·판독 방식) 추가: 현장 리포트만으로 판정 원인 추적 가능
  • v1.0 (2026-07-13~) — 온디바이스 검출·인식·대조·판정 4단계 완성, 공개 데모 시작

만든 사람들

2026 도서관 데이터 활용 공모전 출품작 — 개발자 1명과 현직 사서 1명(영등포구립 대림도서관)이 함께 만들었습니다. 현장의 눈으로 검증해 주신 사서 선생님과 데이터 협조에 감사드립니다.

About

LibAR 공개 데모 배포본 — 브라우저 온디바이스 서가 판독 (GitHub Pages) · 개발 저장소: ain0633/LibAR

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages