<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>DOCX 압축 on File Format Blog</title>
    <link>https://blog.fileformat.com/ko/tag/docx-%EC%95%95%EC%B6%95/</link>
    <description>Recent content in DOCX 압축 on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ko</language>
    <lastBuildDate>Thu, 10 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/ko/tag/docx-%EC%95%95%EC%B6%95/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>EPUB, DOCX, XLSX, 그리고 PPTX 내부에서 압축이 어떻게 작동하나요?</title>
      <link>https://blog.fileformat.com/ko/compression/how-compression-works-inside-epub-docx-xlsx-and-pptx/</link>
      <pubDate>Thu, 10 Sep 2026 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/ko/compression/how-compression-works-inside-epub-docx-xlsx-and-pptx/</guid>
      <description>.docx 또는 .epub 파일의 내부가 궁금했나요? ZIP 패키징과 DEFLATE 압축이 최신 오피스 문서와 전자책을 가볍고 체계적으로 유지하는 방식을 살펴보세요. </description>
      <content:encoded><![CDATA[<p><strong>마지막 업데이트</strong>: 2026년 9월 10일</p>
<figure class="align-center ">
    <img loading="lazy" src="images/how-compression-works-inside-epub-docx-xlsx-and-pptx.png#center"
         alt="How Compression Works Inside EPUB, DOCX, XLSX, &amp; PPTX: The Hidden ZIP Architecture"/> 
</figure>

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