마지막 업데이트: 2026년 9월 10일

EPUB, DOCX, XLSX, 그리고 PPTX 내부에서 압축이 작동하는 방식
.docx, .xlsx, .pptx 또는 .epub 파일의 이름을 .zip으로 바꾸고 두 번 클릭하면 놀라운 일이 발생합니다: 오류가 발생하지 않습니다. 운영 체제가 이를 하위 디렉터리, XML 구성 파일, 스타일 시트, 글꼴 및 삽입된 이미지가 들어 있는 폴더로 엽니다.
현대 문서 아키텍처는 수십 년 전부터 거대한 바이너리 블롭을 포기했습니다. 그 대신, 업계 표준—특히 Microsoft Office용 **Open Packaging Conventions (OPC)**와 EPUB용 Open Container Format (OCF)—이 놀라울 정도로 간결한 기반을 채택했습니다: 겸손한 ZIP 아카이브.
이러한 형식 내부에서 압축이 어떻게 작동하는지를 이해하면 현대 문서가 왜 이렇게 탄력적이고 가볍으며 확장성이 뛰어난지, 그리고 왜 일부 파일은 90%까지 압축되는 반면 다른 파일은 거의 줄어들지 않는지를 알 수 있습니다.
1. 컨테이너 아키텍처: 위장된 ZIP 패키지
압축 알고리즘 자체를 이해하기 전에, 현대 문서 형식이 독립적인 원시 파일이 아니라 패키지 형태로 구조화된 이유를 이해하는 것이 도움이 됩니다.
2. 레거시 바이너리 포맷의 문제
1990년대와 2000년대 초반 내내, Microsoft Office는 독점적인 바이너리 형식(.doc, .xls, .ppt)을 사용했습니다. 이러한 파일은 본질적으로 복합 파일 바이너리 포맷(CFBF)을 기반으로 구조화된 메모리 덤프에 불과했습니다. 이들은 악명 높게 취약했습니다:
- 하나의 비트 오류만으로도 전체 파일 구조가 손상될 수 있습니다.
- 이미지를 삽입하면 파일 크기가 예측할 수 없이 급증했습니다.
- 구문 분석에는 복잡한 바이너리 사양을 역공학해야 했습니다.
- 크로스 플랫폼 상호 운용성은 악몽과도 같았습니다.
3. 오픈 및 모듈식 컨테이너로의 전환
2000년대 중반에 두 개의 병행 진화가 일어났습니다:
- Office Open XML (OOXML / ISO/IEC 29500): Microsoft는
x로 끝나는 XML 기반 형식(DOCX, XLSX, PPTX)을 도입했습니다. 내부적으로 이 파일들은 Open Packaging Conventions (OPC) 를 따릅니다. - EPUB (IDPF / W3C): 디지털 출판은 독점 리더 형식에서 벗어나 표준 웹 기술(HTML, CSS, SVG)로 전환했으며, 이는 EPUB Open Container Format (OCF) 안에 묶여 있습니다.
두 아키텍처 모두 표준 PKZIP 2.0 / ZIP 사양에 의존합니다. 파일 확장자는 단순히 예상 스키마, 기본 뷰어 애플리케이션 및 MIME 타입 선언을 결정합니다.
Sample DOCX File (Unzipped):
├── [Content_Types].xml <-- Registry of MIME types for parts
├── _rels/ <-- Package-level relationships
│ └── .rels
├── docProps/ <-- Core and extended metadata
│ ├── app.xml
│ └── core.xml
└── word/ <-- Main content payload
├── document.xml <-- Text, paragraphs, and tags
├── styles.xml <-- Typography and presets
├── numbering.xml <-- Lists and counters
├── media/ <-- Embedded images (PNG, JPG)
└── _rels/
└── document.xml.rels <-- Internal hyperlinks & resource pointers
4. 엔진 내부: DEFLATE 알고리즘
소프트웨어 애플리케이션이 DOCX 또는 EPUB 파일을 저장할 때, 단순히 파일을 압축되지 않은 아카이브에 저장하는 것이 아니라, 내부 자산을 DEFLATE(RFC 1951에 명시)로 압축합니다.
DEFLATE는 두 가지 기본 컴퓨터 과학 알고리즘을 결합한 2단계 무손실 압축 시스템입니다:
Step 1: LZ77 (Lempel-Ziv 1977) — 슬라이딩 윈도우 중복 제거
XML과 HTML은 매우 장황합니다. 표준 document.xml 또는 chapter1.xhtml 파일에서 태그가 얼마나 자주 나타나는지 생각해 보세요:
<w:p><w:r><w:rPr><w:sz w:val=\"24\"/></w:rPr><w:t>가 Word에서 수천 번 반복됩니다.row r=\"1\" spans=\"1:15\"><c r=\"A1\" t=\"s\"><v>은(는) Excel에서 수만 개의 셀에 걸쳐 반복됩니다.<p class=\"calibre1\"><span class=\"body-text\">은(는) EPUB 책 챕터 전반에 걸쳐 반복됩니다.
LZ77은 슬라이딩 사전 윈도우(보통 32KB)를 사용하여 데이터 스트림을 스캔합니다. 최근에 본 문자열을 만나면, 중복된 텍스트를 작은 역방향 포인터로 대체합니다:
(distance, length)— 예: "142바이트 뒤로 이동하고 28바이트 복사".
반복적인 마크업을 계속 저장하는 대신, LZ77은 수천 개의 반복 XML 태그를 압축된 좌표 참조로 축소합니다.
Step 2: Huffman Coding — 가변 길이 빈도 인코딩
LZ77이 중복 시퀀스를 길이-거리 토큰으로 교체한 후, Huffman 코딩은 스트림 내 모든 기호의 빈도를 분석합니다:
- 자주 나타나는 기호(예: 일반 문자
e,t, 공백 또는 일반 거리 표시)는 짧은 이진 비트 코드(예: 2~4비트)로 할당됩니다. - 드물게 사용되는 기호는 더 긴 이진 비트 코드(예: 12~16비트)를 받습니다.
결과는 가변 길이 비트 코드 스트림으로, 일반 텍스트 XML을 **75%에서 88%**까지 압축합니다.
3. 포맷별 분석: 각 포맷이 압축을 처리하는 방식
DOCX, XLSX, PPTX 및 EPUB은 모두 동일한 ZIP 컨테이너를 사용하지만, 내부 데이터 특성은 크게 다릅니다.
A. DOCX: 텍스트와 스타일링의 균형 잡기
- 내용: 일반 XML (
word/document.xml), 글꼴 테이블, 스타일, 관계 카탈로그, 그리고word/media/폴더. - 압축 성능:
- 원시 텍스트와 XML 마크업은 엄청난 압축 비율을 보이며 (종종 5 MB의 원시 XML이 500 KB로 감소합니다).
- 하지만 최신 문서에는 스크린샷, 일러스트 및 사진이 자주 포함됩니다. JPEG 및 PNG 파일은 이미 압축되어 있기 때문에, DEFLATE는 더 이상 압축할 수 없습니다. 실제로 이미 압축된 이미지에 DEFLATE를 적용하면 사실상 0%의 절감 효과가 나오며 (압축 헤더 때문에 크기가 약간 증가할 수도 있습니다).
- 그 결과, 이미지가 없는 DOCX 파일은 매우 작으며, 이미지가 많은 보고서는 포함된 이미지 파일 크기와 거의 동일한 크기를 가집니다.
B. XLSX: 대용량 숫자 데이터 및 공유 문자열
스프레드시트는 고유한 도전을 제시합니다: 하나의 시트에 수십만 행이 포함될 수 있어, 이를 스마트하게 처리하지 않으면 천문학적인 XML 파일 크기가 발생합니다.
- 공유 문자열 전략 (
xl/sharedStrings.xml):- 스프레드시트에서 “United States” 또는 “In Progress"와 같은 텍스트 레이블이 50,000번 나타난다면,
<c t=\"inlineStr\"><is><t>United States</t></is></c>를 50,000셀에 저장하면 압축되지 않은 XML이 기가바이트 단위로 부풀어 오릅니다. - Excel은 압축 전에 텍스트를 중복 제거하여 고유 문자열을 공유 문자열 테이블에 한 번씩 저장하고 숫자 인덱스(예:
<v>0</v>,<v>1</v>)로 참조합니다.
- 스프레드시트에서 “United States” 또는 “In Progress"와 같은 텍스트 레이블이 50,000번 나타난다면,
- XLSX가 크게 압축되는 이유:
- 숫자 행 레코드(
sheet1.xml)는 반복적이고 예측 가능한 구문을 따릅니다. - DEFLATE는 표형 XML에서 반복 패턴을 쉽게 감지합니다. 120 MB 원시
sheet1.xml파일이 XLSX 압축 파일 안에서 6 MB 이하로 줄어드는 경우가 흔합니다.
- 숫자 행 레코드(
C. PPTX: 미디어가 풍부한 슬라이드 데크
프레젠테이션은 문서 및 스프레드시트와 근본적으로 다릅니다:
- 이미지 딜레마: PPTX 파일은 일반적으로 벡터 도형, 배경 그래픽, 비디오 클립 및 고해상도 슬라이드가 주를 이룹니다.
- 압축 프로필:
ppt/slides/slide1.xml부터slideN.xml까지는 효율적으로 압축되지만, 미디어 페이로드(ppt/media/)는 전체 아카이브 용량의 85%에서 95%를 차지합니다. - 왜 PPTX를 다시 압축해도 변화가 없는가: 이미 저장된 PPTX 파일을 7-Zip이나 WinRAR로 압축하려고 하면 거의 크기 감소가 없음을 알게 됩니다. 내부가 이미 사전 압축된 JPEG와 MP4를 포함한 DEFLATE 압축 ZIP 아카이브이기 때문에 엔트로피가 이미 거의 최대에 가깝습니다.
D. EPUB: 필수 비압축 헤더를 포함한 웹 기술
EPUB 파일은 본질적으로 XHTML 챕터, CSS 스타일시트, TTF/WOFF 폰트 및 메타데이터를 포함하는 반응형 패키지형 마이크로 웹사이트입니다. 그러나 EPUB은 Microsoft Office 파일과 구별되는 하나의 엄격한 패키징 규칙을 가지고 있습니다:
EPUB Internal Structure:
├── mimetype <-- MUST be uncompressed (Stored) & at byte offset 38
├── META-INF/
│ └── container.xml <-- Tells reader where the OPF manifest lives
└── OEBPS/ (or EPUB/)
├── content.opf <-- Manifest of all book assets
├── toc.ncx / nav.xhtml <-- Table of contents navigation
├── styles/style.css <-- CSS formatting
├── images/ <-- Book cover & illustrations
└── text/ <-- chapter1.xhtml, chapter2.xhtml
- 마법의
mimetype파일:- 전자책 리더는 전체 아카이브를 추출하거나 압축 해제 파이프라인을 실행하지 않고도 EPUB을 즉시 식별해야 합니다.
- Open Container Format(OCF)은
mimetype파일이 다음을 만족하도록 규정합니다:- ZIP 아카이브에서 가장 첫 번째 파일이어야 합니다.
application/epub+zip문자열만 정확히 포함해야 합니다.- 압축해서는 안 됩니다 (ZIP 압축 방식
0/ “Stored”). - 추가 필드 데이터가 없어야 하며, MIME 문자열이 물리 파일의 38바이트 지점에서 항상 시작하도록 보장합니다.
- 텍스트 압축: 나머지 모든 파일(
.xhtml,.css,.opf)은 표준 DEFLATE(ZIP 방식8)를 사용해 압축되며, 전체 길이 소설을 몇 백 킬로바이트 수준으로 축소할 수 있습니다.
4. 포맷별 압축 비교
| 형식 | 핵심 페이로드 | 주요 중복 소스 | 일반적인 압축 비율 (텍스트/마크업) | 미디어 처리 |
|---|---|---|---|---|
| DOCX | WordprocessingML (document.xml) | 반복적인 XML 단락/실행 태그 | 75% – 85% | word/media/에 저장됨 (대부분 사전 압축됨) |
| XLSX | SpreadsheetML (sheet*.xml) | 반복적인 셀/행 태그; 공유 문자열 | 80% – 92% | 희박함; xl/media/에 이미지/차트 |
| PPTX | PresentationML (slide*.xml) | 슬라이드 레이아웃 메타데이터, 도형 좌표 | 70% – 80% | 무거운 ppt/media/ 페이로드가 전체 절감을 제한합니다 |
| EPUB | XHTML, CSS, OPF, NCX | HTML 태그, 반복적인 CSS 선택자 | 65% – 80% | mimetype 압축되지 않음; 미디어는 하위 폴더에 저장 |
5. 실용적인 요점: 문서를 최적화하는 방법
이제 내부 패키징 방식에 대해 알게 되었으므로, 압축 메커니즘을 활용하여 실제 문제를 해결할 수 있습니다:
- 손상된 문서 복구:
문서가 열리지 않을 경우, 확장자를
.zip으로 변경하면 내용을 추출하고document.xml에서 원시 텍스트를 복구하거나 EPUB의text/디렉터리에서 개별 챕터를 복구할 수 있습니다. - 거대한 오피스 파일 압축:
XML 압축은 이미 최적화되어 있기 때문에, 대용량 파일은 거의 항상
media/에 있는 최적화되지 않은 이미지 때문에 발생합니다. 서드파티 PDF 또는 DOCX 압축기를 사용하는 대신, ZIP 컨테이너를 열어 이미지를 추출하고 이미지 최적화 도구(예: WebP, TinyPNG, MozJPEG)를 통해 최적화한 뒤, 아카이브 내부에 다시 교체하십시오. - 문서 생성 자동화: 개발자는 무거운 오피스 제품군 없이도 보고서를 만들 수 있습니다. 원시 XML 템플릿을 생성하고 표준 zlib/ZIP 라이브러리를 사용해 번들링한 뒤, 프로그래밍 방식으로 몇 밀리초 안에 유효한 DOCX 또는 XLSX 파일을 출력할 수 있습니다.
6. 자주 묻는 질문 (FAQ)
DOCX 또는 EPUB 파일을 파일 확장자를 바꾸는 것만으로 ZIP 파일로 변환할 수 있나요? 예; 확장자를 .zip으로 바꾸면 7-Zip, macOS Archive Utility, Windows Explorer와 같은 표준 압축 도구를 사용해 내부 파일을 직접 열고 검사할 수 있습니다.
DOCX 또는 PPTX 파일을 7-Zip으로 압축해도 눈에 띄게 작아지지 않는 이유는 무엇인가요? 파일 자체가 이미 DEFLATE 인코딩된 XML과 사전 압축된 이미지를 포함한 내부 압축 ZIP 아카이브이므로, 외부 도구가 제거할 중복성이 거의 없습니다.
왜 EPUB 사양에서는 mimetype 파일을 압축되지 않게 해야 하나요? 이는 전자책 리더 소프트웨어가 압축 해제 엔진을 초기화하지 않고도 고정된 바이트 오프셋에서 MIME 문자열을 확인하여 파일이 정품 EPUB인지 검증할 수 있게 합니다.
Excel에서 셀 서식을 변경하면 압축된 XLSX 파일 크기가 증가합니까? 예; 광범위한 사용자 지정 서식은 셀 간의 균일한 패턴 반복을 깨뜨려 더 긴 XML 정의를 만들고, 이는 DEFLATE 압축 효율을 감소시킵니다.
Word 또는 PowerPoint 파일에서 품질 손실 없이 고해상도 원본 이미지를 추출할 수 있나요? 예; 파일명을 .zip으로 바꾸고 word/media 또는 ppt/media 폴더를 열면 삽입된 그대로의 원본, 압축되지 않은 이미지들을 찾을 수 있습니다.