피드로 돌아가기
How We Built a Federal Court Rules Database
Dev.toDev.to
Backend

94개 법원 PDF 파싱 및 4,200개 문서의 정형 데이터화 성공

How We Built a Federal Court Rules Database

James Mitchell2026년 5월 8일8intermediate

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)을 분리하여 계층적 구조로 설계

원문 읽기