2025.05 – 2025.12
대전광역시 유성구청 이미지 인식 기반 행정업무 자동화

- 외부 연동이 제한된 인트라넷 환경에서 이미지 인식 기반 주민 검색 · 세대원 수 추출 자동화 설계
- ROI 및 다중 스케일 템플릿 매칭으로 화면 변화에 대응해 UI 인식 정확도를 40%에서 100%로 개선
외부 연동이 막힌 인트라넷 환경에서 종량제 봉투 지급 대상자의 세대원 수 조회를 이미지 인식으로 자동화하고, 실제 화면 탐지율을 40%에서 100%로 끌어올렸다.
프로젝트 요약
| 항목 | 내용 |
|---|---|
| 소속 | 2025년 유성 데이터기반 실증 리빙랩 프로젝트 (대전광역시 유성구청) |
| 기간 | 2025.05 ~ 2025.12 |
| 형태 | 4인 팀 (국립한밭대학교 온결팀) |
| 역할 | PM · 개발 |
| 담당 범위 | 운영 환경 분석, 이미지 인식 자동화 방식 제안, 탐지 로직 개발 |
핵심 성과
- 명단 업로드부터 세대원 수 엑셀 산출까지 자동 처리
- 실제 화면 탐지율을 40%에서 100%로 개선 (100회 테스트 전건 탐지)
- 리빙랩 프로젝트 최우수상
주요 기여
- PM으로 운영 환경 분석과 자동화 방식 제안
- 화면 인식 방식 선정, 템플릿 매칭과 ROI 기반 탐지 로직 개발
1. 프로젝트 개요
1.1 배경
유성구청은 분기별로 차상위 계층에게 종량제 봉투를 지급하고, 세대원 수에 따라 차등 분배한다. 담당자는 지급자 명단을 받아 주민 검색 프로그램에서 한 명씩 조회하고, 세대원 수를 엑셀에 손으로 기록했다.
1.2 문제 정의
같은 조회와 입력을 명단 인원만큼 반복해야 해 업무 효율이 떨어지고, 수기 입력이라 오류가 생길 여지가 있었다.
1.3 목표와 요구사항
- 지급자 명단 파일 업로드로 주민 검색 자동화
- 조회 결과에서 세대원 수 자동 카운트
- 세대원 수를 기록한 엑셀 산출물 반환
1.4 제약 조건
- 인트라넷 환경이라 외부 API와 개발자 도구 사용 불가
- 구청의 주민 조회 프로그램에 직접 접근·연동 불가
- 공공기관 내부 서버 확보가 어렵고, 외부 클라우드는 지속 비용과 예산 불확실성 존재
2. 시스템 설계
2.1 전체 아키텍처
자동화 프로그램은 담당자 PC에서 실행되는 응용 프로그램이다. 명단 파일(CSV · Excel)을 읽어 한 명씩 주민 조회 화면을 조작하고, 결과 화면에서 세대원 수를 세어 엑셀로 저장한다. 화면 조작은 OpenCV로 UI 요소를 찾고 PyAutoGUI로 클릭·입력하는 방식이다.
2.2 설계 의사결정
서버 없이 담당자 PC에서 화면을 인식해 조작하는 응용 프로그램으로 정했다. 인트라넷에서는 API 연동이 불가능해 화면 자체를 입력으로 쓰는 방식만 가능했고, 서버를 두지 않은 이유는 세 가지다. 공공기관 내부 서버를 확보할 수 없고 외부 클라우드는 지속 비용이 든다. 외부 자원을 쓰면 내부망 통합과 보안 절차에서 충돌이 예상됐다. 그리고 서버 구축 없이 바로 실행되는 응용 프로그램이 배포와 피드백에 가장 빨랐다.
2.3 기술 스택
| 분류 | 기술 | 사용 목적 |
|---|---|---|
| 언어 | Python | 자동화 프로그램 전체 |
| 이미지 인식 | OpenCV | 템플릿 매칭, 직선 검출, ROI 추출, 특징 검출 |
| 화면 조작 | PyAutoGUI | 클릭·입력 이벤트 실행 |
3. 주요 구현
3.1 목업 주민 조회 프로그램
실제 주민 조회 프로그램에 접근할 수 없어 최소 기능만 재구현한 자체 조회 프로그램을 만들었다. 주민등록번호 조회 필드와 세대원 정보 검색 결과 화면을 재현했고, 테스트 데이터는 생성형 AI로 만들었다.
3.2 자동화 프로그램
CSV · Excel 원본을 업로드하고 출력 파일 이름과 저장 경로를 지정한다. 엑셀 한 행(한 명)을 단위로 진행률을 보여 주고, 파일 처리 로그와 버튼 기반 동작 제어를 제공한다.
3.3 템플릿 매칭
UI 요소를 미리 등록한 템플릿과 비교해 찾고, 찾은 순서대로 조작한다. 화면의 특징적인 UI 요소(조작 버튼, 입력 필드, 체크박스)를 템플릿으로 정의하고, 뚜렷하고 고유한 요소일수록 좋은 템플릿으로 골랐다. 프로그램에 템플릿을 미리 등록하고, OpenCV로 템플릿과 70% 이상 유사한 UI 요소를 찾은 뒤 PyAutoGUI로 이벤트를 순서대로 실행한다.
4. 트러블슈팅
4.1 실제 화면에서 탐지율 40%
- 요약
- 임계값 조정 대신 팝업 영역(ROI)만 탐색하도록 범위를 바꿔, 실제 화면 탐지율을 40%에서 100%로 올렸다.
- 현상
- 목업에서는 동작했지만 실제 화면에서는 탐지율이 40%에 그쳤다.
- 원인 분석
- 화면 전체를 탐색하면서 팝업 밖 배경의 유사한 UI를 잘못 찾았고, 명암 차이로 실제 대상을 놓쳤다. 임계값을 낮추면 오탐이 늘고 높이면 미탐이 늘어, 값 조정만으로는 해결할 수 없는 구조였다.
- 해결
- 임계값 대신 탐색 범위를 다시 정의했다. 전처리 후 직선을 검출해 모달(팝업) 영역을 추정하고, ROI를 추출해 배경을 마스킹한 뒤 ROI 안에서만 템플릿 매칭을 수행한다. ROI 내부 특징 추출(Feature Detection)과 명암 차이 보정을 더했다.
- 검증
- 실제 화면에서 100회 테스트해 전건 탐지했고, 배경 클릭 오탐이 사라졌다.
5. 검증 및 성과
5.1 검증 방법
목업 프로그램으로 동작 흐름을 먼저 검증한 뒤, 실제 운영 화면을 분석해 같은 조건에서 100회 반복 테스트했다.
5.2 결과
| 항목 | 결과 |
|---|---|
| 탐지율 | 40%에서 100%로 개선 (100회 테스트 전건 탐지) |
| 자동화 범위 | 명단 업로드부터 주민 검색, 세대원 수 카운트, 엑셀 산출까지 |
| 수상 | 2025 유성 데이터기반 실증 리빙랩 최우수상 |
반복적인 행정 업무를 자동화한 이 구조는 같은 업무를 가진 다른 자치단체로 확장할 수 있다.

