PDF 압축 후 검증하기 - 품질 확인 및 오류 점검 완벽 가이드

PDF 압축 후 검증하기 - 품질 확인 및 오류 점검 완벽 가이드

PDF를 압축한 후 단순히 사용하면 안 됩니다. 텍스트 손상, 이미지 흐려짐, 파일 오류 등을 사전 검증해야 합니다. 올바른 검증 방법으로 품질을 보증하면서도 비용을 절감할 수 있습니다.

압축 후 검증이 중요한 이유

  • 품질 보증: 압축으로 손실된 부분 확인
  • 파일 무결성: 파일 손상 여부 확인
  • 규정 준수: 법적 문서는 완전성 검증 필수
  • 사용자 신뢰: 배포 전 오류 최소화
  • 성능 최적화: 재압축 여부 판단

검증 항목 12단계 체크리스트

번호항목확인 방법통과 기준
1파일 열림PDF 리더로 열기정상 열림
2파일 크기원본과 압축본 비교예상 감소율 도달
3페이지 수전체 페이지 확인원본과 동일
4텍스트 인식텍스트 선택 및 복사복사 가능
5이미지 품질확대하여 픽셀 확인선명함, 손상 없음
6색상 정확도원본과 비교일치 (색차 <5)
7폰트 렌더링특수 폰트 표시정상 렌더링
8하이퍼링크링크 클릭 테스트모두 작동
9표 및 형식표 정렬 및 경계정확한 정렬
10파일 무결성pdfinfo, qpdf 실행오류 없음
11메타데이터파일 속성 확인손상 없음
12최종 승인모든 항목 검토모두 통과

시각적 검증

1단계: 전체 문서 스캔

  • 첫 페이지: 레이아웃 및 텍스트 확인
  • 중간 페이지: 이미지 품질 확인
  • 마지막 페이지: 형식 손상 여부

2단계: 상세 검증

  • 텍스트: 100% 줌으로 픽셀 단위 선명도
  • 이미지: 색감·명도·콘트라스트 비교
  • 표·그래프: 경계선·정렬 정확도

커맨드라인 검증

파일 정보 확인

# PDF 기본 정보
pdfinfo compressed.pdf

페이지 수 확인

pdfinfo compressed.pdf | grep Pages

파일 손상 여부

gs -sDEVICE=nullpage -dNOPAUSE -dBATCH compressed.pdf 2>&1 | grep -i error

고급 검사

qpdf --check compressed.pdf

텍스트 추출 검증

# 텍스트 추출 가능 여부
pdftotext compressed.pdf - | head -20

전체 텍스트 통계

pdftotext compressed.pdf - | wc -l

특정 단어 검색

pdftotext compressed.pdf - | grep -i "keyword"

이미지 추출 검증

# 이미지 추출
pdftoppm -jpeg compressed.pdf page

추출된 이미지 크기 확인

ls -lh page-*.jpg | head -5

이미지 속성 확인

identify page-1.jpg

Python 자동화: 일괄 검증

from PyPDF2 import PdfReader
import os

def validate_compressed_pdf(original_pdf, compressed_pdf): """압축 전후 PDF 검증"""

print("=== PDF 압축 검증 ===
")

# 원본 정보
orig_reader = PdfReader(original_pdf)
orig_pages = len(orig_reader.pages)
orig_size = os.path.getsize(original_pdf) / (1024 * 1024)

# 압축본 정보
comp_reader = PdfReader(compressed_pdf)
comp_pages = len(comp_reader.pages)
comp_size = os.path.getsize(compressed_pdf) / (1024 * 1024)

# 비교
reduction = (1 - comp_size / orig_size) * 100

print(f"원본:")
print(f"  크기: {orig_size:.1f} MB")
print(f"  페이지: {orig_pages}")
print()

print(f"압축본:")
print(f"  크기: {comp_size:.1f} MB")
print(f"  페이지: {comp_pages}")
print()

print(f"검증 결과:")

# 페이지 수 확인
if orig_pages == comp_pages:
    print(f"  ✓ 페이지 수: 일치 ({orig_pages})")
else:
    print(f"  ✗ 페이지 수: 불일치 ({orig_pages} → {comp_pages})")

# 파일 크기 감소율
print(f"  ✓ 용량 감소: {reduction:.1f}%")

# 첫 페이지 텍스트 추출 시도
try:
    first_page = comp_reader.pages[0]
    text = first_page.extract_text()
    if text and len(text.strip()) > 0:
        print(f"  ✓ 텍스트 추출: 가능 ({len(text)} 글자)")
    else:
        print(f"  ⚠ 텍스트 추출: 불가능 (OCR 필요)")
except Exception as e:
    print(f"  ✗ 텍스트 추출: 오류 ({str(e)})")

# 최종 결론
print()
if orig_pages == comp_pages and reduction > 20:
    print("✓ 검증 통과: 배포 가능")
elif orig_pages == comp_pages:
    print("⚠ 검증 부분 통과: 감소율 낮음 (재압축 고려)")
else:
    print("✗ 검증 실패: 재압축 필요")

사용 예

validate_compressed_pdf('original.pdf', 'compressed.pdf')

검증 보고서 템플릿

항목상태세부사항결과
파일 무결성손상 없음, pdfinfo 정상통과
페이지 수원본 100 = 압축본 100통과
파일 크기원본 100 MB → 압축본 35 MB (65% 감소)통과
텍스트 인식모든 텍스트 추출 가능통과
이미지 품질100% 줌에서 선명함, 손상 없음통과
색상 정확도원본과 일치, 색차 < 5통과
링크·책갈피모두 작동통과
최종 결론✓ 승인모든 항목 통과, 배포 준비 완료배포 가능

색상 정확도 검증

#!/bin/bash
# 색상 정확도 검증 (ImageMagick 필요)

ORIGINAL="original.pdf" COMPRESSED="compressed.pdf"

첫 페이지 이미지로 변환

convert -density 150x150 "$ORIGINAL"[0] original_page.jpg convert -density 150x150 "$COMPRESSED"[0] compressed_page.jpg

색상 비교

compare -metric RMSE original_page.jpg compressed_page.jpg diff.jpg

echo "색상 차이 분석 완료: diff.jpg"

배치 검증 스크립트

#!/bin/bash
# 모든 압축 파일 일괄 검증

COMPRESSED_DIR="./compressed_pdfs" REPORT_FILE="validation_report.txt"

{ echo "=== PDF 압축 검증 보고서 ===" echo "생성일: $(date)" echo ""

total_files=$(ls "$COMPRESSED_DIR"/*.pdf 2>/dev/null | wc -l)
error_count=0

echo "개별 파일 검증:"

for pdf in "$COMPRESSED_DIR"/*.pdf; do
    filename=$(basename "$pdf")
    
    if pdfinfo "$pdf" > /dev/null 2>&1; then
        pages=$(pdfinfo "$pdf" | grep Pages | awk '{print $2}')
        size=$(du -h "$pdf" | cut -f1)
        echo "  ✓ $filename ($pages 페이지, $size)"
    else
        echo "  ✗ $filename (오류)"
        ((error_count++))
    fi
done

echo ""
echo "검증 결과:"
echo "총 파일: $total_files"
echo "오류: $error_count"

if [ $error_count -eq 0 ]; then
    echo "결론: ✓ 모든 파일 검증 완료, 배포 가능"
else
    echo "결론: ✗ $error_count개 파일 오류, 재처리 필요"
fi

} | tee "$REPORT_FILE"

echo "보고서 저장: $REPORT_FILE"

문제 발견 시 대응

문제원인해결책
텍스트 흐려짐해상도 과도 감소더 높은 DPI로 재압축 (/printer)
이미지 뭉침JPEG 품질 과도 감소JPEG 품질 85% 이상으로 재압축
색상 손실색상 공간 변환sRGB 유지하여 재압축
파일 손상압축 오류Ghostscript로 복구 후 재압축

FAQ

  • Q: 검증에 소요 시간? A: 100개 파일 약 10~20분, 자동화 스크립트 사용 권장.
  • Q: 텍스트 손상 여부 확인? A: 모든 페이지에서 선택·복사 시도.
  • Q: 이미지 품질 기준? A: 100% 줌에서 픽셀 보이지 않을 정도.
  • Q: 색상 정확도? A: 색차 ΔE < 5 (눈으로 구분 불가).
  • Q: 법적 문서 기준? A: 모든 12개 항목 통과 필수.

관련 도구

🖊️ 작성자: PDF 품질 관리 및 검증 전문가, 15년 경력

📅 발행일: 2026‑03‑21

다음 이전