עודכן לאחרונה: 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 הצנוע.

הבנת האופן שבו דחיסה פועלת בתוך פורמטים אלה מגלה מדוע מסמכים מודרניים כל כך עמידים, קלים וניתנים להרחבה—ולמה קבצים מסוימים נדחסים ב‑90% בעוד אחרים כמעט ולא מצטמצמים בכלל.

1. ארכיטקטורת המכולה: חבילות ZIP בתחפושת

לפני שמבינים את אלגוריתם הדחיסה עצמו, מועיל להבין מדוע פורמטים מודרניים של מסמכים מובנים כחבילות ולא כקבצים גולמיים עצמאיים.

הבעיה בפורמטים בינאריים מדור קודם

במהלך שנות ה‑90 ותחילת שנות ה‑2000, Microsoft Office השתמשה בפורמטים בינאריים קנייניים (.doc, .xls, .ppt). קבצים אלה היו למעשה שחרורי זיכרון שמסודרים סביב פורמט הקובץ הבינארי המורכב (CFBF). הם היו ידועים כשברירים במיוחד:

  • הפיכת ביט אחת בלבד יכולה לפגום במבנה הקובץ כולו.
  • הטמעת תמונות גרמה לגודל הקבצים להתנפח באופן בלתי צפוי.
  • פענוח דרש הנדסה הפוכה של מפרטים בינאריים צפופים.
  • הפעילות הבין‑פלטפורמית הייתה סיוט.

המעבר למכולות פתוחות ומודולריות

אמצע שנות ה‑2000, שני התפתחותים מקבילים התרחשו:

  1. Office Open XML (OOXML / ISO/IEC 29500): מיקרוסופט הציגה את הפורמטים מבוססי 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.

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 ק״ב). כאשר הוא נתקל במחרוזת תווים שראה לאחרונה, הוא מחליף את הטקסט המשוכפל עם מצביע אחורי זעיר:

  • (distance, length) — למשל, “חזור 142 בתים, העתק 28 בתים”.

במקום לאחסן סימון מפורט שוב ושוב, LZ77 מצמצם אלפי תגיות XML חוזרות למקורות קואורדינטות קומפקטיים.

שלב 2: קידוד הופמן — קידוד תדירות באורך משתנה

לאחר ש‑LZ77 מחליף רצפים מיותרים בטוקנים של אורך‑מרחק, קידוד האופמן מנתח את התדירות של כל סמל בזרם:

  • סמלים שמופיעים בתדירות גבוהה (כמו תווים נפוצים e, t, רווחים, או סמני מרחק נפוצים) מקבלים קודי ביט בינאריים קצרים (למשל, 2 עד 4 ביטים).
  • סמלים המשמשים לעתים רחוקות מקבלים קודי ביט בינאריים ארוכים יותר (למשל, 12 עד 16 ביטים).

התוצאה היא זרם של קודי ביט באורך משתנה שמכווצים את XML בטקסט רגיל ב‑75% עד 88%.

3. פירוק פורמט-אחר-פורמט: איך כל אחד מתמודד עם דחיסה

בעוד ש‑DOCX, XLSX, PPTX ו‑EPUB משתמשים כולם במעטפת ZIP זהה, המאפיינים הפנימיים של הנתונים שלהם שונים באופן קיצוני.

א. DOCX: האקט של איזון הטקסט והעיצוב

  • מה נמצא בפנים: XML רגיל (word/document.xml), טבלאות גופנים, סגנונות, קטלוגי קשרים, ותיקייה word/media/.
  • איך הדחיסה מתבצעת:
    • הטקסט הגולמי והסימון של XML חווים יחס דחיסה עצום (לעיתים נופלים מ‑5 מ״ב של XML גולמי ל‑500 ק״ב).
    • עם זאת, מסמכים מודרניים לעיתים קרובות משולבים צילומי מסך, איורים ותמונות. מכיוון שקבצי JPEG ו‑PNG הם כבר דחוסים, DEFLATE אינו יכול לצמצם אותם יותר. למעשה, הרצת DEFLATE על תמונה שכבר דחוסה מניבה חיסכון של כמעט 0% (ולפעמים אפילו מגדילה במקצת את הגודל עקב כותרות דחיסה).
    • כתוצאה מכך, קבצי DOCX ללא תמונות קטנים באופן יוצא דופן, בעוד דוחות עם הרבה תמונות משקפים כמעט את הגודל המדויק של קבצי התמונות המוכללים בהם.

ב. 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>).
  • למה XLSX נדחס באופן דרמטי:
    • רשומות שורות מספריות (sheet1.xml) משתמשות בתחביר חוזר וניתן לחיזוי.
    • DEFLATE מזהה בקלות תבניות חוזרות ב-XML טבלאי. זה נפוץ שקובץ sheet1.xml גולמי בגודל 120 MB מצטמצם ל‑פחות 6 MB בתוך ארכיון XLSX.

ג. PPTX: מצגות עם מדיה כבדה

מצגות שונות באופן יסודי ממסמכים וגליונות אלקטרוניים:

  • דילמת התמונה: קבצי PPTX בדרך כלל נשלטים על ידי צורות וקטוריות, גרפיקה ברקע, קטעי וידאו, ושקופיות ברזולוציה גבוהה.
  • פרופיל דחיסה: בעוד ppt/slides/slide1.xml עד slideN.xml נדחסים ביעילות, משקל המדיה (ppt/media/) מהווה 85% עד 95% מהמשקל הכולל של הארכיון.
  • מדוע דחיסת PPTX מחדש לא משנה דבר: אם תנסו לדחוס קובץ PPTX שכבר נשמר עם 7-Zip או WinRAR, תגלו כמעט שאין הקטנת גודל. מכיוון שהפנים הוא כבר ארכיון ZIP דחוס ב‑DEFLATE שמכיל JPEGים ו‑MP4ים שכבר נדחסו מראש, האנטרופיה כבר קרובה למקסימום.

ד. 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‑book צריכים לזהות EPUB מיד מבלי לחלץ את כל הארכיון או להריץ צינורות דחיסה.
    • פורמט המכולה הפתוחה (OCF) מחייב שהקובץ mimetype:
      1. חייב להיות הקובץ הראשון בארכיון ZIP.
      2. חייב להכיל בדיוק את המחרוזת application/epub+zip.
      3. אסור לדחוס (שיטת דחיסת ZIP 0 / “מאוחסן”).
      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, בוררים חוזרים של CSS65% – 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, ותמצא את התמונות המקוריות הלא דחוסות בדיוק כפי שהוכנסו.

ראה גם