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

วิธีการทำงานของการบีบอัดภายใน 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, มีการวิวัฒนาการสองอย่างที่เกิดขึ้นพร้อมกัน:
- Office Open XML (OOXML / ISO/IEC 29500): Microsoft แนะนำรูปแบบที่ใช้ XML ที่ลงท้ายด้วย
x(DOCX, XLSX, PPTX) โดยภายในไฟล์เหล่านี้จะปฏิบัติตาม Open Packaging Conventions (OPC). - 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>).
- หากป้ายข้อความเช่น “United States” หรือ “In Progress” ปรากฏ 50,000 ครั้งในสเปรดชีต การจัดเก็บ
- ทำไม 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:- ต้องเป็นไฟล์แรกสุดในไฟล์ ZIP.
- ต้องมีสตริง
application/epub+zipอย่างเดียวเท่านั้น. - ห้ามบีบอัด (วิธีการบีบอัด ZIP
0/ “Stored”). - ต้องไม่มีข้อมูลฟิลด์เพิ่มเติม เพื่อให้สตริง MIME เริ่มต้นที่ไบต์ที่ 38 ของไฟล์จริงเสมอ
- การบีบอัดข้อความ: ไฟล์ที่เหลือทั้งหมด (
.xhtml,.css,.opf) จะถูกบีบอัดด้วยมาตรฐาน DEFLATE (วิธีการ ZIP8) ทำให้นวนิยายเต็มเล่มสามารถลดขนาดลงเหลือเพียงไม่กี่ร้อยกิโลไบต์
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หรือบทต่าง ๆ แยกจากไดเรกทอรีtext/ของ EPUB ได้ - การลดขนาดไฟล์ Office ขนาดใหญ่:
เนื่องจากการบีบอัด 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 ไม่ทำให้ไฟล์เล็กลงอย่างเห็นได้ชัด? เนื่องจากไฟล์นี้เป็นไฟล์ ZIP ที่บีบอัดภายในแล้วซึ่งประกอบด้วย XML ที่เข้ารหัสแบบ DEFLATE และภาพที่บีบอัดไว้แล้ว ทำให้เหลือความซ้ำซ้อนน้อยมากสำหรับเครื่องมือภายนอกที่จะลบออก.
ทำไมสเปค EPUB จึงต้องการให้ไฟล์ mimetype ไม่ถูกบีบอัด? มันทำให้ซอฟต์แวร์อ่านอีบุ๊คสามารถตรวจสอบว่าไฟล์เป็น EPUB ของแท้ได้โดยการตรวจสอบสตริง MIME ที่ออฟเซ็ตไบต์คงที่โดยไม่ต้องเริ่มต้นเครื่องยนต์การบีบอัดข้อมูล.
การเปลี่ยนรูปแบบเซลล์ใน Excel ทำให้ขนาดไฟล์ XLSX ที่บีบอัดเพิ่มขึ้นหรือไม่? ใช่; การกำหนดรูปแบบที่กำหนดเองอย่างกว้างขวางทำให้รูปแบบที่ซ้ำกันทั่วเซลล์แตกหัก สร้างคำนิยาม XML ที่ยาวขึ้นซึ่งลดประสิทธิภาพการบีบอัดของ DEFLATE.
สามารถดึงภาพต้นฉบับความละเอียดสูงจากไฟล์ Word หรือ PowerPoint โดยไม่สูญเสียคุณภาพได้หรือไม่? ใช่; เปลี่ยนชื่อไฟล์เป็น .zip, เปิดโฟลเดอร์ word/media หรือ ppt/media, แล้วคุณจะพบภาพต้นฉบับที่ไม่ได้บีบอัดตรงตามที่ถูกแทรกเข้ามา.