OCR zu XML—Parsing ist erst die erste Prüfung
- Python
- XML
- data-quality
- research
Drei Arten von Korrektheit
Zu meiner Forschungsarbeit an der Universität Münster gehörte die Verarbeitung und Validierung von über 1.700 Seiten OCR-Ergebnissen zu konformem XML. Interessant war dabei nicht nur XML zu erzeugen, sondern zu wissen, was die jeweilige Prüfung wirklich belegt. Dafür hilft die Trennung in drei Prüfungen:
- Wohlgeformtheit: Kann ein XML-Parser das Dokument lesen?
- Konformität: Erfüllt das Dokument das geforderte Schema und die Projektregeln?
- Quelltreue: Gibt der Text das Ausgangsmaterial weiterhin korrekt wieder?
Die erste Prüfung zu bestehen bedeutet nicht, dass auch die anderen beiden bestanden sind.
XML-Escaping dem Serializer überlassen
Beim Zusammensetzen von XML-Strings werden Zeichen wie & und < leicht falsch behandelt. Ein Serializer übernimmt ihre Darstellung in XML-Textknoten.
Dieses eigenständige Beispiel nutzt die Python-Standardbibliothek; es stammt nicht aus dem Universitätsprojekt:
from xml.etree.ElementTree import Element, SubElement, tostring
document = Element("document")
page = SubElement(document, "page", {"number": "1"})
page.text = "Forschung & Archive <Katalog>"
xml_bytes = tostring(
document,
encoding="utf-8",
xml_declaration=True,
)
print(xml_bytes.decode("utf-8"))
ElementTree bietet Parsing und Serialisierung, ist aber kein XSD-Validator. Wenn ein Projekt Schema-Validierung verlangt, ist dafür eine zusätzliche passende Prüfung erforderlich.
Herkunft nachvollziehbar halten
Eine stabile Verbindung zwischen Ausgabedokument und Quellseite erhalten. Transformationen dokumentieren, die den Text wesentlich ändern. Mehrdeutige OCR-Korrekturen überprüfbar machen, statt still zu raten.
Ein syntaktisch gültiges Datum kann beispielsweise trotzdem falsch sein, weil OCR ein Zeichen verwechselt hat. Strukturprüfung definiert die erlaubte Form; der Vergleich mit der Quelle beantwortet eine andere Frage.
Datenprüfung und Veröffentlichung trennen
Bei Forschungs-Publishing unterscheidet Quarto zwischen Rendering und Ausführung von Berechnungen. Mit freeze lassen sich frühere Ergebnisse wiederverwenden. Ein erfolgreicher Website-Build belegt deshalb nicht automatisch, dass Quelldaten erneut verarbeitet oder validiert wurden.
Explizit festhalten, welcher Schritt validiert, welcher rendert und welche Artefakte wiederverwendet werden. So wird nachvollziehbar, was ein erfolgreicher Build tatsächlich nachweist. Bei Forschungssoftware ist der sicherere Workflow einer, in dem Strukturprüfung und Quelltreue als getrennte Verantwortlichkeiten sichtbar bleiben.
Quellen
- Python ElementTree für Parsing, Aufbau und Serialisierung von XML.
- Python XML Security für nicht vertrauenswürdiges XML.
- Quarto-Publishing auf GitHub Pages für Rendering, CI und eingefrorene Berechnungsergebnisse.
Technische Quellen am 13. September 2026 geprüft.
Verwandte Beiträge
ErkenntnisseData Engineering & Quality
Datentests sollten Annahmen festhalten, nicht nur Fehler melden
Datenqualitätsprüfungen um explizite Annahmen bauen, damit Fehler erklären, was sich geändert hat und welches Ergebnis gefährdet ist.