영수증 사진으로 경비를 정리하는 어플 개발하기
영수증 사진에서 날짜와 금액을 추출하고, 합계 검사와 회사 기준에 따른 계정 추천을 연결하는 사내 경비 정산 앱의 개발 방법과 검수 기준을 설명합니다.
핵심 요약
1. 영수증을 촬영하면 날짜·공급가액·부가세·합계를 채운 지출 초안을 만들고 직원이 확인합니다. 2. FastAPI로 사진을 받고 Tesseract로 글자를 읽으며, Claude 도구 호출은 회사 기준 조회에 연결합니다. 3. 항목 분리와 합계 검사는 직접 개발하고, 계정 분류는 제안으로 표시하며 원본과 직원 수정값을 보관합니다.
사내 경비 정산용 어플 개발의 목표는 사진을 읽은 뒤 확인하고 제출하기까지의 입력 부담을 줄이는 것입니다. AI 앱 개발 범위에는 항목 추출과 계정 후보 제시를 포함하되, 정산 승인과 세무 판단은 담당자에게 맡기는 흐름이 필요합니다.
FastAPI로 영수증 사진을 받는 촬영 화면
직원이 ‘영수증 촬영’ 버튼을 누르면 사진을 확인하고 사용 목적을 입력하는 화면으로 이어집니다. FastAPI는 UploadFile로 업로드 파일을 받을 수 있습니다. (https://fastapi.tiangolo.com/tutorial/request-files/) 파일을 받는 기능에 업무용 파일 검사와 직원별 접근 권한을 연결하는 부분은 별도로 개발합니다.
앱에서는 허용할 파일 형식과 크기를 정하고, 업로드가 끝나면 원본 사진과 해당 직원의 지출 건을 연결합니다. 글자를 읽기 위해 이미지를 가공하더라도 최초 사진은 따로 보관합니다. 검수할 때는 다른 직원의 사진이 열리지 않는지, 업로드 실패 시 재시도 안내가 나오는지 확인합니다.

Tesseract로 읽은 글자를 날짜와 금액 칸에 연결
Tesseract는 이미지 속 글자를 인식하는 오픈소스 OCR 엔진입니다. (https://tesseract-ocr.github.io/tessdoc/) OCR은 사진의 문자를 읽는 기술이며, 읽힌 문장을 지출 항목으로 나누는 규칙은 직접 만들어야 합니다. 영수증의 ‘거래일’, ‘공급가액’, ‘부가세’, ‘합계’ 같은 표현과 주변 숫자를 연결해 입력 칸을 채웁니다.
금액에 붙은 쉼표와 통화 표시는 계산할 수 있는 형태로 정리하고, 날짜는 앱에서 정한 표기 방식으로 맞춥니다. 날짜가 여러 개이거나 금액을 찾지 못한 경우에는 임의로 하나를 확정하지 않고 확인할 칸을 표시합니다. 결과 화면은 원본 사진과 추출 항목을 나란히 보여주어 직원이 숫자와 위치를 비교할 수 있게 만듭니다.
공급가액과 부가세의 합계는 코드로 검사
추출된 공급가액과 부가세를 더해 영수증의 합계와 비교하는 작업은 계산 코드로 처리합니다. 숫자로 바꾸지 못한 값이나 비어 있는 항목이 있으면 검사를 멈추고 직원에게 확인을 요청합니다. 빈 부가세 칸을 자동으로 0으로 바꾸면 읽기 실패를 정상 입력으로 오해할 수 있으므로 구분해야 합니다.

합계가 맞지 않으면 화면에 계산한 금액과 영수증에서 읽은 합계를 함께 표시합니다. 직원이 숫자를 고치면 같은 계산을 다시 실행하고, 차이가 남아 있으면 담당자 검토 대상으로 넘깁니다. 이 검사는 입력값 사이의 일치 여부를 확인하는 절차이며, 세무상 처리의 적절성까지 판정하는 기능으로 표시하지 않습니다.
Claude 도구 호출로 회사 계정 기준 조회
계정 분류에는 영수증에서 읽은 내용과 직원이 입력한 사용 목적, 회사의 경비 기준을 함께 사용합니다. Claude tool use의 클라이언트 도구는 모델이 호출을 요청하면 애플리케이션 코드가 실행하고 결과를 돌려주는 방식입니다. (https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) 이를 활용해 회사 기준표를 조회하고 허용된 계정 목록을 반환하는 업무 코드를 별도로 개발할 수 있습니다.
화면에는 계정 후보와 참고한 회사 기준을 함께 보여주고, 직원이 선택하거나 담당자에게 확인을 요청하도록 만듭니다. 같은 식사 영수증도 사용 목적에 따라 검토할 항목이 달라질 수 있으므로 상호명만으로 확정하지 않습니다. 검수에서는 회사 목록에 없는 계정이 제시되지 않는지, 근거가 부족할 때 추가 설명을 요청하는지 확인합니다.

원본과 수정값을 보존하는 검토·제출 화면
직원이 추출 금액이나 계정 후보를 수정하면 최초 추출값과 수정값을 각각 보관합니다. 정산 담당자는 원본 사진, 현재 입력값, 변경 내용을 한 화면에서 비교하고 추가 설명을 요청할 수 있어야 합니다. ‘정산 초안 제출’ 버튼은 검토 요청을 보내는 동작으로 연결하며, 제출만으로 정산 승인이나 세무 판단이 완료되지는 않도록 만듭니다.
실패 사례로는 접힌 영수증에서 부가세가 읽히지 않았는데 합계만 추출된 상황을 준비합니다. 이때 앱이 누락된 값을 임의로 채우지 않고, 사진 재촬영이나 직접 입력을 안내하는지 확인합니다. 직원이 값을 고친 뒤 합계 검사가 다시 실행되고, 원본과 수정 내용이 담당자 화면까지 전달되면 해당 흐름의 검수 조건을 충족합니다.
개인정보를 가린 실제 영수증 샘플과 계정명·사용 목적·예외 조건이 담긴 사내 경비 기준표를 준비해 주시기 바랍니다. 연결할 정산 시스템과 함께 전달하시면 촬영, 금액 검사, 계정 제안, 담당자 검토까지 필요한 개발 범위를 트램스에 문의하실 수 있습니다. 트램스 AI 제작 문의 (https://trams.co.kr/ai-si/contact/#inquiry)
참고 자료
비슷한 AI 서비스를
사업에 적용하고 싶으신가요?
아이디어와 필요한 기능을 알려주시면 제작 범위와 방법을 검토합니다.