피드로 돌아가기
Dev.toBackend
원문 읽기
94개 법원 PDF 파싱 및 4,200개 문서의 정형 데이터화 성공
How We Built a Federal Court Rules Database
AI 요약
Context
전국 94개 연방법원마다 상이한 CMS와 URL 구조, 비정형 PDF 포맷으로 인한 데이터 수집의 파편화 발생. 텍스트 레이어 부재 및 인코딩 손상으로 단순 스크래핑과 PyPDF2 기반의 초기 파싱 접근법이 한계에 직면함.
Technical Solution
- PDF 특성에 따른 Hybrid Parsing Pipeline 구축으로 텍스트 기반은 pdfplumber를 사용하고 이미지 기반은 Tesseract OCR을 적용한 구조 설계
- 텍스트 인코딩 손상 사례 해결을 위해 렌더링 이미지 기반의 Full-page OCR을 Fallback 전략으로 채택한 신뢰성 확보
- 94개 법원별 상이한 HTML 구조를 처리하기 위해 URL 패턴, CSS Selector, XPath를 정의한 Per-court Configuration System 도입
- Federal Rules 기반의 기본 Rules Engine 위에 법원별 예외 사항을 레이어링하는 Per-court Overrides 구조의 Deadline Calculator 구현
- OPM Federal Holiday Calendar 통합 및 Observed Holiday 처리 로직을 통한 날짜 계산 정밀도 향상
Impact
- 94개 연방법원 및 680명의 현직 판사 데이터 전수 추적 성공
- 4,200개 이상의 로컬 룰 및 개별 지침 문서 인덱싱 완료
- 40개 이상의 연방 규칙 레퍼런스 및 지역별 오버라이드 처리 기능 제공
- 월간 12,000명의 고유 방문자(Unique Visitors) 확보
실천 포인트
- 비정형 데이터 수집 시 단일 도구 대신 데이터 상태에 따른 단계별 Fallback 전략(Text -> OCR -> Image Render OCR) 수립 - 대상 사이트의 구조가 극도로 파편화된 경우 코드 수정 대신 설정 파일 기반의 Configuration-driven Scraper 설계 검토 - 복잡한 비즈니스 룰 구현 시 공통 기본 규칙(Base Rule)과 개별 예외 규칙(Override)을 분리하여 계층적 구조로 설계