π AlexandriaSandwich
Automatisierte Buch-Digitalisierung mit Hybrid-OCR (Tesseract + Mistral AI), GSD-Pipeline & Perfect Sandwich-PDF Output.
β‘ Schnellzugriff & Navigation
AlexandriaSandwich ist eine containergestΓΌtzte Pipeline zur Archivierung und Digitalisierung historischer und moderner BΓΌcher. Sie verwandelt rohe Buchscans in perfekte 1:1 Sandwich-PDFs (visuelles Originalbild mit punktgenau hinterlegter, unsichtbarer Textebene), standardkonformes TEI-P5 XML fΓΌr Langzeitarchive sowie typografisch neu gesetzte Vektor-PDFs via Typst.
π Schnellstart (CLI in 3 Schritten)
Voraussetzung: Docker Engine mit Docker Compose v2.
1. Repository klonen & Konfiguration anlegen
git clone https://github.com/birchville-org/AlexandriaSandwich.git
cd AlexandriaSandwich
cp .env.example .env
2. OCR-Worker starten
3. Beispiel-Job ausfΓΌhren
Die Pipeline enthΓ€lt synthetische Testseiten unter examples/sample_book:
docker exec alexandria_worker /opt/alexandria/scripts/run_pipeline.sh \
--job sample_book \
--input /opt/alexandria/examples/sample_book \
--no-mistral
Ergebnis: Die fertigen Artefakte liegen sofort im Host-Verzeichnis ./data/output/:
* π 1:1 Sandwich-PDF: ./data/output/pdf/sample_book.sandwich.pdf
* ποΈ TEI-P5 XML: ./data/output/tei/sample_book.tei.xml
* π Neusatz-PDF: ./data/output/pdf/sample_book.digital.pdf
* π AusfΓΌhrlicher JSON-Report: ./data/output/reports/sample_book.pipeline.json
Web-UI & n8n gewΓΌnscht? Der gesamte Stack lΓ€sst sich mit einem Befehl starten:
* QA Viewer & Dashboard: http://localhost:8080/ * n8n Orchestrator: http://localhost:5678/
β¨ Features
- πͺ Automatisches Pre-Processing: Ausrichten (Deskewing) und Reinigen vergilbter Seiten via ImageMagick + unpaper (
scripts/preprocess.sh). - π€ Hybrid Quality Loop:
- Lokal & Schnell: Erste OCR-Ebene mit Tesseract OCR auf der lokalen Compute-Node.
- KI-Fallback: Automatischer Wechsel auf Mistral OCR (
mistral-ocr-latest) bei schlechten Scores (< 85% Confidence), Fraktur* π Multi-Format Export (VollstΓ€ndige Zielformat-Matrix): - 1:1 Sandwich-PDF & KI-synchronisiertes Faksimile: UnverΓ€ndertes Faksimile mit unsichtbarem Textlayer (
<job>.sandwich.pdf) bzw. semantisch mit Mistral OCR synchronisierter Textlayer ohne Rauschzeilen (<job>.aligned.pdf). - Reflowable EPUB 3 eBook: FΓΌr MobilgerΓ€te und E-Reader (
<job>.epub) mit 102+ Kapiteln und eingebetteten Unicode-Schriften (Noto Serif Devanagari + Linux Libertine O). - Digitales Neusatz-PDF: Typografisch optimierter Vektorneusatz (
<job>.digital.pdf) via Typst-Engine. - TEI-P5 XML: Standardkonformes Archivformat (
<job>.tei.xml) fΓΌr Bibliotheken und Digital Humanities. - Semantischer AST & Markdown: Strukturierte
book.json(Single Source of Truth mit Bounding-Boxes) sowie bereinigtesbook.mdfΓΌr KI- und Textpipelines. (Siehe ausfΓΌhrlich: Zielformat-Architektur & Duale Reproduktion) - π οΈ Zwei Korrekturverfahren:
- Pre-Assembly hOCR-Korrektur: hOCR-Tokenkorrektur vor dem Zusammenbau des PDFs.
- Post-Assembly Textlayer-Korrektur: Direktes Token-Alignment und Editieren der unsichtbaren Textschicht im fertigen PDF via pikepdf & QA-Viewer (
<job>.aligned.pdf). - π³ Multi-Architektur Support: Native UnterstΓΌtzung fΓΌr
linux/amd64(Server / Proxmox VM) undlinux/arm64(Apple Silicon M-Serie).
π Pipeline-Ablauf
Scans (PNG / TIFF / JPEG)
β
βΌ
ββββββββββββββββββββββββ
β 1. Preprocessing β βββΊ ImageMagick & unpaper (Deskew, Entflecken, RΓ€nder)
ββββββββββββ¬ββββββββββββ
β
βΌ
ββββββββββββββββββββββββ
β 2. Tesseract OCR β βββΊ Lokale OCR-Engine (hOCR, Bounding Boxes, Konfidenz)
ββββββββββββ¬ββββββββββββ
β
βΌ
ββββββββββββββββββββββββ
β 3. Quality Gate β ββ Konfidenz < 85%? βββΊ βββββββββββββββββββββββββββββ
ββββββββββββ¬ββββββββββββ β 4. Mistral OCR Fallback β
β Pass (>= 85%) β (LLM-Vision Extraktion) β
β βββββββββββββββ¬ββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Multi-Artifact Assembly & Target Exports β
ββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββ¬ββββββββββββββββ¬ββββββββββββββββ€
β 5. Sandwich & Aligned PDF β 6. TEI-P5 XML Export β 7. Typst Satz β 8. EPUB 3 β
β (OCRmyPDF + Aligned Flow) β (lxml + book.json Schema) β (book.typ) β (Font Inlined)β
ββββββββββββ¬ββββββββββββββββββ΄ββββββββββββββ¬ββββββββββββββ΄ββββββββ¬ββββββββ΄ββββββββ¬ββββββββ
βΌ βΌ βΌ βΌ
<job>.sandwich / aligned.pdf <job>.tei.xml <job>.digital.pdf <job>.epub
(Faksimile + korrigierter Text) (Akademie-Standard) (Vektor-Neusatz) (eBook Mobil)
π οΈ Skripte im Γberblick (scripts/)
| Skript | Typ | Funktion |
|---|---|---|
run_pipeline.sh |
Bash | Haupt-Orchestrator: steuert Preprocessing, Quality Gate, Fallback, Assembly und Multi-Format-Exporte. |
build_typeset_edition.py |
Python | Erzeugt sektionsspezifische Typst-Vektorneueditionen (BΓΆhtlingk-Standard) mit automatischem Font-Vendoring. |
align_dhatupatha.py |
Python | Bilinguale Facing-Page-Alignment-Engine: Gleicht DevanΔgarΔ« & IAST gegen kanonische Ground-Truth ab. |
align_mistral_pdf.py |
Python | Post-Assembly: Synchronisiert Mistral-Text mit Tesseract-Bounding-Boxes direkt im PDF-Inhaltsstrom (.aligned.pdf). |
export_epub.py |
Python | Baut standardkonformes EPUB 3 mit semantischem XHTML und eingebetteten Unicode-Schriften. |
render_digital_pdf.py |
Python | Erzeugt ein typografisches Neusatz-PDF mit modernem Schriftsatz via Typst-Engine. |
export_tei.py |
Python | Generiert standardkonformes TEI-P5 XML fΓΌr Langzeitarchive und Metadatenkataloge. |
consolidate_book.py |
Python | FΓΌhrt Einzelseiten-hOCR/Markdown-Daten in ein einheitliches Zwischenformat (book.json / book.md) zusammen. |
mistral_ocr.py |
Python | Parallelisierter API-Client fΓΌr LLM-Vision mit exponentiellem Backoff und Caching. |
assemble_sandwich.py |
Python | Baut 1:1 Sandwich-PDFs mit unsichtbarer Textebene (Mode 3) aus bereinigten Seitenbildern. |
quality_check.py |
Python | FΓΌhrt Tesseract aus, analysiert Wort- und Seitenkonfidenzen und steuert das Quality Gate. |
preprocess.sh |
Bash | Bereinigt Scans via ImageMagick und unpaper (Deskew, Randentfernung, Kontrast). |
inject_toc.py |
Python | Injiziert hierarchische Outlines (TOC), Metadaten und Seitennummerierungs-Labels in PDFs. |
hocr_correct.py |
Python | Pre-Assembly: ErmΓΆglicht hOCR-Textkorrekturen vor dem PDF-Bau. |
pdf_text_correct.py |
Python | Post-Assembly: Low-Level-Stream-Editor fΓΌr In-PDF-Textlayer-Korrekturen. |
sync_storage.sh |
Bash | Synchronisiert Eingabe- und Ausgabedaten optional mit zentralem NAS-/NFS-Storage. |
ποΈ Architektur & Referenz-Deployment
Das Standard-Setup lΓ€uft vollstΓ€ndig auf jedem Entwicklungsrechner mit Docker (localhost). In grΓΆΓeren Produktivumgebungen kann AlexandriaSandwich verteilt betrieben werden:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Control Node / NAS β
β β
β β’ n8n Workflow Orchestrator (Docker Container) β
β β’ Central Storage (NFS/SMB Share fΓΌr Scans & Artefakte) β
ββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββ
β NFS Mount & REST / SSH
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Compute Node (z. B. Proxmox VM "alex" - 16 GB RAM / 4 vCPUs)β
β β
β β’ Docker OCR Worker Container (`alexandria_worker`) β
β βββ ImageMagick + unpaper (Deskew & Cleanup) β
β βββ Tesseract OCR (Lokale Primary Engine, hOCR Export) β
β βββ Mistral OCR Client (API-Fallback & Layout Analysis) β
β βββ OCRmyPDF / img2pdf / Typst (Artifact Assembly) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π Dokumentation & weiterfΓΌhrende Links
- ποΈ Fallstudie DhΔtu-PΔαΉha (BΓΆhtlingk-Standard):
case-study-dhatupatha.md - π Fallstudie PΔαΉinis Grammatik (BΓΆhtlingk 1887):
case-study.md - βοΈ Zielformate & DualitΓ€t:
TARGET_FORMATS.md - π©πͺ Installationsanleitung:
INSTALLATION.md - π οΈ Korrekturverfahren (Pre-Assembly vs. Post-Assembly):
CORRECTION_PATHS.md - β‘ n8n Workflow & Betrieb:
N8N.md - ποΈ Storage & Verzeichnisstruktur:
STORAGE.md - π§ͺ Pipeline-Verfahren & Historie:
WIKI_VERFAHREN.md