{
  "gemessen_am": "2026-08-04",
  "lizenz": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/",
  "frage": "Laesst sich die Datei einer Vollseitenaufnahme verkleinern, ohne die Qualitaet zu senken — und mit welchem Verfahren?",
  "anlass": "Die eigene Messung vom 1. August: 6,7 MB gegen 1,1 MB beim Druckexport, derselbe Artikel. Die Erweiterung encodiert mit jpegQuality 0.92 und bettet als /Filter /DCTDecode ein. Ob dieser Wert je gemessen oder nur gesetzt wurde, war offen.",
  "methode": {
    "beschreibung": "Zwei synthetische Seiten von 1400x3200 px: eine textlastige mit Absaetzen und drei eingestreuten Grafiken, eine bildlastige aus weichen Verlaeufen mit Rauschen. Jede in neun Varianten kodiert, Groesse und struktureller Vergleich (SSIM) gegen das Original gemessen.",
    "werkzeug": "Pillow 12.2.0",
    "control": "Die zweite Seite IST der Kontrolllauf. Die erste Messung zeigte PNG als klaren Sieger — was fuer Fotos nicht stimmen kann, weil JPEG genau dafuer gebaut wurde. Die Gegenprobe dreht das Verhaeltnis um Faktor sechs und macht den Befund erst brauchbar.",
    "grenze": "Synthetische Seiten, keine echten Aufnahmen. Die Groessenordnung ist belastbar, die Einzelwerte sind es nicht."
  },
  "ergebnis": {
    "textseite_kb": {
      "jpeg_92_heute": 1327,
      "jpeg_85": 1065,
      "jpeg_80": 953,
      "jpeg_75": 867,
      "jpeg_85_progressiv": 932,
      "png_flate": 495
    },
    "bildseite_kb": {
      "jpeg_92_heute": 684,
      "jpeg_85_progressiv": 354,
      "png_flate": 3124
    },
    "ssim": {
      "jpeg_92": 0.9996,
      "jpeg_85": 0.9987,
      "jpeg_80": 0.9978,
      "jpeg_75": 0.9966,
      "png_flate": 1.0
    }
  },
  "befund": "Das Verhaeltnis dreht sich mit der Seitenart. Bei Text ist FlateDecode (verlustfrei) auf 37 % der heutigen Groesse, bei Bildern auf 456 %. Ein fester Wert ist fuer einen der beiden Faelle immer falsch — und die Erweiterung kachelt ohnehin, kann also je Kachel entscheiden.",
  "was_der_browser_kann": {
    "canvas.toBlob": [
      "image/jpeg mit Qualitaet",
      "image/png verlustfrei",
      "image/webp — von PDF nicht unterstuetzt"
    ],
    "nicht_steuerbar": [
      "progressive",
      "optimize",
      "chroma subsampling"
    ],
    "pdf_filter": {
      "DCTDecode": "heute genutzt",
      "FlateDecode": "erzeugbar, ungenutzt",
      "JPXDecode": "kein Browser encodiert JPEG 2000",
      "JBIG2Decode": "1-bit, stark bei Text, kein Browser encodiert es"
    }
  },
  "empfehlung": "Je Kachel beide Varianten erzeugen und die kleinere einbetten. Kostet Rechenzeit, keine Qualitaet: FlateDecode ist verlustfrei (SSIM 1.0), JPEG bleibt wo es gewinnt. Erwarteter Gewinn bei einer textlastigen Seite rund 63 %, bei einer bildlastigen null.",
  "recherche_2026-08-04": {
    "frage": "Was ist ueber canvas.toBlob hinaus erreichbar, in BEIDEN Browsern?",
    "wasm_in_erweiterungen": {
      "erlaubt": true,
      "beleg": "Chromes Mindest-CSP fuer extension_pages lautet \"script-src 'self' 'wasm-unsafe-eval'; object-src 'self';\" — WASM ist ausdruecklich Teil davon. Firefox ab 102, Chrome ab 103.",
      "haken": "Die VOREINSTELLUNG deaktiviert WASM. Beide Manifeste dieses Projekts fuehren heute gar keine CSP, also gilt die Voreinstellung. Ein Eintrag ist noetig, keine Ausnahmegenehmigung.",
      "ungeprueft": "Ob WASM im Service Worker laeuft, wo hier encodiert wird. Die CSP-Angabe gilt fuer extension_pages; der Worker ist eine eigene Umgebung. Das ist die eine offene Frage vor der Umsetzung.",
      "quellen": [
        "https://developer.chrome.com/docs/extensions/reference/manifest/content-security-policy",
        "https://bugzilla.mozilla.org/show_bug.cgi?id=1766027"
      ]
    },
    "verfahren_nach_material": [
      {
        "material": "Text auf einfarbigem Grund",
        "verfahren": "FlateDecode",
        "gewinn": "auf 37 % der heutigen Groesse",
        "qualitaet": "verlustfrei, SSIM 1.0",
        "browser": "beide, ohne WASM, ohne CSP-Aenderung",
        "aufwand": "gering"
      },
      {
        "material": "Fotos, Verlaeufe",
        "verfahren": "JPEG wie heute",
        "gewinn": "keiner durch Formatwechsel",
        "qualitaet": "unveraendert",
        "browser": "beide",
        "aufwand": "keiner"
      },
      {
        "material": "Fotos, wenn 10-20 % mehr zaehlen",
        "verfahren": "mozjpeg per WASM",
        "gewinn": "10-20 % gegenueber dem Browser-Encoder",
        "qualitaet": "gleich bei gleichem Qualitaetswert",
        "browser": "beide, CSP-Eintrag noetig, Web Worker empfohlen",
        "aufwand": "mittel — Bundle rund 34 kB gzip"
      },
      {
        "material": "gemischte Scan-Seiten",
        "verfahren": "MRC (ITU T.44)",
        "gewinn": "Faktor 8 bis 10",
        "qualitaet": "sichtbar gut",
        "browser": "kein Browser-Encoder fuer JBIG2",
        "ausgeschlossen": "JBIG2 ersetzt aehnliche Zeichen durch dasselbe Muster und kann dabei Ziffern vertauschen — dokumentierte Zeichenverwechslung. Fuer ein Werkzeug, dessen Ausgabe als Beleg dient, ist das disqualifizierend, unabhaengig von der Ersparnis."
      },
      {
        "material": "alles",
        "verfahren": "JPEG 2000 (JPXDecode)",
        "gewinn": "besser als JPEG bei gleicher Groesse",
        "browser": "kein nativer Encoder; OpenJPEG als WASM denkbar",
        "aufwand": "hoch — und PDF-Leser unterstuetzen JPXDecode uneinheitlich"
      }
    ],
    "quellenangaben_bleiben": {
      "geprueft_am": "2026-08-04",
      "befund": "Textebene, Metadaten und Bild sind drei getrennte PDF-Objekte. Die Textebene ist ein Content-Stream aus Text-Operatoren, die Angaben stehen im Info-Objekt (/Title, /Author, /Subject, /Keywords), das Bild ist ein XObject mit /Filter. Ein Wechsel des Bildfilters aendert genau diese eine Zeile. RIS-Datei und Pruefsumme liegen ohnehin ausserhalb des PDFs.",
      "folge": "Keines der Verfahren gefaehrdet die Quellenangaben."
    }
  },
  "farbtiefe_2026-08-04": {
    "frage": "Bringt eine Umstellung auf Graustufen oder Schwarzweiss mehr als der Formatwechsel — und haelt die OCR-Ausbeute mit?",
    "methode": "Dieselbe Textseite, drei Farbtiefen, jeweils Flate-komprimiert. OCR mit Tesseract 5.3.4, deutsches Sprachmodell, Ergebnis gegen den RGB-Lauf per Sequenzaehnlichkeit verglichen. Kontrolllauf auf der Bildseite.",
    "textseite": {
      "rgb_24bit": {
        "flate_kb": 416,
        "anteil": "100 %",
        "ocr_woerter": 987,
        "aehnlichkeit": "100 %",
        "ssim": 1.0
      },
      "graustufen_8bit": {
        "flate_kb": 243,
        "anteil": "58 %",
        "ocr_woerter": 989,
        "aehnlichkeit": "99,9 %",
        "ssim": 1.0
      },
      "schwarzweiss_1bit": {
        "flate_kb": 113,
        "anteil": "27 %",
        "ocr_woerter": 989,
        "aehnlichkeit": "99,9 %",
        "ssim": 0.864
      }
    },
    "bildseite": {
      "rgb_kb": 2669,
      "graustufen_kb": 570,
      "schwarzweiss_kb": 375,
      "ssim_schwarzweiss": 0.199
    },
    "befund": "Auf einer Textseite kostet Schwarzweiss praktisch keine OCR-Ausbeute (989 gegen 987 Woerter, 99,9 % Aehnlichkeit) und bringt die Datei auf 27 % — gegen die heutigen 1327 kB JPEG sind das 8,5 %. Auf einer Bildseite bricht es ein: SSIM 0,199.",
    "einschraenkung_der_messung": "Das hier verwendete SSIM rechnet auf Luminanz und sieht Farbverlust deshalb NICHT — Graustufen kommt auf 1,000, obwohl die Farbe fehlt. Fuer die Frage 'bleibt Text lesbar' taugt das, fuer 'sieht es noch aus wie vorher' nicht. Wer Farbtreue bewerten will, braucht ein Mass, das Farbkanaele einbezieht.",
    "folge": "Kein Wert taugt fuer beide Faelle. Das gehoert in die Hand des Nutzers, nicht in eine Voreinstellung: Wer eine Textquelle belegt, will 113 kB; wer eine Abbildung belegt, braucht Farbe."
  }
}
