Arbeitsablauf
Das Projekt entstand in Zusammenarbeit mit Auftraggeber Andreas Gottsmann, den drei ÖAW-Mitarbeitern Daniel Schopper, Stephan Kurz und Peter Andorfer, Lektorin Sabine Kofler sowie Martin Kroißenbrunner, der die digitale Edition federführend entwickelte. Die Kommunikation erfolgte neben E-Mail und Instant Messenger durch mehrere Treffen an der ÖAW in Wien.
Da die Erstellung digitaler Editionen einem ständigen Wandel unterliegt, der mit häufigen Anpassungen der Arbeitsmittel einhergeht, werden immer wieder kleine Änderungen vorgenommen, ohne dass diese anders als durch die Benutzung selbst dokumentiert werden. Eine Darstellung des Arbeitsablaufs kann daher nur eine Momentaufnahme sein, auch wenn wir bemüht sind, sie aktuell zu halten und auch Veränderungen im Zeitverlauf zu dokumentieren.
Transkription
Der erste Schritt war die Umwandlung des Ausgangsmaterials (Bände 2 und 3: physische Bücher, Bände 4 und 5: PDF-Dateien) in computerlesbaren Text. Da Band 1 bereits vor Beginn des offiziellen Projekts transkribiert und kontrolliert worden war, war dieser Schritt nur für die restlichen vier Bände erforderlich. Am Ende dieses Schrittes standen die korrigierten Transkriptionen aller Bände für den Export auf Transkribus bereit.
Bände 2 und 3
Für die Transkription der Bände 2 und 3 wurde Transkribus eingesetzt. Transkribus ist eine in Innsbruck entwickelte Plattform zur automatischen Texterkennung nicht nur von gedruckten Texten, wie in diesem Fall, sondern auch von Handschriften. Nach dem Hochladen der Faksimiles wurde wie folgt vorgegangen:
- Layout der Seiten erfassen: Ziel dieses Schrittes war es, einerseits die Grundlinien bzw. »baselines« der Zeilen und andererseits die Seitenelemente (Seitenzahlen, Überschriften, Absätze, …) mittels »text regions« zu erfassen. Ersteres dient als Ausgangsbasis für die automatische Texterkennung, Letzteres zur Strukturierung der Transkription. Mehrere von Transkribus zur Verfügung gestellte Layout-Analyse-Engines wurden getestet und die geeignetste eingesetzt. Das Ergebnis wurde anschließend überprüft und gegebenenfalls korrigiert.
- Textbereiche annotieren: Ziel dieses Schrittes war es, die Textregionen zu benennen. Die untenstehende Tabelle zeigt, welche Bezeichnungen verwendet wurden. P2PaLA ist ein Layout-Analysewerkzeug, das Strukturtypen auf Regionsebene und Grundlinien einer Seite auf der Basis von vortrainierten Modellen erkennt und diesen Schritt erheblich erleichterte. Auch hier wurde das Ergebnis kontrolliert und gegebenenfalls korrigiert.
- Texterkennung: Die Erstellung einer Transkription des Faksimiles war das Ziel dieses Schrittes. Da die von Transkribus zur Verfügung gestellten Modelle nicht mit Hochstellungen umgehen konnten, wurden eigene Modelle trainiert. Dazu wurden etwa 75 Seiten eigenhändig transkribiert. Die Modelle lieferten Transkriptionen mit durchschnittlich 1-2 Fehlern pro Seite. Diese wurden dankenswerterweise von Frau Sabine Kofler korrigiert.
Die Bände 1-3 wurden als PAGE XML-Dateien exportiert. Dabei wurden pro Band Dateien generiert für die Einleitung und jenen Abschnitt, der die Briefe beinhaltet.
Bände 4 und 5
Die Bände 4 und 5 wurden vom Verlag der Österreichischen Akademie der Wissenschaften als PDF-Dateien übermittelt. Da es sich um textbasierte PDF-Dateien handelt, konnte der Text aus diesen extrahiert werden. Um den Workflow, der für die Bände 1 bis 3 vorgesehen war, zu übernehmen, entschied man sich, auch für diese Bände PAGE XML-Dateien zu erstellen. Dabei wurde ähnlich vorgegangen wie bei den Bänden 2 und 3. Nach dem Hochladen der Faksimiles wurden folgende Schritte unternommen:
- Layout der Seiten erfassen: siehe oben
- Textbereiche annotieren: siehe oben
- Text einfügen: Im Transkribus-Desktop-Client besteht die Möglichkeit, Faksimiles auf Basis von Grundlinien mit vorhandenen Transkriptionen zu synchronisieren. Dazu muss für jedes Faksimile eine TXT-Datei zur Verfügung stehen. Zu diesem Zweck wurde der Text aus den PDF-Dateien extrahiert und mittels eines Python-Skripts pro Seite eine TXT-Datei erstellt. Diese TXT-Dateien dienen dann als Grundlage für die Synchronisation.
Anschließend wurden wieder PAGE XML-Dateien exportiert.
Erstellung der TEI-Dokumente
Hauptbestandteile eines TEI-Dokuments sind das teiHeader- und das text-Element.
Im Folgenden wird darauf eingegangen, wie beide Teile zustande kamen und wie sie
zusammengesetzt wurden.
teiHeader
Um den teiHeader zu erstellen bediente man sich Goobi und Python.
Goobi
Goobi ist eine Open Source Software-Suite, die für die Digitalisierung und Verwaltung von Kulturgut entwickelt wurde. Nach dem Einlesen der Faksimiles wurde jeder Brief als eigenes Strukturelement in der Webanwendung erfasst und mit Normdaten zu den an der Korrespondenz beteiligten Personen und Orten angereichert. Das Ergebnis sind METS-Dateien.
Python
Zur Erstellung der teiHeader-Elemente wurden zwei
Python-Skripte benötigt.
Das erste Skript nutzte die von Goobi exportierten METS-Dateien als
Input. Das Ergebnis waren fünf XML-Dokumente (eines pro Band) mit je
einem Root-Element, das für jeden Brief ein
correspDesc-Element enthielt.
Für jeden Band wurde eine Vorlage für den teiHeader
erstellt, die Informationen zu titleStmt,
publicationStmt und sourceDesc
beinhaltete. Ein weiteres Python-Skript kombinierte diese
teiHeader-Vorlage für jeden Brief mit dem
entsprechenden correspDesc-Element. Das Ergebnis war ein
XML/TEI-Dokument pro Band, mit einem Root-Element, das für jeden Brief
ein TEI-Element enthielt. Jedes TEI-Element
beinhaltete einen nahezu vollständigen teiHeader (abgesehen
vom Regest und der Archivsignatur, die im Nachhinein hinzugefügt wurden)
sowie ein leeres text-Element.
text
Für die Erstellung des text-Elements wurde das XSLT-Stylesheet
"page2tei-0.xsl" und wiederum Python verwendet.
page2tei-0.xsl
Mithilfe des auf GitHub gehosteten XSLT-Stylesheets page2tei-0.xsl von Dario Kampkaspar wurden die zehn PAGE XML-Dateien, die als Export aus Transkribus vorlagen (pro Band je eine für die Einleitung und eine für den Briefteil), in TEI/XML-Dateien transformiert. Dabei wurden auf Grundlage der in Transkribus definierten Strukturtypbezeichnungen TEI-konforme Elemente erzeugt.
Python
Die mit dem genannten Stylesheet konvertierten Dateien stellten jedoch noch
keine vollständig TEI-konformen Dokumente dar. Obwohl jeder Brief nun
als eigenständiges TEI-Dokument mit Elementen wie head,
p und note vorliegt, sind weitere
Anpassungen erforderlich, um korrekte TEI-Dokumente zu erhalten. So muss
beispielsweise der Fußnotenapparat in ein In-Text-Zitationssystem
umgewandelt werden. Außerdem müssen durch Seitenumbrüche unterbrochene
Paragraphen (dargestellt als p für den ursprünglichen
Paragraphen, pb für den Seitenumbruch und
ab[@type="paragraph-continued"] für die Fortsetzung)
wieder zusammengesetzt und die bereits erstellten teiHeader
hinzugefügt werden.
Hierfür wurde Python verwendet. Nach dessen Ausführung erhielt man für
jeden Band ein TEI/XML-Dokument mit einem Root-Element, das für jeden
Brief ein TEI-Element beinhaltete. Dieses enthielt einen
teilweise leeren teiHeader (Regest und Archivsignatur
wurden von der Transkription in den teiHeader übernommen)
und ein korrekt ausgefülltes text-Element.
Die folgende Tabelle zeigt für jeden Schritt die Bezeichnung des jeweiligen Seitenelements. Unter „Transkribus“ ist die Strukturtypbezeichnung in Transkribus angegeben (wie im Schritt „Textbereiche annotieren“ erwähnt), „page2tei-0.xsl“ bezieht sich auf die Elementbezeichnung im Output von „page2tei-0.xsl“, und „Zielstruktur“ gibt die Bezeichnung im finalen TEI-Element an.
| Seitenelement | Transkribus | page2tei-0.xsl | Zielstruktur |
|---|---|---|---|
| Diese Elemente sind in allen Bänden vorhanden | |||
| Seitennummer | page-number | //fw[@type="page-number"] | //pb[@xml:id] |
| Briefnummer | letter-number | //ab[@type="letter-number"] | //TEI[@xml:id] | //head[@n] |
| Briefkopf | heading | //head | //head[@n] |
| Regest | editors-note | //ab[@type="editors-note"] | //abstract/p |
| Regest-Fortsetz. | editors-note-continued | //ab[@type="editors-note-continued"] | //abstract/p |
| Quellenangabe | msIdentifier | //ab[@type="msIdentifier"] | //msIdentifier/collection |
| Paragraph | paragraph | //p | //body/div/p |
| Paragraph-Fortsetz. | paragraph-continued | //ab[@type="paragraph-continued"] | //body/div/p |
| Fußnotenapparat | footnote | //note[@n="[footnote reference]"] | //note[@xml:id and @type="footnote"] |
| Fußnotenapparat-Fortsetz. | footnote-continued | //note[@n="[footnote-continued reference]"] | //note[@xml:id and @type="footnote"] |
| Diese Elemente sind zusätzlich in den Bänden 4 und 5 vorhanden | |||
| Verweis auf gedruckte Ausgaben des Briefes | druck | //ab[@type="druck"] | //sourceDesc/bibl[@type="druck"] |
| Verweis auf Beilage | beilage | //ab[@type="beilage"] | //sourceDesc/bibl[@type="beilage"] |
| Diese Elemente sind zusätzlich im Band 5 vorhanden | |||
| Verweis auf externes Regest | regest | //ab[@type="regest"] | //sourceDesc/bibl[@type="regest"] |
| Textkritischer Apparat | sigla-footnote | //ab[@type="sigla-footnote"] | //note[@xml:id and @type="siglum"] |
Nachdem teiHeader und text für jeden Brief vorhanden gewesen sind, wurden
die beiden Teile mit einem weiteren Python-Skript zusammengefügt, womit
die Erstellung der TEI-Dokumente abgeschlossen war.
Static Site generieren mit DSE-Static-Cookiecutter
Nach der Erstellung der XML/TEI-Dateien, die auf dieser Website darstellt werden, wurden
XSLT-Dateien erzeugt, um mittels einer ant build.xml-Datei HTML-Seiten zu
generieren. Dieser Schritt basiert auf dem Static Site Generator DSE-Static-Cookiecutter.