DOCUMENT PROCESSING
How it’s built
v1.0 · 2026-10-27
Method
- 정적 HTML·CSS·JavaScript로 구성한다. 입력 변경 계산은 Web Worker에서 실행한다. 기본 입력의 표와 SVG는 같은 엔진으로 미리 계산해 HTML에 넣었다. 언어·테마·글자 크기를 바꿔도 계산 모델은 같다.
- 브라우저 모델 학습 없음. 준비 단계에서 TF-IDF→SVD를 적합했다. NumPy 2.3.5 · scikit-learn 1.8.0 · PyMuPDF 1.26.6 · KaTeX 0.16.11.
- 본문 초안 작성 보조: GPT-6. 실습 실행 중 LLM 호출 없음.
- 1 PDF Extraction — 2쪽, 78쪽, 156쪽, 168쪽처럼 형태가 다른 쪽을 선택하고 원시/정리 텍스트를 비교한다. 숫자나 표의 연결이 불명확하면 원본 링크를 연다.
- 2 Text Normalization — NFC와 NFKC, 공백 합치기를 비교한다. 합성 호환 문자 예시를 켜고 ①·㎏·전각 문자가 어떻게 달라지는지 확인한다.
- 3 Metadata — 편과 문서 종류를 조합하고 결과 개수를 비교한다. 전체를 선택했을 때와 조문 또는 별표만 선택했을 때 검색 대상이 어떻게 달라지는지 살펴본다.
- 4 Extraction Quality — 문자 수 임계값을 바꿔 검토 후보가 얼마나 늘어나는지 본다. 같은 페이지를 원본 PDF로 확인하고 신호와 실제 문제를 구분한다.
Data
- 사용자가 첨부한 2026-03-02 시행본 PDF 168쪽에서 712개 레코드를 만들었다. 검색은 조문과 별표·부칙 레코드 단위이며 청킹 탭은 분할 원리를 별도로 실험한다. TF-IDF 어휘 3,000개와 시드 42로 32차원 LSA를 만들었다. 계산 데이터 4.55 MB와 원본 PDF 2.80 MB를 공통 폴더에 둔다.
- 공개 법령 원문 + 작성한 관련성 라벨 12개 + 범위 밖 질의 2개. 문서 접근 등급·공격 문자열·질의 변형은 합성 입력이다.
- 입력은 앱 저장소에 보관하지 않는다. 상태 URL에는 실습 값이 포함되며 테마·글자 크기는 localStorage에 저장한다.
Validation
- 수식은 BM25·RRF·코사인·순위 지표의 정의와 독립 계산값을 대조한다. 시드 재현성·경계 입력·상태 직렬화·인용 추적·로컬 파일 연결은 소스 검증 스크립트로 확인한다. 공개 데이터에 붙인 관련성 라벨과 접근 등급은 작성자가 만든 설명용 예시다.
- 18개 계산·구조 검증 항목과 기본·최소·최대 입력 108개를 통과했다. BM25 수작업 예제, RRF 합산, 순위 지표, SHA-256 일치와 시드 재현을 포함한다.
Scope
- Knowledge Base 구축 기술을 다루며 OSH 안전 규정 해설은 별도 영역이다. 이 구현은 실제 LSA·BM25 계산을 사용한다. OCR, 신경망 임베딩, 생성형 답변, HNSW, 운영 인증 서버는 실행하지 않는다. RAG 탭은 근거 선택·컨텍스트 조립·인용·보류 기준을 다룬다.
- PDF Extraction: PDF 쪽 1–168 , 텍스트 형태 raw / clean
- Text Normalization: PDF 쪽 1–168 , 정규화 형식 NFC / NFKC, 공백 합치기 0 / 1, 합성 호환 문자 추가 0 / 1
- Metadata: 편 필터 all / 1 / 2 / 3 / 4, 문서 종류 all / article / annex / supplement
- Extraction Quality: PDF 쪽 1–168 , 검토 문자 수 임계값 0–1000
Sources
- PyMuPDF · Text extraction recipes
- Unicode · UAX #15: Unicode Normalization Forms
- W3C · PROV-DM: The PROV Data Model (2013)
- W3C · RDF 1.1 Concepts and Abstract Syntax (2014)
- 실습 코퍼스 · 첨부 PDF와 추출 레코드
- 법령 본문: 대한민국 저작권법 제7조의 보호받지 못하는 저작물. 첨부 시행본을 그대로 보존한다.
- NumPy · BSD-3-Clause; scikit-learn · BSD-3-Clause; PyMuPDF · AGPL-3.0 (preparation only); KaTeX · MIT (CDN)
History
- 2026-10-27 · v1.0 · 공개