문서 신뢰도 & ESG·그린워싱 위험도 분석 도구
환경 광고/ESG 문서/일반 보고서를 문장 단위로 분석해 근거 부족·모호한 표현·범위 과장 등을 점수화하고, 상위 위험 문장만 LLM으로 심층 분석해 리포트까지 만들어 주는 도구입니다.
VeriAI는 다음과 같은 워크플로우로 동작합니다.
- 사용자가 텍스트를 붙여넣거나, URL을 입력하면 본문을 추출합니다.
- 미리 정의된 규칙(
config/ad_rules.json,config/report_rules.json)에 따라
각 문장의 증거성, 모호성, 범위, 시점, 언어적 위험, 오프셋 의존도 등을 정량화합니다. - 문장별로 0–100 사이의 위험도 점수 risk와 등급 High/Medium/Low를 부여합니다.
- 위험도가 높은 상위 K개 문장을 골라 OpenAI LLM에 보내,
- 환경 광고 모드: 왜 그린워싱 위험이 있는지, 어떤 근거가 추가되어야 하는지
- 일반 보고서 모드: 어떤 수치/방법/표/인용이 부족한지
를 JSON 형태로 받아옵니다.
- 전체 결과를 대시보드 Streamlit로 탐색하고,
CSV / PDF 리포트로 내보낼 수 있습니다.
VeriAI is an AI-assisted document checker for:
- ESG / environmental advertisements (greenwashing risk)
- General business / technical reports (evidence & clarity)
It:
- Splits documents into sentences
- Scores each sentence with rule-based features
- Sends only the riskiest ones to an LLM for deeper review
- Provides interactive visualizations and exports (CSV, PDF)
- 🏆 2025 캡스톤 디자인 경진대회 우수상 수상
- 🏆 2025 캡스톤 디자인 경진대회 ESG 우수상 수상
- 🌎 일본 학술교류회 프로젝트 발표 선정
해당 프로젝트는 실무·학술적으로 모두 인정받은 검증된 프로젝트입니다.
- 📥 입력
- 텍스트 직접 입력
- URL 입력 →
trafilatura로 본문 자동 추출
- ⚖️ 규칙 기반 정량 분석
- 수치·연도·표준·제3자 검증 등 근거 점수(evidence_score)
- 모호어/과장/미래시제 등 모호성 점수(vagueness_score)
- 적용 범위/시점/오프셋 사용에 따른 위험도
- 0–100 위험도(risk) + High/Medium/Low 라벨 부여
- 🧾 두 가지 분석 모드
환경 광고 (Ad): ESG·그린워싱 중심 규칙일반 보고서 (Report): 연구/기술/비즈니스 보고서용 증거성 규칙
- 🧠 LLM 심층 분석
- 상위 위험 문장 K개만 LLM에 전달
- 광고 모드:
risk_reasons,explanation,evidence_needed,suggested_queries등 - 보고서 모드:
issues,what_to_add(metrics/method/tables_figures/citations)등
- 📊 시각화 & XAI
- 문장별 위험도 스캐터 플롯
- 위험 요인 Stacked Bar 차트
- SHAP Waterfall Plot으로 점수가 어떻게 만들어졌는지 설명
- 📤 내보내기
- 전체 결과 CSV 다운로드
- 요약 + LLM 결과를 포함한 PDF 리포트 생성
VeriAI는 규칙 기반 위험도 분석 + LLM 심층 분석을 결합한 하이브리드 구조로 동작합니다.
전체 흐름은 아래와 같습니다:
User Input (Text / URL)
↓
parsers.py
- URL 입력 시 본문 크롤링(trafilatura)
- HTML/불필요 요소 제거 후 순수 텍스트 추출
↓
rules.py
- 문장 분리
- 규칙 기반 Feature 추출
(evidence, vagueness, coverage, temporal, language-risk 등) - 가중치를 적용하여 0–100 위험도(risk) 산출
- High / Medium / Low 등급 분류
↓
llm.py
- 위험도 상위 K개 문장 선별
- 광고/보고서 모드에 맞춰 LLM에게 JSON 형식으로 분석 요청
- 필요한 증거/모호성/문제점 등을 구조화해 반환
↓
report.py
- 규칙 기반 + LLM 분석 결과 종합
- PDF/CSV 리포트 생성(FPDF)
↓
app.py (Streamlit UI)
- 텍스트 입력 → 분석 → 시각화(표/그래프/SHAP) → 리포트 다운로드까지
전체 워크플로우를 사용자 인터페이스로 제공
- parsers.py — URL 본문 텍스트 크롤링
- rules.py — 규칙 기반 점수 계산 (ad_rules.json / report_rules.json 사용)
- llm.py — OpenAI API(gpt-계열) 기반 심층 분석
- report.py — PDF/CSV 리포트 생성
- app.py — Streamlit UI 및 전체 프로세스 오케스트레이션
VeriAI의 규칙 기반 점수 계산은 config 폴더의 JSON 파일로 분리되어 있습니다.
이 파일들을 수정하면 Python 코드를 건드리지 않고도 규칙을 쉽게 확장·조정할 수 있습니다.
-
config/ad_rules.json— 환경 광고 / ESG 마케팅 문장용 규칙 세트- 공정거래위원회의 환경 관련 표시·광고에 관한 심사지침에서 제시하는 표현 유형과 예시 문구를 참고해, 모호한 친환경 표현, 과장·절대 표현, 근거 없는 환경 주장, 탄소중립/상쇄 관련 용어 등을 렉시콘(lexicon)으로 정리했습니다.
- 주요 구성
weights: evidence, vagueness, coverage, temporal, language, offset_risk 등의 가중치thresholds: High / Medium / Low 등급을 나누는 기준값regex: 숫자+단위, 연도, 범위(scope), URL, 금액, 감축/증가 %, 시점 표현 등의 패턴lexicons: vague / overclaim / future / offset_terms / greenwashing_keywords 등 핵심 단어·구 목록
-
config/report_rules.json— 일반 보고서 / 연구·비즈니스 문장용 규칙 세트- 연구 방법, 표본, 통계 정보, 인용·참고문헌, 표·그림 언급 등 증거성 Evidence 관련 요소에 집중해 설계했습니다.
- 구조는
ad_rules.json과 동일하지만, 논문·보고서 도메인에 맞는 정규식(regex)과 렉시콘을 사용합니다.- 예: 인용 형식([1], (Kim, 2024)), DOI, 표·그림(Figure/Table), 통계 지표(p-value, CI, n=…) 등 탐지
이 규칙 설정 파일들을 기반으로 rules.py가 문장별 Feature를 추출하고,
가중치를 적용해 0–100 사이의 최종 위험도 점수를 계산합니다.
- Python 3.10+
- Virtual Environment (venv)
- Streamlit — 웹 UI 및 결과 시각화
- Plotly / Matplotlib — 그래프 및 위험도 분포 시각화
- SHAP — 규칙 기반 점수 기여도 시각화
- OpenAI API (GPT 계열) — 고위험 문장 심층 분석
- RapidFuzz — 문장 비교 및 유사도 기반 검사
- Trafilatura — URL 본문 크롤링 및 추출
- FPDF / Pillow — PDF 리포트 생성 및 이미지 처리
- pandas / numpy — 점수 계산 및 테이블 처리
- json — 규칙(ad_rules/report_rules) 로딩 및 설정 처리
- python-dotenv — 환경 변수 관리 (.env)
- config/ — 규칙 기반 스코어링 JSON 파일 저장
- Git / GitHub
git clone https://github.com/leenamho2000/VeriAI.git
cd VerAIpython -m venv .venv
# Windows
.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activatepip install -r requirements.txtrequirements.txt에는 대략 다음과 같은 패키지들이 포함됩니다:
- streamlit, openai, python-dotenv
- pandas, numpy, plotly, matplotlib, shap
- rapidfuzz, trafilatura, fpdf, pillow 등
루트 디렉토리에 .env 파일을 만들고 다음과 같이 설정합니다.
OPENAI_API_KEY=your_openai_api_key_here
# 선택 옵션
OPENAI_MODEL=gpt-4o-mini
OPENAI_MAX_OUT_TOKENS=1200OPENAI_API_KEY는 필수입니다.- 필요하다면 모델링/토큰 수를 바꿀 수 있습니다.
streamlit run app.py기본적으로 브라우저에서 다음 주소로 접속할 수 있습니다.
1. 분석 모드 선택
사이드바에서 환경 광고 (Ad)또는 일반 보고서 (Report)를 선택합니다.
2. 텍스트/URL 입력
- 텍스트 박스에 분석할 내용을 붙여넣거나
- URL을 입력하고
URL 본문 불러오기버튼을 누릅니다.
3. 🔎 분석하기 클릭
- 문장이 자동 분할되고, 각 문장에 대한 위험도/등급/점수들이 계산됩니다.
4. 결과 탐색
개요(표)탭: 문장별 점수 테이블 + 검색 기능문장별 탐색탭: 선택한 문장에 대한 규칙 히트, SHAP Waterfall Plot 등 상세히 분석시각화탭: 위험도 분포, 구성요소 기여도 바 차트
5. LLM 후처리 & 리포트
내보내기탭에서 - Top-K 위험 문장을 기준으로 LLM 분석 실행 (광고/보고서 모드에 맞게) - 전체 결과 CSV 다운로드 - PDF 리포트 생성 및 다운로드
각 문장은 아래와 같은 요소로부터 점수를 계산합니다.
- Evidence score 0-16
- 수치 + 단위, 연도, 표준/방법론, 제3자 검증, URL/인증/금액 정보 등
- Vagueness score 0-16
- 모호한 ESG 마케팅 용어, 과장 표현, 미래 시제, 그린워싱 핫 키워드 등
- Coverage / Temporal / Language / Offset
- "전사/전 제품/전 세계" 식의 범위 과장
- 기한·마일스톤 없이 목표만 언급
- 과장·허세 표현, 오프셋 의존 등에 대한 위험도
이 피처들을 가중합해 0-100 사이의 위험도 risk를 만들고, 임계값에 따라 High / Medium / Low 라벨을 부여합니다.
- 환경 광고 모드 Ad
risk_reasons: 모호어, 범위과대, 근거부족, 미래시제·계획부재 등explanation: 왜 그 문장이 그린워싱 위험이 있는지 서술evidence_needed: 필요한 수치/기준연도/범위/외부검증 등suggested_queries: 검증·근거 확보를 위한 검색 쿼리
- 일반 보고서 모드 Report
issues: weasel word, 근거/출처 부재, 표본 정보 부족 등what_to_add.metrics/method/tables_figures/citations: 어떤 지표·방법·표/그림·인용을 추가해야 하는지 구조화된 제안
이 결과는 PDF 리포트에도 함께 포함됩니다.
- URL + PDF + 이미지 OCR 등 입력 채널 확장
- 광고/보고서 외에 새로운 분석 모드 추가
- AI 기반 자동 요약 및 리포트 템플릿 고도화
- 사용자 계정/히스토리 저장 기능
- AWS/GCP 기반 웹 서비스 형태로 배포
- 규칙 세트(ad_rules, report_rules) 지속 업데이트
이 프로젝트는 MIT License 하에 배포됩니다.
자세한 내용은 LICENSE 파일을 참고하세요.
- Maintainer: Namho Lee
- Email: leenamho2000@gmail.com
- Github: https://github.com/leenamho2000


