핵심 설계는 하나입니다 — 읽기(AI)와 판단(규칙)을 분리했습니다. 아래는 시스템이 영수증 한 장을 어떻게 처리하는지, 모든 로직 게이트를 그림으로 풀어 설명합니다.
기존 도구는 AI 한 번에 "글자 읽기 + 계정 분류"를 동시에 시켰습니다. 두 일이 섞이면 오류도 섞입니다. 그래서 두 단계로 나눴습니다.
전처리 후 AI 비전으로 읽기. 한 장에 여러 영수증이면 각각 분리.
PDF 안의 텍스트를 직접 추출 → 사진보다 정확.
헤더(일자·가맹점·금액)를 자동 인식해 행을 그대로 읽음. AI 호출 없이 처리.
긴 변 1,280px · JPEG 품질 0.4까지 압축
→ 감열지 작은 글씨가 뭉개짐
원본 해상도 유지 · 흑백 + 명암 정규화 + 선명화
→ 흐린 영수증도 또렷하게
추출 단계가 뽑아내는 값 (각 값마다 신뢰도 0~1):
결제 일자와 시각 (식대 판단의 기준)
가맹점명 + 부가세 포함 최종 결제금액
식당/카페/택시/통신 등 거친 분류
낮으면 "검토 필요"로 표시
추출된 "성격 힌트"가 어떤 계정으로 연결되는지의 전체 지도입니다. 일부는 추가 게이트(시간·한도)를 거칩니다.
아래 점선은 "아니오 → 다음 판단"으로 내려가는 흐름입니다. 각 박스는 하나의 판단(게이트)이고, 초록 칩은 그때의 결정입니다.
아래 중 하나라도 해당하면 "검토 필요"로 표시해 사람이 마지막으로 확인하게 합니다.
이미지가 흐려 금액 등 신뢰도 0.7 미만
점심/저녁 단정 불가 → 조기공지 필요
직원식대/음료대 확인 권장
규칙으로 확정 못해 AI가 보조 분류한 건
회사 원본 템플릿을 읽어 데이터 칸만 채웁니다. 셀 위치는 기존 도구와 동일합니다.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 의미 | NO | 날짜 | 계정코드 | 계정명칭 | 적요 | 금액 | 비고 |
| 예시 | 1 | 05.03 | 811100 | 복리후생비(직원식대) | 점심식대 | 9,000 |
F30 합계 수식 = SUM(F8:F29) 자동 유지 · 한 번에 최대 22건
| A | B | C | F | G | H | I | J | L | |
|---|---|---|---|---|---|---|---|---|---|
| 의미 | 계정코드 | 부서코드 | 0000 | KRW | 1 | 금액 | 0 | 사번 | 날짜+적요 |
| 예시 | 811100 | 28300 | 0000 | KRW | 1 | 9,000 | 0 | SH250501 | 05.03 점심식대 |
일시 오류·과부하 시 2→5→10초 간격으로 재시도
정해진 스키마(tool)로만 응답받아 파싱 실패 차단
API 키는 서버 환경변수에만. 브라우저·코드에 노출 없음