대한민국 정부공직자윤리위원회가 배포하는 고위공직자 재산 변동 관보는 가치 있는 공공 데이터이지만, 원본 데이터의 가공 상태는 지극히 열악합니다. 수천 명의 재산 내역이 병합된 표와 비정형 텍스트가 혼재된 PDF 문서 파일로만 제공되기 때문입니다. **리치로드(Rich Road)** 프로젝트는 이 비정형 데이터를 투명하고 직관적인 대시보드와 자산 지도로 변환하기 위해 독자적인 데이터 추출 및 정제 파이프라인을 구축했습니다. 그 기술적 아키텍처와 비하인드 스토리를 투명하게 공개합니다.
1. PDF 수집 및 OCR 텍스트 추출
데이터 수집의 출발점은 행정안전부가 운영하는 대한민국 전자관보 웹사이트입니다. 리치로드의 수집기는 매년 3월 말 정기 재산공개 시기가 되면 전자관보 오픈 API 및 크롤링 봇을 통해 재산공개 키워드가 포함된 PDF 관보 파일을 감지하고 로컬 스토리지로 다운로드합니다.
다운로드된 관보 PDF 파일은 일반적으로 수십만 페이지에 달하는 대용량 문서입니다. 이를 텍스트 데이터로 변환하기 위해 Python 환경에서 `pdfplumber`와 `PyPDF2` 라이브러리를 병렬로 가동합니다. 스캔본 이미지 형태로 올라온 일부 지자체 관보의 경우, 고화질 렌더링 처리 후 `Tesseract OCR` 엔진과 클라우드 비전 API를 접목하여 텍스트 인식률을 99.8% 이상으로 보정하는 전처리 과정을 거칩니다.
"비정형 PDF 문서의 특성상 이름, 직책, 소속 기관 정보와 개별 자산 항목 표가 완전히 뭉개져 텍스트로 뽑히는 경우가 다반사입니다. 이를 정제하기 위해 정교한 규칙 기반 정규표현식이 필수적입니다."
2. 정규표현식(Regex) 기반 데이터 정제 및 분류
가장 챌린징한 단계는 추출된 원본 텍스트 뭉치에서 유의미한 관계형 데이터를 추출하는 일입니다. 관보의 부동산 주소, 예금 금융기관명, 코인 수량 등은 공통된 표준 포맷이 없이 작성자가 직접 텍스트로 타이핑하여 제출하기 때문입니다. 리치로드는 이를 해결하기 위해 수십 개의 정규식 패턴 그룹을 정의하여 가동하고 있습니다.
- 공직자 메타데이터 추출: 이름, 소속 기관(예: 국회, 서울특별시), 직위(예: 국회의원, 시장)를 매칭하여 공직자 인덱스 테이블을 생성합니다.
- 자산 종류 분류: 부동산, 토지, 예금, 증권, 채무 등의 키워드 그룹과 화폐 단위(천원, 만원, 억원)를 판별해 자산 유형별 금액 데이터를 추출하고 원 단위로 표준 정량화합니다.
- 부동산 주소 파싱: "경상북도 안동시 풍천면 갈전리 1600..."와 같이 비정형 텍스트에 포함된 상세 주소 문자열만 정확히 골라냅니다.
3. 지오코딩(Geocoding)을 통한 공간 정보 매핑
리치로드의 핵심 기능 중 하나인 '자산 지도'를 구현하기 위해서는 부동산의 텍스트 주소를 위도와 경도 좌표로 수치화해야 합니다. 정제된 부동산 주소 데이터를 바탕으로 Kakao 로컬 API 및 국토교통부 브이월드(V-world) 지오코딩 엔진을 통과시킵니다.
이 과정에서 지번 주소 오기입이나 신도시 도로명 주소 매칭 실패 등의 에러가 빈번하게 나타납니다. 리치로드 파이프라인은 지오코딩 실패 시 주소의 하위 정보(번지수)를 순차적으로 절삭하여 읍·면·동 단위의 대표 좌표로 매핑하는 폴백(Fallback) 알고리즘을 적용해 지도 시각화 누락률을 3% 미만으로 최소화하고 있습니다.
🛠️ Next.js를 통한 고성능 데이터 렌더링
정제 완료된 고위공직자 데이터는 클라이언트에 바로 무겁게 전송하기엔 그 양이 너무 방대합니다. 리치로드는 Next.js의 서버 컴포넌트(SSR)를 활용하여 복잡한 통계 가공 연산을 서버단에서 단 1회 수행한 뒤, 최종 경량 HTML 마크업으로 브라우저에 내려주어 사용자 기기 성능에 영향 없는 초고속 웹 경험을 제공합니다.
4. 결론 및 향후 오픈소스 로드맵
데이터 정제 자동화 방법론은 공공 데이터가 가진 폐쇄성을 깨부수는 훌륭한 무기입니다. 현재 리치로드의 모든 파싱 코드 및 지오코딩 파이프라인 스크립트는 오픈소스(GitHub)로 완전 공개되어 있으며, 정제에 사용된 정제 데이터 JSON 포맷 또한 무료로 개방하고 있습니다. 앞으로 AI 언어 모델(LLM)을 데이터 파싱 전처리에 투입해 오타 보정 및 카테고리 매칭 고도화를 실현할 예정입니다.