제휴로 간편한 영수증 스캔 가능
사진에서 JSON으로: 제미니와 스위프트를 활용한 영수증 스캐너 개발기 작성자: 저자. 이미지 출처: 생성형 AI(챗GPT 4o). 오래된 영수증이 쌓여 있는 상자란 재정적 혼란의 상징이다. 프리랜서, 소규모 사업자, 혹은 예산을 철저히 관리하는 사람들에게 영수증을 수동으로 입력하는 것은 번거롭고 실수하기 쉬운 작업이다. 기존의 광학 문자 인식(OCR) 도구는 부분적으로 이 문제를 해결했지만, 구부러진, 어두운, 또는 비정형적인 영수증을 처리하는 데는 한계가 있었다. 이제 우리는 더 나은 방법을 찾을 수 있다. 이 글은 내가 개발한 iOS 앱 'Receipt Lens'의 기술적 배경을 탐구한다. 이 앱은 단순히 영수증을 스캔하는 것이 아니라, 그 내용을 이해한다. 구글의 강력한 멀티모달 AI인 제미니(Multimodal AI)를 통합함으로써, 앱은 간단한 사진을 구조화된, 실용적인 재정 데이터로 변환한다. 이 글은 사용자가 카메라로 사진을 찍는 과정부터 AI의 '뇌'에서 데이터를 분석하는 과정, 그리고 이를 다시 사용자에게 제공하는 과정까지 자세히 살펴본다. 기존의 OCR 스캐너는 단순히 텍스트를 추출하는 데 그치지만, 영수증은 그 자체로 구조와 맥락을 지닌 문서이다. 예를 들어, 가격, 날짜, 상품명, 총액 등이 특정 위치에 배치되어 있어야 하며, 이 정보를 정확하게 파악하는 것이 중요하다. 하지만 기존의 OCR은 이러한 구조를 이해하지 못해 데이터를 정확히 추출하지 못하는 경우가 많았다. 이러한 문제를 해결하기 위해 제미니를 활용해 영수증의 시각적 구조와 텍스트를 동시에 인식하는 기술을 적용했다. 제미니는 이미지와 텍스트를 함께 처리할 수 있는 멀티모달 모델로, 영수증 사진을 분석해 필요한 정보를 자동으로 추출한다. 이는 단순히 텍스트를 읽는 것이 아니라, 그 이미지 속의 정보를 의미 있게 해석하는 것을 가능하게 한다. Swift를 사용해 앱을 개발하면서, 제미니 API를 활용해 영수증을 분석하는 프로세스를 구현했다. 사용자가 사진을 찍으면, 앱은 해당 이미지를 제미니에 전달하고, AI는 영수증의 내용을 분석해 JSON 형식으로 데이터를 반환한다. 이 데이터는 사용자가 쉽게 정리할 수 있도록 앱 내에서 구조화되어 표시된다. 이 과정에서 가장 중요한 것은 프롬프트 엔지니어링이다. 제미니에게 어떤 질문을 던지느냐에 따라 결과가 달라지기 때문에, 영수증을 정확하게 인식할 수 있도록 구체적인 프롬프트를 설계해야 했다. 예를 들어, "이 영수증의 상품명과 가격, 날짜를 추출해 JSON 형식으로 정리해줘"와 같은 명령어를 사용해 AI에게 명확한 작업을 지시했다. 또한, 영수증의 다양한 형태와 조건에 대응하기 위해 이미지 전처리 기법도 함께 적용했다. 사진의 해상도를 조정하고, 명암비를 향상시켜 AI가 더 정확하게 정보를 인식할 수 있도록 했다. 이러한 전처리 과정은 사용자가 촬영한 사진이 완벽하지 않을 경우에도 데이터를 정확히 추출할 수 있도록 도와준다. Receipt Lens는 단순한 스캐너가 아니라, 영수증을 분석하고 재정 데이터로 변환하는 스마트 도구이다. 제미니의 능력을 통해 영수증의 구조를 이해하고, 이를 JSON으로 변환함으로써 사용자가 데이터를 쉽게 관리할 수 있도록 도와준다. 이는 기존의 OCR 기술과는 다른 차별화된 접근법으로, 사용자 경험을 크게 향상시킨다. 이 프로젝트는 AI 기술이 어떻게 실제 문제를 해결하는 데 활용될 수 있는지를 보여주는 사례이다. 특히, 멀티모달 AI의 강점을 활용해 시각 정보와 텍스트 정보를 함께 처리함으로써, 기존의 단순한 OCR 도구보다 훨씬 정확하고 유연한 데이터 추출이 가능하다. 이는 앞으로 더 많은 앱이 AI를 활용해 복잡한 문서를 처리할 수 있는 방향으로 이어질 수 있는 중요한 기반을 제공한다.