Excel Order Cleaner — 공동구매 발주서 취합
30개 지점의 제각각인 엑셀 발주서를 드래그해서 넣으면 거래처별 배송명단이 1분 안에 자동 완성되는 데스크탑 앱.
30개 지점 발주서 → 1분 만에 배송명단

문제
공동구매 본사 발주 담당자는 매일 아침 2~3시간을 발주서 취합에 씁니다. 지점마다 엑셀 양식이 다르고, 컬럼 순서·상품명 표기 방식이 제각각입니다. 같은 상품을 "감자탕 중", "감자탕중", "감자탕(중)" 식으로 입력해 별도 상품으로 집계되는 일도 흔합니다.
수작업 복사-붙여넣기는 지점 수가 늘수록 선형으로 시간이 늘어나고, 피로 누적 상태에서는 행 누락·수량 오류가 빈발합니다. 취합이 끝나면 다시 거래처별로 재정렬하는 작업이 30분 이상 추가됩니다.
접근
웹 서비스가 아닌 데스크탑 앱으로 만든 이유는 명확합니다 — 발주 담당자의 업무 환경은 윈도우 PC 위 엑셀이고, 별도 서버나 인터넷 환경에 의존하지 않으면서도 빠르게 처리되어야 하기 때문입니다. PySide6 기반 네이티브 앱으로 제작해 Windows/macOS에서 단독 실행파일(.exe)로 배포합니다.
핵심 자동화는 세 층입니다 — 컬럼 자동 감지(한국어 변형 키워드 사전), 상품명 유사도 매칭(rapidfuzz 기반), 안내 문구 정규식 필터링. 자동 매칭은 신뢰도 기반으로 분류해 자동/검토/신규 3단계로 표시함으로써 사람의 검수를 부담스럽지 않게 만들었습니다.
해결
다수의 지점 엑셀 파일을 한 번에 드래그하면 상품명·수량·지점명이 자동 인식되고, 표기 차이가 있어도 유사도 매칭으로 통합됩니다. 거래처별 배송명단이 자동으로 생성되어 엑셀 파일로 즉시 출력됩니다.
자동 매칭(초록), 검토 필요(노랑), 신규 상품(파랑)으로 색상 구분되어 사람이 검수할 부분만 빠르게 처리할 수 있습니다.

기능
여러 지점의 발주서 엑셀 파일을 드래그하거나 폴더 선택으로 한 번에 로드합니다. 파일 목록에 각 지점명과 로드 상태(성공/오류)가 표시됩니다.
엑셀 컬럼 이름·순서가 달라도 상품명·수량·수령인·주소·연락처를 자동 인식합니다. 한국어 변형 키워드 사전 기반 매칭, 자동 인식 실패 컬럼은 수동 지정 드롭다운을 제공합니다.
rapidfuzz 기반 유사도 알고리즘으로 지점마다 다르게 입력된 상품명을 동일 상품으로 통합합니다. 자동 매칭(초록)·검토 필요(노랑)·신규(파랑)로 색상 구분 표시됩니다.
취합된 발주를 거래처(납품처) 기준으로 재분류해 배송명단 엑셀을 자동 생성합니다. 거래처별 시트 탭 구조로 출력됩니다.
당일 전체 지점의 상품별 총 발주 수량과 지점별 현황을 요약 리포트로 출력합니다.
발주서에 섞인 안내 텍스트("클릭하세요", "드롭메뉴에서 선택" 등)를 정규식 필터(15+ 종 내장)로 자동 제거합니다.
스택
- Python 3 + PySide6 — Windows/macOS 네이티브 데스크탑 앱
- openpyxl 3.1+ — 엑셀 파일 읽기/쓰기
- rapidfuzz 3.5+ — 한국어 문자열 유사도 매칭
- SQLite — 상품 마스터 데이터베이스
- Windows 실행파일(
.exe) 단독 배포 — 별도 Python 설치 불필요
결과
공동구매 본사 담당자 실사용 환경에서 개발·검증 — 지점 수가 늘어도 작업 시간은 그대로입니다.
매일 아침 가장 부담스러웠던 발주 취합 업무가 시스템화되면서 본사 담당자는 매장 운영 지원과 신규 거래처 개척 같은 본업에 시간을 쓸 수 있게 됐습니다.
다음 사례
같은 카테고리의 비슷한 시스템.