อัปเดตล่าสุด: 10 กันยายน, 2026

How Compression Works Inside EPUB, DOCX, XLSX, & PPTX: The Hidden ZIP Architecture

วิธีการทำงานของการบีบอัดภายใน EPUB, DOCX, XLSX, และ PPTX

หากคุณเปลี่ยนชื่อไฟล์ .docx, .xlsx, .pptx หรือ .epub เป็น .zip แล้วดับเบิลคลิก จะเกิดสิ่งที่น่าประหลาดใจ: ระบบไม่แสดงข้อผิดพลาด ระบบปฏิบัติการของคุณจะเปิดไฟล์นั้นเป็นโฟลเดอร์ที่บรรจุไดเรกทอรีย่อย, ไฟล์กำหนดค่า XML, แผ่นสไตล์, ฟอนต์, และรูปภาพที่ฝังอยู่

สถาปัตยกรรมเอกสารสมัยใหม่ได้ละทิ้งบล็อบไบนารีแบบโมโนลิธิกมานานหลายทศวรรษแล้ว แทนที่นั้นมาตรฐานอุตสาหกรรม—โดยเฉพาะ Open Packaging Conventions (OPC) สำหรับ Microsoft Office และ Open Container Format (OCF) สำหรับ EPUB—ได้นำพื้นฐานที่แสนเรียบง่ายและสง่างาม: ZIP archive.

การทำความเข้าใจว่าการบีบอัดทำงานอย่างไรภายในรูปแบบเหล่านี้เปิดเผยเหตุผลว่าทำไมเอกสารสมัยใหม่จึงทนทาน เบา และขยายได้ง่าย—และทำไมไฟล์บางไฟล์ถึงบีบอัดได้ถึง 90% ในขณะที่ไฟล์อื่น ๆ ลดขนาดเพียงเล็กน้อยเท่านั้น

1. สถาปัตยกรรมคอนเทนเนอร์: แพคเกจ ZIP ปกปิด

ก่อนที่จะเข้าใจอัลกอริทึมการบีบอัดเอง การทำความเข้าใจว่าทำไมรูปแบบเอกสารสมัยใหม่จึงถูกจัดโครงสร้างเป็นแพ็กเกจแทนไฟล์ดิบแบบอิสระเป็นประโยชน์

ปัญหากับรูปแบบไบนารีแบบดั้งเดิม

ตลอดช่วงทศวรรษ 1990 และต้นทศวรรษ 2000 Microsoft Office ใช้รูปแบบไบนารีที่เป็นกรรมสิทธิ์ (.doc, .xls, .ppt). ไฟล์เหล่านี้โดยพื้นฐานเป็นการดัมพ์หน่วยความจำที่จัดโครงสร้างรอบ ๆ Compound File Binary Format (CFBF). พวกมันมีความเปราะบางอย่างเป็นที่รู้จัก:

  • การพลิกบิตเดียวอาจทำให้โครงสร้างไฟล์ทั้งหมดเสียหาย
  • การฝังรูปภาพทำให้ขนาดไฟล์พุ่งขึ้นอย่างไม่คาดคิด
  • การพาร์สต้องอาศัยการวิศวกรรมย้อนกลับของสเปคไบนารีที่หนาแน่น
  • การทำงานร่วมข้ามแพลตฟอร์มเป็นเรื่องราวสยองขวัญ

การเปลี่ยนแปลงไปสู่คอนเทนเนอร์แบบเปิดและโมดูลาร์

ในช่วงกลางทศวรรษ 2000, มีการวิวัฒนาการสองอย่างที่เกิดขึ้นพร้อมกัน:

  1. Office Open XML (OOXML / ISO/IEC 29500): Microsoft แนะนำรูปแบบที่ใช้ XML ที่ลงท้ายด้วย x (DOCX, XLSX, PPTX) โดยภายในไฟล์เหล่านี้จะปฏิบัติตาม Open Packaging Conventions (OPC).
  2. EPUB (IDPF / W3C): การเผยแพร่ดิจิทัลได้ย้ายออกจากรูปแบบผู้อ่านที่เป็นกรรมสิทธิ์ไปสู่เทคโนโลยีเว็บมาตรฐาน (HTML, CSS, SVG) ที่บรรจุอยู่ใน EPUB Open Container Format (OCF).

สถาปัตยกรรมทั้งสองอาศัยมาตรฐาน PKZIP 2.0 / ZIP specification. ส่วนขยายไฟล์เพียงบ่งบอกสกีมาที่คาดหวัง, แอปพลิเคชันดูเริ่มต้น, และการประกาศ mime-type.

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

2. เครื่องยนต์ภายใน: อัลกอริทึม DEFLATE

เมื่อแอปพลิเคชันซอฟต์แวร์บันทึกไฟล์ DOCX หรือ EPUB, มันไม่ได้เพียงแค่เก็บไฟล์ลงในอาร์ไคฟ์ที่ไม่ได้บีบอัด แต่จะบีบอัดทรัพยากรภายในโดยใช้ DEFLATE (กำหนดใน RFC 1951).

DEFLATE เป็นระบบการบีบอัดแบบไม่มีการสูญเสียข้อมูลสองระดับที่รวมอัลกอริทึมพื้นฐานสองอย่างของวิทยาการคอมพิวเตอร์:

ขั้นตอนที่ 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 สแกนสตรีมข้อมูลโดยใช้หน้าต่างพจนานุกรมแบบเลื่อน (โดยทั่วไป 32 KB) เมื่อมันพบสตริงของอักขระที่เคยเห็นเมื่อเร็ว ๆ นี้ มันจะแทนที่ข้อความซ้ำด้วยตัวชี้ย้อนกลับขนาดเล็ก:

  • (distance, length) — เช่น, “ย้อนกลับ 142 ไบต์, คัดลอก 28 ไบต์”.

แทนที่จะเก็บมาร์กอัปที่ยาวเยียดซ้ำ ๆ LZ77 จะบีบอัดแท็ก XML ที่ซ้ำซากหลายพันเป็นการอ้างอิงพิกัดที่กะทัดรัด.

ขั้นตอนที่ 2: การเข้ารหัส Huffman — การเข้ารหัสความถี่แบบความยาวตัวแปร

หลังจาก LZ77 แทนที่ลำดับซ้ำด้วยโทเค็นความยาว-ระยะทาง Huffman coding จะวิเคราะห์ความถี่ของสัญลักษณ์ทุกตัวในสตรีม:

  • สัญลักษณ์ที่ปรากฏบ่อย (เช่น ตัวอักษรทั่วไป e, t, ช่องว่าง, หรือเครื่องหมายระยะทางทั่วไป) จะได้รับรหัสบิตไบนารีสั้น (เช่น 2 ถึง 4 บิต).
  • สัญลักษณ์ที่ใช้ไม่บ่อยจะได้รับรหัสบิตไบนารีที่ยาวกว่า (เช่น 12 ถึง 16 บิต).

ผลลัพธ์คือสตรีมของบิตโค้ดที่มีความยาวแปรผันซึ่งบีบอัด XML แบบข้อความธรรมดาลงได้ 75% ถึง 88%.

3. การวิเคราะห์รูปแบบต่อรูปแบบ: วิธีการที่แต่ละรูปแบบจัดการการบีบอัด

แม้ว่า DOCX, XLSX, PPTX, และ EPUB จะใช้ซิปเอนเวลอปเดียวกัน แต่ลักษณะข้อมูลภายในของพวกมันแตกต่างกันอย่างมาก.

A. DOCX: การสมดุลระหว่างข้อความและการจัดรูปแบบ

  • อะไรบ้างในนั้น: Plain XML (word/document.xml), ตารางฟอนต์, สไตล์, แคตาล็อกความสัมพันธ์, และโฟลเดอร์ word/media/.
  • การทำงานของการบีบอัด:
    • ข้อความดิบและการทำเครื่องหมาย XML จะได้รับอัตราการบีบอัดที่สูงมาก (มักลดจาก XML ดิบขนาด 5 MB เหลือ 500 KB).
    • อย่างไรก็ตาม เอกสารสมัยใหม่มักฝังภาพหน้าจอ, ภาพประกอบ, และรูปถ่ายไว้ด้วย เนื่องจากไฟล์ JPEG และ PNG ถูกบีบอัดแล้ว, DEFLATE ไม่สามารถบีบอัดให้เล็กลงได้อีก ในความเป็นจริง การใช้ DEFLATE กับภาพที่บีบอัดแล้วจะให้การประหยัดเกือบ 0% (และอาจทำให้ขนาดเพิ่มขึ้นเล็กน้อยเนื่องจากส่วนหัวของการบีบอัด).
    • ผลคือไฟล์ DOCX ที่ไม่มีรูปภาพจะมีขนาดเล็กเป็นพิเศษ, ในขณะที่รายงานที่มีรูปภาพจำนวนมากจะมีขนาดเกือบเท่ากับขนาดของไฟล์รูปภาพที่บรรจุอยู่.

B. XLSX: ข้อมูลเชิงตัวเลขปริมาณมากและสตริงที่ใช้ร่วมกัน

สเปรดชีตเป็นความท้าทายที่ไม่เหมือนใคร: แผ่นงานหนึ่งอาจมีแถวหลายแสนแถว, ทำให้ไฟล์ XML มีขนาดมหาศาลหากไม่ได้จัดการอย่างชาญฉลาด.

  • กลยุทธ์ Shared Strings (xl/sharedStrings.xml):
    • หากป้ายข้อความเช่น “United States” หรือ “In Progress” ปรากฏ 50,000 ครั้งในสเปรดชีต การจัดเก็บ <c t="inlineStr"><is><t>United States</t></is></c> ใน 50,000 เซลล์จะทำให้ XML ที่ไม่ได้บีบอัดบวมเป็นกิกะไบต์.
    • Excel ทำการลบข้อความซ้ำก่อนการบีบอัดโดยเก็บสตริงที่ไม่ซ้ำกันแต่ละรายการไว้ครั้งเดียวในตาราง shared string แล้วอ้างอิงด้วยดัชนีตัวเลข (เช่น <v>0</v>, <v>1</v>).
  • ทำไม XLSX ถึงบีบอัดได้อย่างมาก:
    • บันทึกแถวเชิงตัวเลข (sheet1.xml) มีไวยากรณ์ที่ซ้ำซ้อนและคาดเดาได้.
    • DEFLATE ตรวจจับรูปแบบซ้ำใน XML แบบตารางได้อย่างง่ายดาย ปกติไฟล์ sheet1.xml ดิบขนาด 120 MB จะลดลงเหลือน้อยกว่า 6 MB ภายในไฟล์อาร์ไคฟ์ XLSX.

C. PPTX: ชุดสไลด์ที่มีสื่อจำนวนมาก

การนำเสนอมีความแตกต่างอย่างพื้นฐานจากเอกสารและสเปรดชีต:

  • ปัญหาภาพ: ไฟล์ PPTX มักจะเต็มไปด้วยรูปแบบเวกเตอร์, กราฟิกพื้นหลัง, คลิปวิดีโอ, และสไลด์ความละเอียดสูง.
  • โปรไฟล์การบีบอัด: ในขณะที่ ppt/slides/slide1.xml ถึง slideN.xml ถูกบีบอัดอย่างมีประสิทธิภาพ, ส่วนของสื่อ (ppt/media/) มีสัดส่วนประมาณ 85% ถึง 95% ของน้ำหนักทั้งหมดของไฟล์อาร์ไคฟ์.
  • ทำไมการบีบอัดใหม่ไฟล์ PPTX ไม่ได้เปลี่ยนแปลงอะไร: หากคุณพยายามบีบอัดไฟล์ PPTX ที่บันทึกแล้วด้วย 7-Zip หรือ WinRAR, คุณจะสังเกตว่าขนาดลดลงเกือบไม่มีเลย. เนื่องจากภายในเป็นไฟล์ ZIP ที่บีบอัดด้วย DEFLATE อยู่แล้วซึ่งมี JPEG และ MP4 ที่บีบอัดล่วงหน้า, ความเอนโทรปีอยู่ใกล้ระดับสูงสุดแล้ว.

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 เวทมนตร์:
    • เครื่องอ่าน e-reader จำเป็นต้องระบุไฟล์ EPUB ทันทีโดยไม่ต้องแตกไฟล์อาร์ไคฟ์ทั้งหมดหรือดำเนินการไพป์ไลน์การแตกบีบอัด.
    • Open Container Format (OCF) กำหนดให้ไฟล์ mimetype:
      1. ต้องเป็นไฟล์แรกสุดในไฟล์ ZIP.
      2. ต้องมีสตริง application/epub+zip อย่างเดียวเท่านั้น.
      3. ห้ามบีบอัด (วิธีการบีบอัด ZIP 0 / “Stored”).
      4. ต้องไม่มีข้อมูลฟิลด์เพิ่มเติม เพื่อให้สตริง MIME เริ่มต้นที่ไบต์ที่ 38 ของไฟล์จริงเสมอ
  • การบีบอัดข้อความ: ไฟล์ที่เหลือทั้งหมด (.xhtml, .css, .opf) จะถูกบีบอัดด้วยมาตรฐาน DEFLATE (วิธีการ ZIP 8) ทำให้นวนิยายเต็มเล่มสามารถลดขนาดลงเหลือเพียงไม่กี่ร้อยกิโลไบต์

4. การเปรียบเทียบการบีบอัดระหว่างรูปแบบต่าง ๆ

รูปแบบข้อมูลหลักแหล่งสำรองหลักอัตราการบีบอัดทั่วไป (ข้อความ/มาร์กอัป)การจัดการสื่อ
DOCXWordprocessingML (document.xml)แท็ก XML ย่อหน้า/รันที่ซ้ำกัน75% – 85%จัดเก็บใน word/media/ (ส่วนใหญ่ถูกบีบอัดล่วงหน้า)
XLSXSpreadsheetML (sheet*.xml)แท็กเซลล์/แถวที่ซ้ำกัน; สตริงที่ใช้ร่วมกัน80% – 92%กระจัดกระจาย; รูปภาพ/แผนภูมิใน xl/media/
PPTXPresentationML (slide*.xml)เมตาดาต้าเลย์เอาต์สไลด์, พิกัดรูปร่าง70% – 80%ปริมาณข้อมูล ppt/media/ มากทำให้การประหยัดโดยรวมถูกจำกัด
EPUBXHTML, CSS, OPF, NCXแท็ก HTML, ตัวเลือก CSS ที่ซ้ำซ้อน65% – 80%mimetype ไม่ถูกบีบอัด; สื่ออยู่ในโฟลเดอร์ย่อย

5. ข้อสรุปเชิงปฏิบัติ: วิธีเพิ่มประสิทธิภาพเอกสารของคุณ

เพราะคุณตอนนี้รู้วิธีการทำงานของการบรรจุภายในแล้ว คุณสามารถใช้กลไกการบีบอัดเพื่อแก้ปัญหาในโลกจริงได้:

  1. การแก้ไขเอกสารที่เสียหาย: หากเอกสารไม่เปิดได้ การเปลี่ยนส่วนขยายเป็น .zip จะทำให้คุณสามารถแยกเนื้อหาและกู้ข้อความดิบจาก document.xml หรือบทต่าง ๆ แยกจากไดเรกทอรี text/ ของ EPUB ได้
  2. การลดขนาดไฟล์ Office ขนาดใหญ่: เนื่องจากการบีบอัด XML ได้รับการปรับให้เหมาะสมแล้ว ไฟล์ขนาดใหญ่มักเกิดจากภาพที่ไม่ได้ทำให้เหมาะสมใน media/ เป็นส่วนใหญ่ แทนที่จะใช้เครื่องมือบีบอัด PDF หรือ DOCX ของบุคคลที่สาม ให้เปิดคอนเทนเนอร์ ZIP, ดึงภาพออก, รันผ่านตัวปรับขนาดภาพ (เช่น WebP, TinyPNG หรือ MozJPEG) แล้วแทนที่ภาพเหล่านั้นภายในไฟล์อาร์ไคฟ์
  3. การสร้างเอกสารโดยอัตโนมัติ: นักพัฒนาจำเป็นต้องใช้ชุดสำนักงานขนาดใหญ่เพื่อสร้างรายงาน ไม่จำเป็น คุณสามารถสร้างเทมเพลต XML ดิบ, รวมเข้าด้วยกันโดยใช้ไลบรารี zlib/ZIP มาตรฐาน, และสร้างไฟล์ DOCX หรือ XLSX ที่ถูกต้องโดยโปรแกรมในเวลาไม่กี่มิลลิวินาที

6. คำถามที่พบบ่อย (FAQ)

ฉันสามารถแปลง DOCX หรือ EPUB เป็นไฟล์ ZIP เพียงแค่เปลี่ยนชื่อส่วนขยายไฟล์ได้หรือไม่? ใช่; การเปลี่ยนชื่อส่วนขยายเป็น .zip จะทำให้เครื่องมือจัดเก็บมาตรฐานใด ๆ (เช่น 7-Zip, macOS Archive Utility หรือ Windows Explorer) สามารถเปิดและตรวจสอบไฟล์ภายในโดยตรง.

ทำไมการบีบอัด DOCX หรือ PPTX ด้วย 7-Zip ไม่ทำให้ไฟล์เล็กลงอย่างเห็นได้ชัด? เนื่องจากไฟล์นี้เป็นไฟล์ ZIP ที่บีบอัดภายในแล้วซึ่งประกอบด้วย XML ที่เข้ารหัสแบบ DEFLATE และภาพที่บีบอัดไว้แล้ว ทำให้เหลือความซ้ำซ้อนน้อยมากสำหรับเครื่องมือภายนอกที่จะลบออก.

ทำไมสเปค EPUB จึงต้องการให้ไฟล์ mimetype ไม่ถูกบีบอัด? มันทำให้ซอฟต์แวร์อ่านอีบุ๊คสามารถตรวจสอบว่าไฟล์เป็น EPUB ของแท้ได้โดยการตรวจสอบสตริง MIME ที่ออฟเซ็ตไบต์คงที่โดยไม่ต้องเริ่มต้นเครื่องยนต์การบีบอัดข้อมูล.

การเปลี่ยนรูปแบบเซลล์ใน Excel ทำให้ขนาดไฟล์ XLSX ที่บีบอัดเพิ่มขึ้นหรือไม่? ใช่; การกำหนดรูปแบบที่กำหนดเองอย่างกว้างขวางทำให้รูปแบบที่ซ้ำกันทั่วเซลล์แตกหัก สร้างคำนิยาม XML ที่ยาวขึ้นซึ่งลดประสิทธิภาพการบีบอัดของ DEFLATE.

สามารถดึงภาพต้นฉบับความละเอียดสูงจากไฟล์ Word หรือ PowerPoint โดยไม่สูญเสียคุณภาพได้หรือไม่? ใช่; เปลี่ยนชื่อไฟล์เป็น .zip, เปิดโฟลเดอร์ word/media หรือ ppt/media, แล้วคุณจะพบภาพต้นฉบับที่ไม่ได้บีบอัดตรงตามที่ถูกแทรกเข้ามา.

ดูเพิ่มเติม