한국 공공조달 PDF·HWP·HWPX에서 특정 제품 고정, 제조사·총판 자격 요구, 기존 환경 결합, 공급자 고유 라이선스, 제출 포맷 제한을 찾아 근거 문장과 함께 보여주는 오픈소스 린터입니다.
오픈소스 개발자대회 출품작으로, 오픈소스 확산을 방해할 수 있는 조달 구조를 누구나 검토하고 개선할 수 있는 공개 규칙으로 찾는 것을 목표로 합니다.
- 실제 사용자 파일을 브라우저 메모리에서 분석하며 원문을 서버로 전송하지 않습니다.
- 텍스트 PDF와 스캔 PDF의 선택적 한국어·영어 OCR을 지원합니다.
- HWP 5.x 및 HWPX의 본문·표·글상자 등 중첩 문단을 복원합니다.
- 제품명만 세지 않고 필수 요구, 유지보수 목록, 예시, 복수 플랫폼, 동등제품 허용 문맥을 구분합니다.
- 점수의 모든 근거, 문맥 분류, 완화 조건과 대체 요구사항 후보를 공개합니다.
Node.js 22와 pnpm이 필요합니다.
pnpm install
pnpm dev브라우저에서 표시된 로컬 주소를 열고 PDF, HWP 또는 HWPX를 올립니다.
pnpm cli -- ./document.pdf
pnpm cli -- ./document.hwp --json
pnpm cli -- ./document.hwpx --fail-on 60CLI는 텍스트 PDF와 HWP/HWPX를 로컬에서 분석합니다. 브라우저 캔버스가 필요한 스캔 PDF OCR은 웹 UI에서 실행됩니다.
pnpm lint
pnpm typecheck
pnpm test
pnpm evaluate
pnpm buildpnpm evaluate는 CC0로 공개된 합성 한국어 문장 정답셋에서 규칙 탐지와 점수 경계를 재현합니다. 이 결과는 실제 조달문서 전체에 대한 일반화 정확도가 아닙니다. 실제 문서 벤치마크는 출처 URL과 공고번호를 공개하되, 원문의 재배포 권리는 각 제공기관에 있습니다.
공식 나라장터 API에서 용역·물품·공사·외자·기타 공고의 PDF/HWP/HWPX 첨부문서를 지속 수집하고, 공고 차수와 SHA-256 중복을 제거한 뒤 동일 엔진으로 일괄 분석할 수 있습니다.
2026년 8월 27일 기준 실행에서는 2023–2026년 첨부 후보 67,096건을 탐색해 고유 원문 1,334건을 구축했습니다. 초기 분석에서 실패한 스캔 PDF 38건을 로컬 OCR로 복구해 1,334건 전부를 자동 분석했고 파일 무결성 오류는 0건입니다. 이 가운데 14건은 40쪽 OCR 상한 또는 매우 짧은 본문 때문에 추가 수동 확인 대상으로 남겼습니다. 실제 정확도 검증을 위한 400건 블라인드 표본은 인간 라벨 입력 전 상태입니다. 공개 가능한 집계는 data/corpus-summary.json에 기록합니다.
export DATA_GO_KR_SERVICE_KEY='공공데이터포털-일반-인증키'
pnpm corpus:collect --target 5000
pnpm corpus:analyze
pnpm corpus:analyze:ocr
pnpm corpus:profile --target 5000
pnpm corpus:sample --size 400corpus:analyze:ocr은 텍스트 계층이 없는 PDF를 로컬 Node OCR로 재처리합니다. 대규모 무라벨 코퍼스는 표현 범위 확장에 사용하고, 실제 Precision/Recall은 development와 봉인 test로 분리한 블라인드 독립 검수 표본에서만 계산합니다. 재개 가능한 수집과 품질 게이트는 대규모 코퍼스 문서, 판정 기준은 실문서 라벨링 가이드에 있습니다.
Vendor Lock-in Score는 위법 확률이 아니라 검토 우선순위입니다. 범주별 상한을 둔 위험 신호 점수에서 동등제품, 개방형 표준, 데이터 이관 등 완화 신호를 차감합니다. 자세한 공식은 점수 설명에 있습니다.
근거 강도는 탐지 문장이 필수 요구에 얼마나 가까운지를 표시하며 통계적 정확도가 아닙니다. 추출 신뢰도는 문서에서 텍스트를 복원한 방식의 품질 지표입니다.
문서 원문과 추출 텍스트는 서버로 전송하지 않습니다. OCR을 처음 사용할 때 실행 코드와 한국어·영어 언어 모델을 내려받을 수 있지만 문서 이미지는 브라우저의 로컬 워커에서 처리됩니다. 파일 크기, 페이지 수, 압축 해제 크기, 내부 항목 수에 한도를 적용합니다. 자세한 내용은 위협 모델과 보안 정책을 참고하세요.
- 점수는 법률 판단이 아니며 업무 필요성, 기존 자산, 보안 인증과 전환 비용을 담당자가 함께 검토해야 합니다.
- 자동 OCR은 안전성과 사용성을 위해 텍스트가 부족한 최대 40쪽까지 적용합니다. 더 긴 스캔 문서는 분할할 수 있습니다.
- 암호화 또는 배포용 HWP는 편집 가능한 사본이 필요합니다.
- HWP의 중첩 텍스트는 복원하지만 화면상의 정확한 읽기 순서와 다를 수 있습니다.
- 대안 목록은 동일 제품 인증이 아니라 검토 출발점입니다.
제품·표현·완화 조건은 data/rules-ko.json에 코드와 분리되어 있습니다. 새 규칙에는 양성·음성 문장 테스트를 함께 제출해 주세요. CONTRIBUTING.md에 절차를 설명합니다.
대회 발표 자료는 제출 개요, 코드 구조 해설에 정리했습니다.
코드와 규칙 팩은 Apache License 2.0, tests/fixtures/golden-cases.json은 CC0-1.0입니다. 제3자 구성요소는 각 구성요소의 라이선스를 따릅니다.