Python 라이브러리

문서가 규칙을
지켰는지,
한 줄로 검사합니다

Python
import structverify as sv

rules = sv.Ruleset.from_file("규정문헌집.pdf", provider="upstage")

# 문서 또는 텍스트 검사
v = rules.check("용출 납은 95mg/kg으로 측정되었다")

# 결과
v.compliant # → False
v.article # → "제9조 (어린이제품 유해원소 용출)"
v.rule_value # → 90.0 (기준)
v.claim_value # → 95.0 (주장)
v.unit # → "mg/kg"
검사 결과 예시
False
조항: 제9조 (어린이제품 유해원소 용출)  |  기준: 90.0 mg/kg  |  주장: 95.0 mg/kg  |  차이: +5.0 mg/kg (5.6%)

내 규정집(PDF)이나 회사 데이터를 기준으로 문서를 대조하고, 명확한 True/False와 근거를 포함한 리포트를 생성합니다. 검증에서 쌓인 정답으로 자체 모델까지 기릅니다.

$pip install structverify
규정 기반 검증PDF·DOCX 등 다양한 문서를 규정집으로 등록하고, 에이전트가 적용 조항을 스스로 찾아 정확하게 대조합니다.
명확한 True/False모호함 없는 결과와 함께 근거 조항·기준값·차이값을 구조화하여 제공하며, 판정은 코드가 결정론적으로 수행됩니다.
간단한 API단 한 줄의 코드로 검증을 수행하고, 반복 업무를 자동화하여 생산성을 높입니다. 결과 객체에서 값을 바로 읽을 수 있습니다.
리포트 & 내보내기검증 결과를 보기 좋은 리포트로 확인하고, .to_dict()로 JSON 등으로 내보낼 수 있습니다.
간단한 설치pip 한 줄로 바로 시작
높은 정확도근거 기반 결정론 판정
파이썬 3.10+최신 환경 지원
오픈소스MIT · PyPI & GitHub

동작 구조

문서에서 수치 주장을 찾아, 주장마다 에이전트가 근거를 확보하고, 판정은 코드가 결정론적으로 계산하는 구조입니다.

검사 대상 문서 PDF · DOCX · 텍스트 전처리 텍스트 추출 · 문장 분리 주장 탐지 수치 문장 선별 소스 프로파일러 기준 자료 조사 → 검색 전략 수립 판정 (코드) 허용오차 · 한도 규칙 결정론 계산 LLM 개입 없음 기준 자료 규정집 PDF · 참조 CSV DB(원시 테이블) · 통계 임베딩 색인은 최초 1회 RuntimeAgent · ReAct 루프 (LLM) 주장 하나마다 독립 실행 Planner 다음 행동 계획 도구 실행 catalog_search · 의미 검색 fetch_evidence · 에이전틱 SQL query_rewriter · 검색어 재구성 deep_explore · 표 샘플 조사 replan / finish Reflect 근거 충분성 평가 근거가 부족하면 재계획 · 최대 10회 반복 · 신뢰도 0.9 이상이면 조기 종료 finish · 근거 확보 결과 객체 Report · Verdict .ok · .compliant · 근거 · 차이값 탐지 기준 주입 검색 전략 임베딩 검색 · 읽기 전용 SQL 워크스페이스 ./agent_workspace memory.md 작업 메모리(시도 이력 기록 · 중복 검색 방지) · verified_facts 캐시 · job 단위 격리 기록 / 조회 감독 학습 루프 structverify.training 학습 데이터 수집 확정 정답 · 사람 교정 · 시드 chat jsonl 표준 포맷 DataCurator 품질 검사 · 격리 사유 기록 중복 · 라벨 오류 · 태스크 편중 LoRA 학습 QLoRA(NVIDIA) · MLX(Apple) 실시간 감독 · 수렴 시 조기 종료 EvalGate 학습 전/후 자가평가 개선 시에만 채택 · 회귀 방지 확정 정답 채택된 어댑터를 파이프라인에 주입

에이전트는 주장마다 워크스페이스에 시도 이력을 기록하며 재검색하고, 확보한 근거는 LLM이 아닌 코드가 판정합니다. 검증에서 축적된 확정 정답은 학습 루프를 거쳐 다시 파이프라인에 주입됩니다.

3분 데모 (실제 실행 영상)

규정 준수 검사 → 에이전트 모드 → 6천만 행 원장 사실 검증 → 실시간 대시보드 → 감독 학습 루프(조기 종료). 옵션 설정까지 포함한 전체 코드와 실측 출력으로 구성했습니다.

왜 StructVerify인가

기업·기관은 매일 수많은 문서가 정해진 기준을 지켰는지 확인해야 합니다.

제품 시험성적서안전기준(중금속 한도 등)을 충족하는가?
식품 표시식약처 영양강조표시 기준을 지켰는가?
지출·예산사내 한도 규정을 넘지 않았는가?
기사·보고서수치가 공식 통계와 일치하는가?

이 작업은 대부분 사람이 규정집과 문서를 펼쳐놓고 수작업으로 대조합니다. 규정은 도메인마다 다르고, 기업 내부 규정은 공개 데이터로 존재하지 않습니다. 기존 사실검증 도구는 특정 공공 데이터에 고정돼 있어 "내 규정·내 데이터"로는 쓸 수 없습니다.

StructVerify는 이 문제를 뒤집습니다. 어떤 규정집·어떤 데이터든 사용자가 정답으로 연결(BYO ground truth)하면, 문서의 준수/사실 여부를 코드 한 줄로 판정하는 도메인 독립 검증 라이브러리입니다.

판정을 믿을 수 있는 이유

LLM은 추출만, 판정은 코드가LLM은 적용 조항·기준값·측정값을 추출만 하고, 준수/위반 판정은 코드가 max(한도)·min(최소)·exact 규칙으로 결정론적으로 계산합니다. "90 이하인데 95" 같은 판단에 모델의 변동성이 개입할 여지가 없습니다.
자기일관성 투표추출 단계에는 병렬 다수결(self-consistency) 투표를 얹어 LLM 변동성을 한 번 더 억제합니다.
ReAct 에이전트조항이 많아 한 번의 검색으로 놓칠 땐 검색 → 판정 → 쿼리 재구성 → 재검색을 스스로 반복, 시도 이력을 작업 메모리로 추적해 중복 없이 적용 조항을 끝까지 찾습니다.
학습도 감독 하에자체 모델 학습은 DataCurator(데이터 품질)·TrainDoctor(실시간 이상 감지·조기 종료)·EvalGate(학습 전/후 자가평가로 채택/거부)가 감독합니다.

실증 결과

4개 도메인어린이제품·화장품·식품표시·공공기관 실제 기준·실제 문서로 검증
222개pytest 통과 (0 실패), 판정 의미·ReAct 재구성·파이프라인 회귀
79% 절약감독 조기 종료가 GPU 학습 2,496스텝 → 516스텝, 품질 동일 (Colab L4 실측)
7개코어 의존성, 전부 MIT/Apache, AGPL은 opt-in extra로 격리

실측 예: Snowflake 원장 6천만 행을 정답으로 공식 경영실적 보고서(PDF)를 에이전틱 검증, 주장 20건 중 심어둔 오기재 3건(순매출 3.2조 표기, 평균 주문금액 20만 달러, 1996년 주문 310만 건) 전건 검출, 정확한 주장 오판 0건 · 25조항 혼합 규정집에서 쿼리 재구성으로 적용 조항 확정 (iterations=2)

자주 묻는 질문

무료인가요?

네, MIT 라이선스 오픈소스입니다. 다만 판정에 LLM을 쓰므로 provider(Upstage·OpenAI·Gemini·HCX) API 키가 필요합니다. Upstage는 가입 시 무료 크레딧을 제공합니다.

어떤 문서를 지원하나요?

PDF·DOCX·txt·md, 그리고 URL 기사 추출([url] extra)을 지원합니다. 기본 PDF 경로는 pdfplumber(MIT)이고, OCR이 필요한 이미지 PDF만 [pdf-ocr]로 opt-in합니다.

내 데이터가 외부로 나가나요?

판정 대상 문장과 검색된 조항이 선택한 LLM provider API로 전송되는 것이 전부이며, 그 외 수집은 없습니다. 완전 온프렘(자체 GPU 모델) 연결은 base_url 주입으로 구성할 수 있습니다.

GPU가 필요한가요?

검증에는 필요 없습니다. 자체 모델을 학습하는 학습 루프의 학습 단계만 GPU를 쓰며 ([training] NVIDIA / [training-mac] Apple Silicon), 데이터 준비·진단·평가는 GPU 없이 동작합니다.

파이썬 버전 요구사항은?

Python 3.10 이상입니다. 3.9 이하에서는 pip이 "No matching distribution found"를 냅니다.

문서

사용법설치 → API 키 → 5분 튜토리얼 → 가이드. 모든 예시가 실측 출력과 함께. 레퍼런스 매뉴얼모든 API 시그니처, CLI 전체 옵션, config 설정값과 환경변수. 학습 가이드왜·무엇을·어떤 데이터로 학습하고, 학습된 모델을 어디에 꽂는지. Examples저장소 examples/, 시나리오별 단일 파일 6종, 시연 데이터 동봉.