관리 메뉴

애독자's 공부방

[n8n이 다 해줌] 5주 차 미션 _ AI 영수증 정리봇 만들기 본문

자동화/n8n 완독 챌린지

[n8n이 다 해줌] 5주 차 미션 _ AI 영수증 정리봇 만들기

애독자 2026. 6. 8. 02:56
728x90

 


CHAPTER 06. AI 영수증 정리봇 만들기_미션


주차별 진도에 따라 주어진 미션과 한 주간 공부한 내용을 정리하여 블로그에 정리

 

🚶기본 미션: 필수 사항
🏃심화 미션: 선택 사항(※ 심화 미션을 수행하면 기본 미션은 생략 가능)


[기본 미션]

CHAPTER 06 OCR 영수증 자동화(폼 업로드 → Upstage OCR → Gemini 정제 → Google Sheets 기록)를 따라 워크플로우를 직접 만들고, 예제 영수증 이미지(chap6_카드영수증_예시.jpg 등)를 폼에 업로드해 Google Sheets에 timestamp · 카드번호 · 총금액이 기록되는 결과 화면을 블로그에 정리해 보세요.


 

 

□ 공부한 내용

  - OCR(Optical Character Recognition): 이미지나 스캔 문서 속 글자를 컴퓨터가 읽을 수 있는 텍스트 데이터로 변환하는 기술

  - OpenRouter: 전 세계의 다양한 AI 모델들을 하나의 API와 코드로 연결하여, 비용이나 조건에 맞춰 골라 쓸 수 있게 해주는 AI 모델 종합 중개 플랫폼 (무료로 제공되는 모델도 존재)

  - Form Trigger 노드: 사용자가 파일을 업로드하는 순간 워크플로우를 시작시키는 트리거

  - HTTP Request 노드: n8n에 기본으로 없는 외부 API를 호출할 때 사용하는 노드

  - Binary File: n8n이 업로드된 파일을 내부적으로 저장하는 방식

  - Edit Fields(Set) 노드: API 응답 결과 중 필요한 데이터만 골라 정리하는 역할

  - Basic LLM Chain 노드: 추출된 텍스트를 분석해 의미 있는 정보만 선별하도록 AI에 지시

  - Structured Output Parser 노드: AI의 출력 형식을 JSON처럼 일정한 구조로 강제하는 도구로, 이후 구글 시트와 같은 외부 저장소에 안정적으로 데이터를 저장할 수 있음

 

 

 워크플로우

 

 

□ 노드의 연결 흐름

  - Trigger: 사용자 입력 단

    . On form submission (Form Trigger): 사용자가 웹 브라우저를 통해 영수증 이미지 파일(document)을 업로드하는 진입점

  - Task: AI 가공 및 백업 단계

    . Extract from File: 책과 강의에서는 Upstage OCR API를 사용하여 텍스트를 직접 추출했지만, 이번에는 OpenRouter의 무료 멀티모달 비전 모델을 활용하기 위해 이 노드를 사용 (Binary File → base64 Text)

    . HTTP Request (OpenRouter API): 변환된 Base64 데이터를 바탕으로 OpenRouter API 서버에 요청을 보냄

      → 무료로 제공되고 있는 nvidia/nemotron-nano-12b-v2-vl:free 모델을 사용하여 이미지 정보를 확인

    . Edit Fields: HTTP Request 노드를 거쳐 들어온 OpenRouter의 수많은 응답 데이터(JSON) 중 실제로 사용할 텍스트 내용($json.choices[0].message.content)만 가져와서 정리

    . Basic LLM Chain (with Gemini & Structured Output Parser): 추출한 영수증 텍스트를 구조화된 데이터로 만드는 구간

      → Google Gemini Chat Model이 영수증 텍스트를 분석하고, Structured Output Parser 노드가 데이터를 규격화하여 변환

  - Target: 최종 데이터 저장 단계

    . Append row in sheet (Google Sheets): AI가 가공하고 구조화해 준 날짜, 카드번호, 금액 데이터를 구글 시트에 반영

 

 

□ 실제 결과 화면

  - 이미지 업로드 화면을 통해 영수증 파일 업로드

 

 - 실제 영수증 사진 및 구글 시트에 반영된 내용

 

 

□ 생각

이번 주차에는 책과 강의에 나온 방법을 그대로 따라 하기보다, 비용을 아끼기 위해 유료 API를 사용하지 않는 방향으로 직접 수정해서 더욱 뜻깊었습니다. 특히 OpenRouter의 무료 모델 API를 활용하기 위해서, n8n의 Extract from File 노드로 이미지 파일(Binary)을 base64 텍스트로 변환하는 과정을 거쳤는데, 이 포맷 변환 기능이 아주 유용했습니다. 책의 기본 내용에 나만의 개발 방식을 더해 연동해보니, 자동화가 어떻게 흘러가는지 그 원리와 구조를 더 깊이 있게 이해할 수 있었습니다.


 

728x90