영수증 OCR로 엑셀 만들기: 증빙 입력 자동화 구조와 정확도 체크
영수증 OCR을 엑셀 입력용 표로 만들려면, 핵심은 영수증에서 구조화된 필드를 추출한 뒤 표 형태로 정규화하고, CSV/엑셀로 내보내는 흐름입니다. Document Intelligence의 receipt 모델은 이런 구조화 추출에 맞춰져 있고, SDK와 REST API 경로가 있어 프로그램matic workflow로 연결할 수 있습니다.
추천 구조
1. 입력 수집
- 영수증 이미지나 PDF를 받습니다.
- 이를 영수증 전용 추출 모델로 보냅니다.
2. OCR/필드 추출
- 영수증 모델에서 구조화된 필드를 가져옵니다.
- 이 단계의 목적은 단순 텍스트 복사가 아니라, 표로 쓰기 좋은 형태의 값으로 받는 것입니다.
3. 정규화
- 추출된 값을 고정된 스키마에 맞춥니다.
- 예: 같은 열 이름, 같은 순서, 같은 형식으로 맞춥니다.
4. 검증
- OCR로 나온 값과 원본 영수증을 비교합니다.
- 금액처럼 중요한 값은 한 번 더 확인하는 흐름을 둡니다.
5. 내보내기
- CSV 또는 엑셀용 파일로 저장합니다.
- pandas의
to_csv를 쓸 때는 인코딩을 명시적으로 관리하는 편이 적절합니다.
실무에서 중요한 포인트
- 영수증 전용 모델을 먼저 쓰는 것이 좋습니다. 일반 OCR 결과를 바로 엑셀로 옮기기보다, 구조화된 필드를 먼저 받는 편이 입력 자동화에 맞습니다.
- SDK나 REST API로 연결하면 수동 입력이 아니라 파이프라인 형태로 구성할 수 있습니다.
- CSV 저장 시 인코딩을 명시하면 한국어 텍스트를 다룰 때 파일 처리 흐름을 안정적으로 가져가기 좋습니다.
- `read_csv`의 `on_bad_lines`는 만능 복구 수단이 아닙니다. 파서가 bad line으로 정의한 행에만 동작하므로, 이를 일반적인 훼손 복구로 보면 안 됩니다.
정확도 체크는 이렇게 설계하는 편이 좋습니다
영수증 OCR은 “읽기”보다 “증빙 입력”이 목적일 때가 많아서, 결과를 바로 저장하기보다 검증과 정규화 단계를 끼우는 구조가 맞습니다. 특히 다음 순서가 깔끔합니다.
- 추출 결과 수신
- 필드 매핑
- 포맷 통일
- 누락값 확인
- 원본 대조
- 최종 저장
이 흐름이면 엑셀로 옮겼을 때 열 구조가 흔들리지 않고, 나중에 재처리하기도 쉽습니다.
CSV/엑셀 내보내기 쪽 체크포인트
pandas DataFrame.to_csv 문서는 encoding 인자를 제공하므로, 내보내기 단계에서 인코딩을 직접 지정하는 방식이 자연스럽습니다. 또한 read_csv를 다시 읽는 과정에서는 on_bad_lines를 너무 넓은 복구 수단으로 쓰지 말고, parser가 정의한 문제 행 처리로만 생각하는 편이 맞습니다.
즉, 요약하면:
- 추출은 영수증 전용 모델로
- 정규화는 고정 스키마로
- 검증은 원본 대조로
- 저장은 인코딩과 파서 동작을 의식해서
한 줄 정리
영수증 OCR로 엑셀을 만들 때는 “OCR → 구조화 추출 → 정규화 → 검증 → 저장” 순서로 잡으면 안정적입니다. 특히 영수증 전용 모델과 프로그램matic workflow를 연결하고, CSV 인코딩과 파서 처리 방식을 명확히 두는 것이 핵심입니다.