첨부파일이라는 데이터의 블랙홀: 공공 공고의 핵심은 본문이 아니다 | Signals EP.4
정부 사업 공고의 핵심은 본문 2줄이 아닌 30페이지 첨부파일이다. HWP 호환성, 이미지형 PDF, 인증 다운로드 같은 장벽 때문에 7만 건 중 58%가 추출 실패. 시리즈 4편.
시리즈: 공공데이터에서 영업 시그널을 자동으로 발굴하기까지, 3편 읽기
본문은 요약이고, 첨부파일이 본체다
정부 공문에서 진짜 중요한 정보가 어디 있는지 아는가?
본문이 아니다. 첨부파일이다. 이건 이 프로젝트를 하면서 깨달은 가장 역설적인 사실이다.
정부 사업 공고의 전형적인 구조
- 게시판 본문: "아래와 같이 ○○사업 참여기관을 모집합니다." (2~3줄)
- 첨부파일 1: 사업안내서.pdf (30페이지), 예산, 자격요건, 평가기준, 일정 등 핵심 정보가 전부 여기에
- 첨부파일 2: 신청서.hwp, 서식
- 첨부파일 3: 사업설명회 자료.pptx, 추가 맥락
영업 시그널의 핵심인 예산 규모, 기술 요구사항, 사업 기간 같은 건 대부분 첨부파일 안에 있다. 게시판 본문만 수집하면 "공모합니다" 수준의 정보밖에 못 얻는다.
7만 건의 파일, 그리고 58%의 벽
수집한 12만 건의 공지 중 첨부파일이 있는 건 7만 건이 넘었다. 이 파일들에서 텍스트를 뽑아야 실질적인 분석이 가능하다.
문제는 이게 생각보다 훨씬 까다로웠다는 것.
HWP의 지배력
한국 정부 문서의 절대다수는 아래아한글(HWP) 포맷이다. 국제 표준으로는 PDF가 쓰이지만, 한국 공공 부문에서 HWP는 사실상의 표준이다. 문제는 HWP 파일의 텍스트 추출이 기술적으로 까다롭다는 점이다. 파일 내부가 압축되어 있고, 한글 프로그램 버전에 따라 파일 구조 자체가 다르다. 구버전과 신버전, 그리고 최근의 XML 기반 포맷까지 세 가지가 현역으로 돌아다니고 있다.
이미지형 PDF
PDF라고 텍스트 추출이 다 되는 건 아니다. 종이 문서를 스캐너로 찍어서 PDF로 변환한 "이미지형 PDF"가 상당수 섞여 있다. 이런 파일은 OCR(광학 문자 인식)을 돌리지 않으면 텍스트를 뽑을 수가 없다.
인증이 필요한 다운로드
일부 기관은 첨부파일을 받으려면 해당 사이트에 먼저 접속한 상태여야 한다. 세션 쿠키가 없는 상태에서 파일 URL에 직접 접근하면 "로그인 후 이용해주세요" 페이지만 뜬다.
ZIP 안의 HWP
가끔은 첨부파일 자체가 ZIP 압축 파일이고, 그 안에 HWP 파일이 여러 개 들어 있다. 한 겹이 아니라 두 겹을 뚫어야 실제 내용에 도달한다.
결과적으로 전체 첨부파일의 58%가 텍스트 추출 미완 상태로 남았다. 수집은 했지만 읽을 수 없는 데이터. 이게 '첨부파일 블랙홀'이다.
추출이 됐다고 끝이 아니다
텍스트 추출에 성공한 파일에서도 일은 끝나지 않는다.
30페이지짜리 사업안내서에서 "총 사업비 50억 원"이라는 한 줄을 찾아야 한다. "사업 기간 2026.4~2028.12"라는 정보를 파싱해야 한다. 첨부파일 텍스트는 비정형 산문이니, 앞 에피소드에서 이야기한 메타데이터 문제가 여기서 다시 반복된다.
초기에는 키워드 기반으로 시도했다. "억 원", "사업비", "예산" 같은 단어를 찾아서 주변 숫자를 추출하는 방식. 하지만 표현의 다양성 앞에서 규칙의 수가 기하급수적으로 늘어났고, 결국 이 부분은 AI에 맡기는 방향으로 전환하게 된다. (이건 EP.7에서 자세히 다룬다.)
파일명에 숨은 메타데이터
하나 더 재미있는 문제가 있었다. 첨부파일 이름 자체가 깨끗하지 않다.
"공고문.pdf (5.3MB)"처럼 파일 크기가 이름에 붙어 있거나, 로컬 경로가 파일명으로 저장되어 있는 경우가 약 4만 건이었다. 뷰어 URL(파일을 브라우저에서 미리보기하는 링크)이 다운로드 URL로 잘못 저장된 경우도 15만 건이 넘었다.
데이터가 있는 것처럼 보이지만 실제로는 의미 없는 레코드. 이런 쓰레기를 식별하고 정리하는 것도 큰 작업이었다.
이걸 왜 감수하는가
이렇게까지 해야 하나 싶을 수 있다. 하지만 답은 명확하다.
사업안내서 30페이지 안에 예산 50억짜리 사업의 기술 요구사항이 구체적으로 적혀 있다. 우리 제품이 이 요건에 맞는지, 경쟁사 대비 어떤 강점이 있는지를 판단할 수 있다. 이 정보는 게시판 본문 "참여기관을 모집합니다"에서는 절대 얻을 수 없다.
첨부파일을 열 수 있느냐 없느냐가, 시그널의 깊이를 결정한다.
다음 에피소드에서는 이렇게 수집한 12만 건의 데이터 중 실제로 쓸만한 건 몇 개였는지, 노이즈와의 전쟁을 이야기한다.