문서 비교 - 두 텍스트 파일의 차이점 찾는 방법
계약서 개정본, 코드 리뷰, 논문 수정본 등 두 텍스트 파일의 차이점을 효율적으로 찾는 도구와 방법을 설명합니다.
Q.두 텍스트 문서의 차이점을 찾는 가장 쉬운 방법은 무엇인가요?
Windows에서는 WinMerge(무료)가 가장 직관적입니다. 두 파일을 드래그해 열면 변경된 줄이 색으로 표시됩니다. 코딩 환경에서는 터미널에서 `diff file1.txt file2.txt` 명령어로 확인합니다. 온라인 도구로는 Diffchecker.com을 사용할 수 있으며, 구글 닥스에서는 파일 → 버전 기록으로 이전 버전과 현재 버전을 비교할 수 있습니다.
계약서 3차 수정본과 4차 수정본의 차이를 찾아야 한다. 두 파일 모두 20페이지짜리 PDF다. 육안 비교는 오류를 놓치기 쉽고 시간이 많이 걸린다. 도구를 쓰면 수분 내에 정확한 변경점을 파악할 수 있다.
핵심 답변
Windows에서는 WinMerge(무료)가 가장 직관적입니다. 두 파일을 드래그해 열면 변경된 줄이 색으로 표시됩니다. 코딩 환경에서는 터미널에서 diff file1.txt file2.txt 명령어로 확인합니다. 온라인 도구로는 Diffchecker.com을 사용할 수 있으며, 구글 닥스에서는 파일 → 버전 기록으로 이전 버전과 현재 버전을 비교할 수 있습니다.
도구별 비교
| 도구 | 환경 | 장점 | 단점 |
|---|---|---|---|
| WinMerge | Windows | GUI 직관적, 폴더 비교 | Windows 전용 |
| diff (CLI) | Linux/Mac | 빠름, 스크립트 통합 | 출력 읽기 어려움 |
| 구글 닥스 버전 기록 | 웹 | 별도 설치 불필요 | 구글 닥스 문서만 |
| Diffchecker.com | 웹 | 설치 불필요 | 민감 문서 보안 주의 |
| VS Code 비교 기능 | 데스크톱 | 개발자 친화적 | 코드 중심 UI |
Python difflib 프로그래밍 비교
python
import difflib
with open('v3.txt', 'r', encoding='utf-8') as f:
old_text = f.readlines()
with open('v4.txt', 'r', encoding='utf-8') as f:
new_text = f.readlines()
diff = difflib.unified_diff(
old_text, new_text,
fromfile='v3.txt',
tofile='v4.txt',
n=2 # 변경 줄 앞뒤 2줄 컨텍스트 표시
)
print(''.join(diff))
HTML 형식으로 출력하려면 HtmlDiff 클래스를 사용한다. 브라우저에서 색으로 구분된 diff를 볼 수 있다.
계약서 비교 시 주의사항
법적 효력이 있는 문서를 비교할 때:
- PDF를 텍스트로 변환 시 오류 발생 가능. 추출 텍스트 신뢰도 확인 필수
- 숫자·날짜·금액 항목 우선 점검: 숫자 하나 차이가 법적 의미를 바꿈
- 폰트·서식 차이가 내용 비교를 방해할 수 있으므로 순수 텍스트로 변환 후 비교
실무 활용 사례
사례 1: 계약서 개정 이력 관리
매 협상 단계마다 계약서를 별도 파일로 저장하고, Python difflib의 HtmlDiff 클래스로 버전 간 변경 사항을 HTML 리포트로 출력하면 법무팀이 변경 이력을 한눈에 확인할 수 있다. 숫자·금액이 포함된 줄은 별도 색상으로 강조 처리하면 중요 변경을 놓치지 않는다.
사례 2: 번역 품질 검수
원문과 번역문을 문장 단위로 분리한 후 각 번역 문장의 길이를 원문과 비교한다. 원문 대비 번역문이 50% 이상 길거나 짧은 경우를 diff로 표시하면 번역 누락·삽입 가능성이 있는 구간을 빠르게 찾을 수 있다.
사례 3: 코드 리뷰 보조 도구
개발팀이 비개발자 스테이크홀더에게 소프트웨어 변경 사항을 설명할 때, 코드 diff 대신 기능 설명 문서의 diff를 HTML 형식으로 공유하면 기술 배경 없이도 변경 내용을 파악할 수 있다.
마무리
이 글에서 정리한 기준을 실제 작업에 적용할 때는 [텍스터브 글자수 세기](/tools/char-counter/) 도구로 분량을 직접 확인하면서 진행하면 더 정확하게 맞출 수 있다.