📚 Pipeline-Artefakte & Qualitätsstand
Die AlexandriaSandwich-Pipeline transformiert historische Drucke und Handschriften über ein mehrstufiges Hybridverfahren in unterschiedliche wissenschaftliche Ausgabeformate (Faksimiles, Sandwich-PDFs, TEI-P5, EPUB 3 und digitale Neusätze).
Diese Dokumentationsseite dient als zentrale Referenz aller erzeugten Artefakte, beschreibt deren Zweck und dokumentiert den aktuellen Qualitäts- und Reifegrad des Verfahrens für den kontinuierlichen Verbesserungsprozess (CIP).
1. Übersicht der Verarbeitungsstufen
graph TD
A[Rohscan TIFF/PNG/PDF] --> B[Vorverarbeitung: Deskew & Unpaper]
B --> C[Tesseract HOCR & Quality Gate]
C -->|Konfidenz < Schwellenwert| D[Mistral Document OCR]
C -->|Konfidenz >= Schwellenwert| E[Konsolidierung]
D --> E[Konsolidierung & book.json]
E --> F1[Sandwich-PDF & Aligned PDF]
E --> F2[Typst Vektor-Neusatz 1:1]
E --> F3[TEI-P5 XML & EPUB 3]
E --> F4[Audit-Berichte & Layout-Checks]
2. Artefakt-Katalog
2.1 Vorverarbeitung & Bildbereinigung
preprocessed/<job>/page_XXXX.png
- Pfad:
data/processing/preprocessed/<job>/ - Zweck: Vorbereitung der Rohscans für OCR und Faksimile-Erstellung. Führt Deskewing (Geraderücken), Randbereinigung (Unpaper), Bundsteg-Entschattung und Weißpunkt-Kompensation (Reinweiß) durch.
- Qualitätsstand:
- Stärken: Homogene, gleichmäßige Weißflächen; Flecken und Scannerrauschen werden zuverlässig getrennt, ohne feine diakritische Punkte (Anusvāra, ṛ, ḍ) abzutrennen.
- Herausforderungen: Bei stark gewölbten Buchrücken (Gutter Distortion) stößt rein lineares Deskewing an Grenzen; hier ist ggf. eine zylindrische Entzerrung erforderlich.
2.2 OCR-, Transkriptions- & Bounding-Box-Schichten
page_XXXX.hocr & page_XXXX.json (Tesseract)
- Pfad:
data/processing/qc/<job>/ - Zweck: Schnelle lokale Primärerkennung auf Wort- und Zeichenebene inklusive genauer geometrischer Bounding-Boxes (
bbox x0 y0 x1 y1) und Konfidenzwerten zur Steuerung des Quality-Gates. - Qualitätsstand:
- Stärken: Liefert exakte Koordinaten für jedes erkannte Wort auf der Originalseite.
- Herausforderungen: Bei komplexen indologischen Texten (IAST-Diakritika, vedische Akzente, Devanagari) liegt die Trefferquote oft unter 85 %, was fehlerhafte Textlayer erzeugt.
page_XXXX.mistral.md & page_XXXX.mistral.json (Mistral Document OCR)
- Pfad:
data/output/<job>/markdown/ - Zweck: KI-gestütztes Fallback- und High-Fidelity-OCR für Seiten, die das Tesseract-Quality-Gate nicht bestehen, sowie für anspruchsvolle Tabellen, Fußnoten und Diakritika.
- Qualitätsstand:
- Stärken: Nahezu fehlerfreie Erkennung von IAST (ā, ī, ū, ṛ, ṝ, ḷ, ṃ, ḥ, ṅ, ñ, ṭ, ḍ, ṇ, ś, ṣ), Devanagari und vedischen Akzenten. Tabellenstrukturen werden semantisch erfasst.
- Herausforderungen: Mistral interpretiert typografische Sonderheiten (z.B. Punktleisten im Inhaltsverzeichnis) gelegentlich als lange Punktfolgen oder Gleichheitszeichen. Zudem fehlen im Standard-Markdown Bounding-Box-Koordinaten für jedes einzelne Wort.
page_XXXX.sidecar.txt
- Pfad:
data/output/<job>/ - Zweck: Bereitstellung des rohen Volltexts pro Seite für externe Suchmaschinen (Elasticsearch/Solr) und Unix-Tooling (
grep). - Qualitätsstand: Vollständig und performant abrufbar; entspricht exakt dem verifizierten Textbestand.
2.3 Semantische Konsolidierung & Buchmodell
book.json (consolidate_book.py)
- Pfad:
data/output/<job>/book.json - Zweck: Das zentrale, kanonische Datenmodell (Single Source of Truth). Führt Metadaten, Seitenfolgen, Tesseract-Koordinaten, Mistral-Markdown, Absatzhierarchien, Tabellen und Fußnoten in einem einheitlichen JSON-Schema zusammen.
- Qualitätsstand:
- Stärken: Ermöglicht die saubere Entkopplung von Ingestion und Rendering; Basis für alle Folgeformate (PDF, TEI, EPUB).
- Herausforderungen: Die automatische Unterscheidung zwischen Kolumnentiteln und beginnendem Haupttext erfordert bei uneinheitlichen Vorlagen gelegentlich seitenbezogene Heuristiken.
toc.json / toc.txt (inject_toc.py)
- Pfad:
data/output/<job>/<job>.toc.txt(editierbar),data/output/<job>/toc.json - Zweck: Hierarchischer Inhaltsbaum mit Seitenzuordnungen zur automatischen Injektion von PDF-Lesezeichen (Outlines/Bookmarks), PDF-Metadaten und echten Page-Labels (römisch für Front Matter, arabisch für Textteil).
- TOC Outline & Quality-Gate:
- Automatisierte Injektion: Alle erzeugten PDFs (Faksimile, Sandwich, Vektor-Neusatz) werden über
inject_toc.pymit Inhaltsverzeichnis und Page-Labels ausgestattet. Als Datenquelle dient vorrangig eine vorliegende<job>.toc.txt(oder<job>.toc.json) bzw. als automatischer Fallback die inbook.jsonerfassten Kapitelüberschriften (h1/h2). - Validierung & Normalisierung: Die Hierarchiestufen werden automatisch normalisiert (Start bei Ebene 1, kein Überspringen von Zwischenstufen), um Fehler beim Setzen der PDF-Outlines auszuschließen.
- Warnung bei leerer Outline: Werden 0 Einträge gefunden, protokolliert das Gate eine deutliche Warnung (
Warning: Injected 0 hierarchical TOC entries); bei gesetztem--require-tocbricht der Schritt mit Fehlercode 1 ab. - Manuelle Korrigierbarkeit (
.toc.txt): Neben dem PDF wird eine einfache Klartextdatei<job>.toc.txtbereitgestellt (Syntax:Titel | Seitennummermit 2 Leerzeichen Einrückung pro Ebene). Diese kann vom Benutzer in jedem Texteditor manuell verfeinert und überpython3 scripts/inject_toc.py -i <pdf> --toc <job>.toc.txtohne Neukompilierung verlustfrei re-injiziert werden. - Qualitätsstand: Ermöglicht eine barrierefreie, standardisierte Navigationsleiste in PDF-Betrachtern (Apple Preview, Acrobat, PDF.js) mit 1:1 übereinstimmenden Seitenzahlen.
2.4 Faksimile- & Sandwich-PDF-Artefakte
<job>.sandwich.pdf (assemble_sandwich.py)
- Pfad:
data/output/<job>/<job>.sandwich.pdf - Zweck: Klassisches PDF-Sandwich: Bereinigtes Faksimile-Bild oben, unsichtbare OCR-Textschicht dahinter.
- Qualitätsstand: Solide für Volltextsuche und rudimentäres Kopieren; Textauswahl kann bei ungenauen Tesseract-Boxen leicht versetzt sein.
<job>.aligned.pdf (align_mistral_pdf.py)
- Pfad:
data/output/<job>/<job>.aligned.pdf - Zweck: Hybrides Faksimile-Sandwich. Ersetzt den fehleranfälligen Tesseract-Text durch den präzisen Mistral-Text und richtet ihn über Dynamic Time Warping (DTW) auf die Bounding-Boxes der Originalwörter aus.
- Qualitätsstand:
- Stärken: Höchste Textqualität im Faksimile; seltene Ligaturen und Sonderzeichen lassen sich exakt markieren und kopieren.
- Herausforderungen: Bei stark abweichender Segmentierung zwischen OCR-Engines sind Fallbacks auf Zeilen- oder Absatzboxen nötig.
<job>.perfect_sandwich.pdf (build_perfect_sandwich.py)
- Pfad:
data/output/<job>/<job>.perfect_sandwich.pdf - Zweck: Druckfertiges High-End-Faksimile mit adaptiver Hintergrundaufhellung, Schärfung (Unsharp Mask), Content-Aware Margin Masking (automatische Beseitigung von Buchfalzen, Schatten, Bindestreifen und Scannerkanten außerhalb des Textbereichs) sowie unsichtbarem Vektor-Textlayer (Mode 3).
- Verfahren (Content-Aware Margin Masking):
- Ermittelt die exakte Bounding-Box des Textkörpers dynamisch aus den Mistral-JSON-Koordinaten oder PyMuPDF-Wortvektoren.
- Wendet mehrskaliges Ausleuchtungs-Leveling und Hintergrund-Nivellierung auf Reinweiß (
#FFFFFF) an. - Maskiert alle zusammenhängenden Schatten-, Falz- und Buchrückenflächen außerhalb der Textgrenzen (
pad_x=75, pad_y=60), ohne Randnotizen oder Seitenzahlen anzutasten. - Qualitätsstand: Optisch dem Rohscan weit überlegen; dient als bereinigte Referenzbasis für die nachgelagerte Layout-Profilierung und den Neusatz.
2.5 Digitaler Neusatz & Vektor-Editionen (Typst)
layout.profile.json (profile_source_layout.py)
- Pfad:
data/output/<job>/layout.profile.json - Zweck: Automatisierte geometrische Vermessung des Quell-Faksimiles (
perfect_sandwich.pdf). Ermittelt Satzspiegel, Randabstände (Kopf, Fuß, Innen, Außen), Durchschuss, Makro-Layout (einspaltig, zweispaltig, Marginalspalten) sowie Paginierungs- und Kolumnentitel-Positionen. - Qualitätsstand: Vollautomatisch; liefert die kalibrierten Geometrieparameter für den Neusatz.
<job>.digital.typ & <job>.digital.pdf (render_digital_pdf.py)
- Pfad:
data/output/<job>/<job>.digital.pdf - Zweck: Vollständiger digitaler Neusatz als Vektordokument (kein Rasterscan). Verlustfrei skalierbar, barrierefrei und mit echten Schriften gerendert (Libertinus Serif, Noto Sans Devanagari).
- Typografische Standards:
- Satzspiegel & Durchschuss: Wird automatisch aus
layout.profile.jsonund.perfect_sandwich.pdfabgeleitet. - Titel & Absätze: Dokumententitel zentriert auf Satzspiegelmitte; strukturierter Erstzeileneinzug (
1.5em) für Textabsätze. - Kopfzeile & Paginierung: Symmetrischer Drei-Spalten-Kolumnentitel mit konsistenter Devanāgarī- oder arabischer Seitenzählung.
- Fußnoten-Apparat: Automatische Abtrennung und Formatierung von Anmerkungen am Seitenende mit horizontaler Trennlinie und verkleinertem Schriftgrad.
- Modi:
- 1:1 Seitenkongruenz (
--preserve-pages): Jede Buchseite beginnt auf einer neuen digitalen Seite mit identischen Kolumnentiteln und adaptiver Skalierung (page_content), sodass die Paginierung exakt dem historischen Original entspricht. - Scholarly Reflow: Fließender Neusatz mit harmonischen Buchumbüchen nach klassischem typografischem Satzspiegel.
- Qualitätsstand:
- Stärken: Gestochen scharfes Schriftbild, minimale Dateigröße (ca. 200–800 KB statt 20–50 MB beim Faksimile), vollständige Durchsuchbarkeit.
2.6 Interoperabilitäts- & Distributionsformate
<job>.tei.xml (export_tei.py)
- Pfad:
data/output/<job>/<job>.tei.xml - Zweck: TEI-P5-konformes XML für Digital Humanities, Computerlinguistik und Langzeitarchivierung nach TEI-Konsortiumsstandard.
- Qualitätsstand: Valides TEI-XML mit strukturierter Titelei, Divisionen (
<div>), Paragraphen (<p>) und Zeilenumbrüchen (<lb/>). Tiefergehende morphosyntaktische Annotationen können nachgelagert über NLP-Pipelines angereichert werden.
<job>.epub (export_epub.py)
- Pfad:
data/output/<job>/<job>.epub - Zweck: Reflowfähiges E-Book für mobile Lesegeräte (Apple Books, Kindle, Tolino) basierend auf semantischem XHTML5 und CSS.
- Qualitätsstand:
- Stärken: Fließtext und einfache Listen passen sich jeder Bildschirmgröße optimal an.
- Herausforderungen: Breite grammatikalische Paradigmen (Deklinations- und Konjugationstabellen) erfordern horizontales Scrollen oder kompakte CSS-Sonderregeln.
2.7 Diagnose- & Qualitätsaudits
<job>.report.md (generate_job_report.py)
- Pfad:
data/output/<job>/<job>.report.md - Zweck: Automatisierte Zusammenfassung eines Pipeline-Laufs mit Kennzahlen (Pass/Fail-Verhältnis Tesseract vs. Mistral, Verarbeitungszeiten, Dateigrößen, Checksummen).
- Qualitätsstand: Dient als deterministisches Quality-Gate im n8n-/Shell-Workflow und wird direkt in der Web-UI dargestellt.
<job>.layout_audit.json / <job>.layout_audit.md (audit_layout_concordance.py)
- Pfad:
data/output/<job>/<job>.layout_audit.md,data/output/<job>/<job>.layout_audit.json - Zweck: Automatisierter Soll-Ist-Vergleich zwischen Original-Faksimile (
perfect_sandwich.pdf) und Neusatz (digital.pdf). Berechnet Satzspiegel-Ausfüllrate (Fill Ratio), Whitespace-Divergenz, strukturelle Zonen-Konkordanz (Marginalien vs. Hauptspalte), horizontale Massenschwerpunkte und Jaccard-Token-Überlappung. - Qualitätsstand: Unverzichtbares Instrument für das automatisierte Layout-Quality-Gate.
comparison_samples/ (compare_layout.py)
- Pfad:
data/output/<job>/comparison_samples/page_XXXX_comparison.png - Zweck: Visuelle Side-by-Side-Gegenüberstellung des bereinigten Faksimiles (links) und des digitalen Neusatzes (rechts) zur schnellen visuellen Begutachtung von Satzspiegel, Umbrüchen und Paginierung.
- Qualitätsstand: Wird standardmäßig im Pipeline-Lauf erzeugt.
3. Qualitätsmatrix & Reifegrad-Dashboard
| Stufe / Artefakt | Automatisierungsgrad | Reifegrad | Primäre Stärke | Aktuelle Herausforderung |
|---|---|---|---|---|
| Preprocessed PNG | 100 % automatisch | Reif (Produktion) | Gleichmäßige Weißflächen | Gewölbter Bundsteg |
| OCR / Mistral MD | 100 % automatisch | Sehr hoch | Diakritika-Präzision | Semantik von Punktleisten/Layout |
| book.json | 100 % automatisch | Hoch | Zentrales Schnittstellenmodell | Header- vs. Body-Klassifikation |
| TOC Outline & Labels | 100 % automatisch / Manuell | Publikationsreif | Standard-Lesezeichenbaum & Paginierung | Feingliederung tiefer Paragraphen |
| Aligned Sandwich PDF | 100 % automatisch | Hoch | Textsuche im Faksimile | Token-Drift bei Ligaturen |
| 1:1 Typst Neusatz | Halbautomatisch / CIP | Publikationsreif | Ästhetik & Zitierfähigkeit | Manuelle Feineinstellung bei Tabellen |
| TEI-P5 XML | 100 % automatisch | Gut | Interoperabilität | Morphosyntaktische Tiefe |
| EPUB 3 | 100 % automatisch | Befriedigend | Mobiles Lesen | Komplexe Grammatiktabellen |
4. Release-Assoziation & Künftige Fortschritte
- Release v1.4.0 (Minor Release):
- Erstmalige Verankerung des strengen 1:1 Vektor-Neusatzes (
build_macdonell_full_1to1.py) über das gesamte Werk (520 Seiten) als regulärer Pipeline-Bestandteil. - Verbindliches TOC-Outline-Quality-Gate: Automatisierte Prüfung aller PDFs auf Lesezeichenbäume, Generierung/Injektion inklusive echter Page-Labels (i–xii, 1–508) und Bereitstellung editierbarer
.toc.txt-Dateien zur manuellen Korrektur. - Einführung des tabularen Clarendon-Punktrasters und historischer Mediäval-Kapitälchen.
- Etablierung des standardisierten Artefakt-Inventars und der CIP-Dokumentation.
- Künftige Zyklen:
- Künftige Optimierungen an Bounding-Box-Ausrichtung, automatischen Tabellenlayouts und TEI-Anreicherungen werden kontinuierlich in dieser Matrix fortgeschrieben.