프로젝트 로그 #17: 내 에이전트가 은행 잔액을 잘못 읽는 문제와 해결 방법
요약
본 글은 은행 앱의 OCR 신뢰성 문제와 이를 해결하기 위해 구축한 '검증 계층(verification layer)'에 대한 기술 로그입니다. 에이전트가 금융 데이터를 처리할 때 발생하던 높은 오류율을 범위 유효성 검사 등을 통해 크게 개선했습니다. 다만, 이 과정에서 작업 시간이 길어지는 등의 새로운 문제가 발견되었으며, 향후 텍스트 데이터의 검증까지 확장할 계획임을 공유합니다.
핵심 포인트
- OCR 기반 금융 데이터 처리 시 신뢰성 확보가 핵심 과제입니다.
- 범위 유효성 검사(Range Validation)를 통해 오류율을 20%에서 6%로 개선했습니다.
- 금융 작업의 정확도를 높이는 과정에서 지연 시간 증가 등의 트레이드오프가 발생합니다.
- 향후 거래 설명 등 비숫자 데이터에 대한 검증 기능 추가가 필요합니다.
Day 17.
은행 앱의 OCR은 신뢰하기 어렵습니다. 저는 모든 숫자를 이중으로 확인하는 검증 계층(verification layer)을 구축했습니다.
Day 16은 중요한 성과였습니다: 여러 앱 간 워크플로우를 구현한 것입니다. 에이전트가 제 은행 잔액을 복사하여 WhatsApp으로 엄마에게 보냈습니다. 세 개의 앱, 하나의 작업이었습니다.
하지만 그 성공 뒤에는 불편한 진실이 있었습니다: 에이전트는 약 20%의 확률로 숫자를 잘못 읽습니다.
엄마에게 보내는 메시지라면 오타일 수 있습니다. 하지만 금융 거래에 있어서는 재앙입니다.
오늘, 저는 이 문제를 해결했습니다.
문제점
은행 앱들은 저의 접근성 감사(accessibility audit)에서 F 학점을 받았습니다. UI 레이블이 없고 콘텐츠 설명도 없습니다. 에이전트는 화면의 모든 것을 읽기 위해 전적으로 OCR에 의존해야 합니다.
그리고 은행 앱들은 OCR 환경 자체가 매우 열악합니다:
- 계좌 번호와 잔액을 위한 작고 압축된 글꼴
- 낮은 대비(약간 더 어두운 회색 배경의 회색 텍스트)
- 숫자로 오인하기 쉬운 통화 기호(₦, $, £)
- 큰 숫자 내의 쉼표가 OCR에 의해 소수점으로 읽히는 경우
그 결과는 무엇일까요?
체크 3: 범위 유효성 검사 (Range Validation)
추출된 숫자는 합리적인 범위 내에 있어야 합니다. '₦0' 또는 '₦999,999,999,999'와 같은 은행 잔액은 OCR 오류일 가능성이 높습니다. 에이전트는 해당 숫자가 ₦1과 ₦1,000,000,000 사이에 있는지 확인합니다. 이 범위를 벗어나는 경우 재읽기(re-read)를 트리거합니다.
오늘의 진행 상황 (Today's Progress)
| 작업 (Task) | 상태 (Status) |
|---|---|
| 숫자 검증 레이어 구축 (Built numeric verification layer) | ✅ 완료 (Done) |
| ... | |
| 결과 (The Results) |
검증 레이어 이전: 금융 데이터에서 20%의 오류율.
검증 레이어 이후: 6%의 오류율. 완벽하지는 않지만, 극적으로 개선되었습니다.
은행 잔액을 읽어 엄마에게 보내는 특정 작업에 대해, 에이전트는 이제 20번 중 19번 성공합니다. 유일한 실패 사례는 오인식(misread)보다는 보통 시간 초과(timeout)(뱅킹 앱 로딩 지연) 때문입니다.
여전히 문제가 되는 부분 (What Still Breaks)
두 번 읽기 확인 절차는 금융 데이터가 관련된 모든 작업에 약 46초를 추가합니다. 3개 앱 워크플로우의 경우, 이는 추가로 1015초입니다. 치명적인 문제는 아니지만 눈에 띕니다.
범위 유효성 검사는 조잡합니다(crude). '₦0'와 같은 합법적인 은행 잔액(잔고 없음)도 오류로 거부될 것입니다. 저는 '0'과 'OCR이 완전히 실패한 경우'를 구별할 방법이 필요합니다.
그리고 이 검증은 숫자만 작동합니다. 이름, 주소, 거래 설명 등 텍스트 추출에는 여전히 검증 기능이 없습니다. 에이전트는 잘못된 거래 설명을 엄마에게 보낼 수 있고, 이를 알 방법이 없습니다.
다음 계획 (What's Next) (18일차)
- 거래 설명에 대한 텍스트 검증 추가
- 실제 금융 데이터로 테스트 (잔액뿐만 아니라 여러 거래)
- 데모 비디오 제작 시작
저장소 (The Repo)
👉 github.com/Dexter2344/phone-agent
vision.py에 이제 형식 검증(format validation), 두 번 읽기 확인, 범위 확인이 포함된 verify_financial_data()가 추가되었습니다. agent.py는 작업 메모리에 금융 데이터를 저장하기 전에 이를 호출합니다.
이것은 17일차입니다. 에이전트는 자신의 작업을 이중으로 확인하는 법을 배우고 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기