책 정리와 분류도 이제 이미지로 간편하게 관리하자
책을 여러 권 구입하다 보면, 책이 쌓이게 되고 정리가 쉽지 않은데요. 구입한 책들을 좀 더 쉽게 분류하고 정리하기 위해 이 번 글에서는 책의 표지를 이제 사진으로 촬영하여 첨부하면 간편하게 온라인 서점의 도서 정보 사이트로 이동할 수 있도록 기능을 제공하는 애플리케이션을 만들어 보고자 합니다. 최근 Google AI Studio의 기능들이 업그레이드되면서 Gemini App Build에서도 사용할 수 있는 API들도 늘어나고 있는데요. 보다 편리하게 구글이 제공하거나 지원하는 기능들을 Builds에서도 손쉽게 추가가능하도록 다양한 옵션들을 확인하고 사용할 수 있게 되었습니다. 아래의 Builds 초기 화면에 들어가면, 프롬프트를 입력하는 창 아래에 다양한 기능 선택지들을 확인해 볼 수 있습니다.
이번에 만들어볼 이미지를 첨부하여 도서 정보를 찾는 "도서 이미지 분석기" 앱을 개발하기 위해 먼저 아래와 같이 3가지 기능들을 선택하고 프롬프트에 추가합니다.
Gemini intelligence in your app : Gemini 기능을 애플리케이션에서 지원
Analyze images : 이미지 분석 기능을 제공
Use Google search data: 구글 검색 기능을 활용하여 검색하고 검색결과를 활용
3가지 기능들이 모두 추가되면, 이후 애플리케이션 생성을 위해 아래와 같이 프롬프트를 입력해 봅니다.
첨부된 도서 이미지에 대해서 OCR을 수행해서 텍스트를 추출해 주세요. 추출된 테스트에서 도서의 제목(한글), 부제목, 저자, 출판사명을 분류하고 식별해 주세요. 도서의 "제목"에는 특수문자가 포함되지 않도록 변환해 주세요. 도서의 "제목", "저자", "출판사명"을 구글의 검색어로 사용해서 3개의 온라인 도서사이트(product.kyobook.co.kr, www.yes24.com, www.aladdin.co.kr)만을 대상으로 검색하고, 검색 결과 페이지에서 도서의 상세 정보를 볼 수 있는 페이지 링크들을 하나씩 가져와서 분석 후 도서의 "제목", "저자"와 일치하는지 판별하고 일치하는 경우 도서의 URL정보를 링크로 표시하여 주세요. 도서관련해서 출력할 정보들은 다음과 같습니다. 이러한 내용들이 모두 잘 표시될 수 있도록 도서 이미지 분석기 애플리케이션을 생성해 주세요. 한국어로 작성해 주세요. 전체적인 톤은 블루계열 색상으로 표시하여 주세요. 첨부되는 이미지는 표시하여 주세요.
- 책 제목: (책의 제목)
- 책의 부제목: (책의 부제목)
- 저자: (책의 저자 모두를 표시)
- 출판사:
- 출판일:
- 도서 상세 URL : (최적의 도서 상세 페이지 이동 링크)
프롬프트의 수행결과 도서 이미지를 첨부하고 분석을 수행하면, 교보문고, yes24, 알라딘의 온라인 서점에 등록된 이미지 내용과 일치하는 도서의 정보들을 검색하여 상세 페이지를 찾아 표시해 주는 애플리케이션이 완성됩니다.
실제로로 실행해 보면, OCR 기능을 통해 업로드한 이미지에서 도서의 제목, 저자, 출판사 정보를 잘 추출해 보여주는 것을 확인할 수 있습니다. 다만 아쉬운 점은, 도서 상세 페이지의 URL 정확도가 생각보다 떨어진다는 것입니다. 현재는 “제목”과 “저자”를 조합해 구글 검색식을 만들어 결과를 찾는 방식인데요. 내부적으로는 아래와 비슷한 형태의 검색식이 적용되어 검색이 이루어집니다.
site:product.kyobobook.co.kr OR site:www.yes24.com OR site:www.aladdin.co.kr "브레인 덤핑" "닉 트렌턴"
검색된 결과들은 내부적으로 다시 한번 처리되는데요. 재미있는 점은, 위와 같은 검색식을 직접 Google에 입력해 보면 도서의 목차나 소개 페이지가 꽤 정확하게 표시된다는 것입니다. 하지만 정작 앱에서는 다른 링크가 매칭되면서 잘못된 페이지가 뜨는 오류가 종종 발생합니다. 검색 자체는 잘 되는데, 결과 링크를 선택해 가져오는 과정에서 문제가 생기는 것이죠.
올바른 도서 링크를 찾기 위해 Gemini App build에서 위의 이미지를 첨부하고, 아래와 같이 프롬프트를 입력해서 정확한 도서 상세 페이지의 링크를 찾도록 요청해 봅니다.
첨부된 이미지와 같이 검색결과가 나오는데요. 첫 번째 검색 결과부터 내비게이션 하면서 확인하면 바로 가능한데요. 왜 엉뚱하게 다른 도서 사이트나 잘못된 도서 링크를 표시하고 있나요?
프롬프트 실행을 통해, 실제 사람이 검색 결과를 위에서부터 하나씩 살펴보는 방식처럼 검색된 링크들을 순차적으로 검토하도록 내부 수행 방식을 변경할 수 있습니다. 이를 통해 도서 상세 페이지를 찾을 정확도가 높아지고, 특히 교보문고, YES24, 알라딘처럼 대표적인 도서 사이트에서 ‘책 제목 + 저자명’을 기준으로 다시 확인하는 절차를 넣어주면 자연스럽게 탐색 오류도 줄어듭니다. 또 하나 중요한 점은, 검색 결과의 제목에 ‘리뷰(review)’, ‘검색(search)’, ‘블로그(blog)’, ‘작가파일’처럼 상품 상세 페이지가 아님을 암시하는 단어가 포함된 경우에는 즉시 제외하는 규칙도 필요합니다. 이런 필터링만으로도 불필요한 링크 선택 오류를 상당히 줄일 수 있어요. 구현 과정에서는 크고 작은 오류가 끊임없이 등장해서, 그때마다 프롬프트를 수정하고 코드를 고쳐 넣는 과정을 반복해야 했습니다. 이런 과정을 거친 끝에, 드디어 아래와 같이 제대로 잘 동작하는 애플리케이션을 완성할 수 있었네요.
애플리케이션을 만들어 보면서 느꼈던 몇 가지 점들을 정리하면 다음과 같습니다.
구글 제미나이의 OCR 기능이 한국어에서도 정말 잘 동작한다는 점이 인상적이었습니다. 간혹 오타가 있긴 했지만, 대부분의 한글 텍스트를 정확하게 인식하고 아주 자연스럽게 변환해 냈어요. OCR 기능이 필요하다면, 이제 Gemini만으로도 충분히 대안이 될 수 있을 것 같다는 느낌이 들었습니다.
Gemini 2.5 Flash보다 Gemini 2.5 Pro가 언어 처리 정확도가 확실히 높았습니다. 특히 OCR로 추출된 텍스트에서 제목, 저자, 출판사처럼 핵심 정보를 구분해 내는 성능에서 차이가 확연했어요. 정교한 텍스트 분류나 정보 추출이 필요한 작업이라면 Pro 모델이 훨씬 안정적입니다.
Google 검색식을 이용해 Gemini에게 직접 검색을 요청해 봤지만, 기대한 검색 결과가 그대로 출력되진 않았어요. 앞서 “교보문고, YES24, 알라딘” 같은 특정 온라인 서점을 중심으로 검색하도록 요청했음에도, 다른 사이트의 결과가 많이 섞여 나왔어요. 그 이유는 Gemini와 GoogleSearch API가 ‘명령 → 실행’ 방식이 아니라, ‘의도 해석 → 기능 수행’이라는 서로 다른 역할 구조로 작동하기 때문입니다. 구글 검색창에서는 site: , filetype: 같은 파라미터가 정확히 반영되지만, GoogleSearch API는 ‘LLM이 참고할 수 있는 확장 검색 도구’로 설계되어 있어 가능한 한 넓은 검색 결과를 반환합니다. 그래서 site 파라미터는 사실상 적용되지 않고, “제목”이나 “저자”처럼 핵심 키워드 중심으로 검색이 이루어지는 셈이죠. 결국, 검색 API가 준 결과를 그대로 쓰기보다, 우리가 원하는 조건에 맞게 후처리를 통해 필터링하는 별도의 로직이 꼭 필요하다는 점을 확인할 수 있었네요.
이번 글에서는 Gemini App Build에서 제공되는 기능 API를 활용해, 도서 이미지로부터 온라인 서점의 도서 상세 페이지를 자동으로 찾아주는 앱을 만들어 보았는데요. 전체 적으로 이미지 업로드 → OCR 기반 이미지 분석 → 도서 정보(제목·저자·출판사) 추출 → 인터넷 도서 통합 검색 → 온라인 서점 결과만 필터링 → 도서 상세 정보 표시로 구성해 구현했습니다. 이 과정 속에서 다양한 Google API 기능들이 자연스럽게 연결되며 동작하는데, 각각의 기능이 어떻게 이어지고 상호작용하는지를 직접 확인해 볼 수 있는 좋은 경험이었습니다.