DjVu-Viewer Integration

Aus djvu-wiki
Zur Navigation springen Zur Suche springen

DjVu-Viewer Integration

Gitlab

Server-Topologie

wikiId URL Standort
djvu-wiki http://djvu-wiki.genealogy.net vm2180 (dieser Server)
genwiki-farm http://genwiki-farm.genealogy.net vm2180 (dieser Server)
genwiki39e http://genwiki39e.genealogy.net vm2180 (dieser Server)
genwiki39 https://genwiki39.genealogy.net separater öffentlicher Docker-Server
genwiki39d http://genwiki39d.bitplan.com fur.bitplan.com (nur Intranet)
Produktion https://wiki.genealogy.net hetzner

DjVu-Viewer

Hintergrund

Speicherplatz-Beschränkungen

  • vm2180 hat ~2TB — ausreichend nur für Dateien mit Präfix A/B
  • 333 gebündelte A/B-Dateien haben Tar-Pakete in /genwiki/djvu_images/
  • Originale .djvu-Dateien liegen auf fur.bitplan.com:/hd/luxio/genwiki/images/
  • djvu-viewer (nur Intranet) verwendet derzeit Tar-Pakete; direkte .djvu-Lesefunktion geplant

Aufgabe

Das GenWiki wird von MediaWiki 1.35 auf MediaWiki 1.39 LTS migriert (siehe Migration2025-11). Die DjVu-Anzeige ist eines von drei Kernproblemen dieser Migration.

Das GenWiki enthält ca. 4000 DjVu-Dateien — überwiegend genealogische Adressbücher — die mit Orten im GOV (Genealogisches Ortsverzeichnis) verknüpft sind. Ca. 50% dieser Dateien lagen unbundled vor, was zusammen mit einzeln gespeicherten Thumbnails zu einem Speicherbedarf von ~4 TB führte.

Der djvu-viewer löst dieses Problem durch Konvertierung zu gebündelten TAR-Paketen. Auf fur.bitplan.com sind die Dateien bereits vorbereitet:

  • /hd/yuyu (4 TB SSD) — konvertierte TAR-Pakete (1,8 TB), bis auf 10 Fehler vollständig
  • /hd/luxio (10 TB HDD) — gebündelte .djvu-Dateien

Da vm2180 nur ~1 TB Platz hat, werden zunächst die Dateien mit Präfix A und B (333 Dateien) übertragen. Das djvu-wiki dient als Testumgebung; Hardlinks nach genwiki39e stellen sicher dass das zukünftige Produktivwiki dieselben Dateien ohne Zusatzspeicher nutzen kann.

Ziele

  • Optische Prüfung: DjVu-Seiten werden im djvu-wiki systematisch dargestellt und sind visuell prüfbar
  • Semantische Prüfung: GOV-Verknüpfungen bleiben erhalten und sind per SMW-Query abfragbar (siehe Semantifizierung)
  • Batch-Verarbeitung: komplette Anfangsbuchstaben werden in einem Durchgang migriert, mit Statistik über Erfolge und Probleme
  • Farm-Ansatz: Die Query-Patterns sind für alle Wikis der Farm wiederverwendbar — DjVu ist ein Thema, GOV ein anderes, dasselbe Werkzeug bedient beides

Drei Quellen — eine Abfragesprache

Alle Quellen werden über named parameterized queries abgefragt — ob SQL, SPARQL oder SMW-Ask spielt keine Rolle. Das Muster kommt aus dem genwiki2024-Projekt:

Quelle Inhalt Beispiel-Queries
Wiki-Datenbank (MariaDB) Welche DjVu-Dateien und Wiki-Seiten existieren wiki_queries.yaml
DjVu-Viewer Datenbank (SQLite) Konvertierungsstatus, Seitenanzahl, Fehler, gebündelt ja/nein queries.yaml
GOV (SPARQL / pyomnigraph) Ortsverknüpfungen zu den Dokumenten gov-queries.yaml

Demo-Dateien

Logarithmische Seitengrößen, alle gebündelt, alle mit Dateinamen-Präfix A oder B, alle mit Tar-Paketen. Hinweis: AB1934-Oelde.djvu enthält zwar "Oelde" im Namen, fängt aber mit A an.

Datei Seiten Größe Hash-Pfad
AB1938_Kreis-Beckum_Inhaltsverz.djvu 3 50 KB c/c7
Auenheim-Frauweiler_Dokument-1693-03-09.djvu 10 3,9 MB b/b8
AB1934-Oelde.djvu 105 4,1 MB 5/54
Adressbuch_Husum_1900.djvu 313 7,7 MB d/d1
Aachen-Burtscheit-AB-1887.djvu 676 57 MB a/a0

Vorgehen

djvu_migration.py — Teil des djvu-viewer-Projekts — kapselt die notwendigen Migrations Schritte:

  1. Batch auswählen (z.B. --prefix A für alle Dateien mit Anfangsbuchstabe A)
  2. Drei Quellen zu den betroffenen DjVu-Dateien abfragen und Ergebnisse zusammenführen
  3. DjVu-Dateien unter Bewahrung der Timestamps kopieren
  4. Hard-Links zwischen den Wikis erstellen
  5. Wiki-Seiten im djvu-wiki systematisch erstellen mit Vorlage:DjVuViewer und Vorlage:GOV
  6. Statistik ausgeben: erfolgreich / Fehler / übersprungen — mit Ursachen (eigenartige Codierung, unvollständige Dateien u.a.)

Fehlerbehandlung und Batch-Logik werden aus dem bestehenden djvu-viewer übernommen.

Siehe auch