계약서·법률 문서 특화 OCR — 조항 추출, 당사자 식별, 구조화
Legal-BERT + LayoutLMv3 + CUAD 데이터셋으로 계약서를 구조화된 데이터로 변환
계약서 처리 파이프라인
계약서 처리는 2단계다:
1단계: OCR — 계약서 이미지/PDF → 텍스트
2단계: NLU — 텍스트 → 구조화된 데이터 (조항, 당사자, 기한, 금액)
1단계는 일반 OCR(PaddleOCR, Marker 등)로 충분하다. 핵심은 2단계 — 법률 텍스트를 이해하는 것.
Legal-BERT — 법률 언어 전용 BERT
일반 BERT는 Wikipedia/인터넷으로 훈련됐다. Legal-BERT는 12GB의 법률 텍스트(법률, 판례, 계약서)로 추가 훈련됐다.
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("nlpaueb/legal-bert-base-uncased")
model = AutoModel.from_pretrained("nlpaueb/legal-bert-base-uncased")
# 법률 용어("indemnification", "force majeure")를 일반 BERT보다 잘 이해
이걸 CUAD 데이터셋으로 파인튜닝하면 계약서 조항을 분류할 수 있다.
CUAD — 계약서 이해 데이터셋
500개 이상의 실제 계약서에 13,000개의 전문가 어노테이션. 41개 라벨 카테고리:
해지 조항 (Termination)
책임 한도 (Liability Cap)
IP 소유권 (IP Ownership)
경쟁 금지 (Non-Compete)
갱신 조건 (Renewal Term)
등등 41개
from datasets import load_dataset
dataset = load_dataset("theatticusproject/cuad-qa")
print(dataset["train"][0])
# → {'question': 'What is the termination clause?',
# 'context': '계약서 텍스트...',
# 'answers': {'text': ['Either party may terminate...'], 'answer_start': [1234]}}
Legal-BERT + CUAD = 계약서에서 "해지 조항이 뭐야?" "책임 한도가 얼마야?" 같은 질문에 답하는 모델.
LayoutLMv3 — 문서 레이아웃까지 이해
Legal-BERT는 텍스트만 본다. LayoutLMv3는 텍스트 + 레이아웃(위치) + 이미지를 함께 본다.
Legal-BERT: "이 텍스트가 해지 조항인가?" (텍스트만)
LayoutLMv3: "이 위치의 이 텍스트가 해지 조항인가?" (텍스트+위치+이미지)
계약서에서 서명란, 날짜란, 조항 번호 등은 위치가 중요하다. LayoutLMv3는 이걸 이해한다.
OpenContracts — 법률 문서 분석 플랫폼
Latham & Watkins 변호사가 만든 오픈소스 플랫폼:
계약서 업로드 → 자동 분석
어노테이션 인터페이스 (전문가 라벨링)
시맨틱 검색 (pgvector)
LlamaIndex 연동
git clone https://github.com/Open-Source-Legal/OpenContracts
docker-compose up
Azure Document Intelligence — 상용 대안
Microsoft의 클라우드 API. 계약서 전용 모델이 있다:
당사자 (Parties)
관할권 (Jurisdictions)
계약 ID, 제목
품목 (Line Items)
from azure.ai.documentintelligence import DocumentIntelligenceClient
client = DocumentIntelligenceClient(endpoint, credential)
result = client.begin_analyze_document("prebuilt-contract", document)
for contract in result.documents:
print(contract.fields["Parties"].value)
$10/1,000 페이지. 영어만 지원.
실전 파이프라인 예시
계약서 PDF
↓ Marker/PaddleOCR (텍스트 추출)
텍스트
↓ Legal-BERT + CUAD 파인튜닝 모델 (조항 분류)
구조화 데이터:
- 당사자: A사, B사
- 계약 기간: 2026.01.01 ~ 2028.12.31
- 해지 조건: 30일 전 서면 통지
- 책임 한도: 계약 금액의 200%
- 준거법: 대한민국 법
핵심 개념
OCR로 계약서 텍스트 추출 — Marker/PaddleOCR 등 일반 도구로 충분
Legal-BERT로 법률 언어 이해 — 12GB 법률 텍스트로 사전 훈련된 BERT
CUAD 데이터셋으로 파인튜닝 — 41개 조항 카테고리 분류 학습
LayoutLMv3로 문서 구조 이해 — 텍스트+위치+이미지를 함께 처리