wiki:workflow_tutorial

Tutorium für die Anwendung des Workflows - Beispiel anhand eines Textes

Die Textauswahl (Zonca) ist dadurch begründet, daß dieser Text mit nur minimalem Eingreifen zu konvertieren ist. Dieses Tutorium beschreibt die Konversion eines Textes, der gemäß der DE_Specs digitalisiert wurde. Es liegen also vor:

  • Digitale Bilder jeder einzelnen Buchseite sowie Buchdeckel und -rücken (auf Foxridge)
  • eine Datei, die die Metadaten enthält: index.meta (auf Foxridge)
  • Datei mit dem nach den DE_Specs abgetippten Inhalt des Buches (hier)

Dem Buch ist eine ID zugewiesen worden, mit der es auffindbar ist.

Es wird davon ausgegangen, daß eine Arbeitskopie des Text- und Softwarerepositoriums vorliegt. Dieses befindet sich unter Versionskontrolle (Subversion) und sollte ausgecheckt und aktualisiert sein. Eine Anleitung gibt es hier

Zuletzt müssen in zwei Dateien Änderungen vorgenommen werden:

  1. in <svn-Verzeichnis>/schema/scripts/workflow/mpdl-workflow-settings.txt muß der richtige Pfad für das Repositorium angegeben werden.
  2. in <svn-Verzeichnis>/texts/aux/default-parameters.txt ist anzugeben, welche Datei der unknown characters zu nehmen ist. Dies ist abhängig vom Work Order.

Kurzversion in zehn Schritten

  1. Dateinamen gemäß ECHO-Konvention anpassen
  2. python prepare_conversion.py
  3. im neu entstandenen Text filter2syncandcheckpb ausführen, checkpb.log beachten und vor allem das Ende der Datei anschauen. zzzz löschen
  4. Unknown characters überprüfen, Detailblock löschen
  5. replacements und parameters einfügen
  6. Restliche Filter aus Schritt zwei ausführen, Output überprüfen und Textdatei gegebenenfalls korrigieren
  7. filter3makeandcheckxml ausführen, log prüfen und mit der entstandenen xml-Datei weiterarbeiten (Textwrangler: Filter_3_make_wellformed.pl und Filter_3_test_wellformedness.pl)
  8. filter4makeschemaandcheck ausführen und log prüfen (könnten Warnungen wegen der Byte Order Mark auftreten) (Textwrangler: Filter_4_make_valid.pl und Filter_4_test_validity.pl)
  9. filter5numberdivs ausführen, der das DTD-Fragment auflöst (Textwrangler: Filter_5_06_number_divs.pl)
  10. Der Text sollte nun hochladbar sein

Variante 1: Arbeit mit Terminal und Texteditor

Zuerst sei die Variante beschrieben, die ausschließlich mit einem Terminal und einem Texteditor auskommt. Vorteil ist hier die relativ plattformunabhängige Arbeit. Eine Verbindung mit dem Internet ist jedoch erforderlich.

NB: die in dieser Variante erwähnten Skripte (filter...) sind wie folgt aufzurufen:

sh <svn-Verzeichnis>/schema/scripts/workflow/filter... Zonca_1656_UR271U6Y.<txt|xml>

Dabei wird bis einschließlich Konversion nach XML und Validierung, Schritt 1, mit der txt-Datei gearbeitet.

Einfügen von Metadaten

  1. Der Dateiname der Textdatei sollte das folgende Format haben: Nachname_Jahr_ID.txt (ECHO-Konvention). Die ID ist beispielsweise über den Bibliothekskatalog (dort in dem Link zu Scans (high quality)) auffindbar, in diesem Falle ist es also Zonca_1656_UR271U6Y.txt. Idealerweise wird der Text in der Verzeichnisstruktur des Text- und Softwarerepositoriums abgelegt (beispielswiese innerhalb von <svn-Verzeichnis>/texts).
  2. python <svn-Verzeichnis>/schema/scripts/workflow/prepare_conversion.py Zonca_1656_UR271U6Y.txt erledigt automatisch die Vorbereitung der Konversion:
    • Erstellen der Verzeichnisstruktur
    • Einfügen des metadata-Blocks:
      • Einfügen der Metadaten aus der index.meta-Datei
      • Einfügen der GND der Autoren, falls vorhanden.
    • Einfügen der Bilddateinamen (pageimg-Block).
    • Untersuchen des Textes auf unbekannte Zeichen (unknown-Block).
    • Vorbereitung der restlichen Blöcke (log, replacements, parameters). Die sechs somit entstandenen Blöcke werden von nachfolgenden Skripten aufgelöst (pageimg, unknown, replacements), weiterverwertet (metadata, parameters), beziehungsweise in die Metadaten integriert (log).
  3. Es wird im log-Block außerdem ein Link zu der Quelle im Anzeigesystem eingefügt, damit Zweifelsfälle anhand der Seitenbilder leicht überprüft werden können.

Koordination von Bild und Text

  1. Die im Text eingetragenen Seitenumbrüche werden durch das Skript filter2syncandcheckpb.sh durch die Dateinamen im pageimg-Block ergänzt. Hier muß manuell geprüft werden, ob die Koordination stimmt. Falls nicht, muß der Bearbeitungsschritt rückgängig gemacht werden und an den entsprechenden Stellen in der Originalversion Seitenumbrüche hinzugefügt beziehungsweise entfernt werden. Während dieses Vorgangs sollte nichts anderes am Text verändert werden.
  2. Überflüssige Seiten wie zzzz.jpg (Farbtabelle am Ende des Buches) müssen dann noch gelöscht werden.

Unknown characters

  1. Die entstandene Liste muß durchgegangen werden und entschieden werden, wie die unbekannten Zeichen zu ersetzen sind. Es werden Vorschläge angezeigt, die auf den von der Dateneingabefirma geführten Listen basieren.
  2. Der im Textdokument erscheinende Absatz über dem unknown-Block muß dann gelöscht werden.

Parameters und replacements

  1. Gegebenenfalls müssen hier noch Parameter angegeben werden. Für Texte bis einschließlich Work Order 5 muß unter parameters despecs=1.1.2 angegeben werden.
  2. Der Replacements-Block ist dazu da, häufiger im Text vorkommende Stellen zu ersetzen, die für die Durchführung der Skripte problematisch sein können (weil eine beispielsweise eine bestimmte Konstruktion noch nicht implementiert ist): Für die Absatzauszeichnung <p #> gibt es noch keine Regel, weswegen etwaiges Auftreten verhindert werden muß, indem diese Absatzauszeichnung durch ein einfaches <p> ersetzt wird. Dies wird im Replacements-Block erledigt: <p\x{0020}# = <p # (das Leerzeichen muß als Unicode-Escapesequenz angegeben und die schließende spitze Klammer weggelassen werden).

Textdokument überprüfen

  1. Die restlichen Skripte aus Block 2 werden nun aufgerufen und deren Ausgabe durchgesehen werden, da sie das Textdokument auf bestimmte Fehler prüfen.

Konversion nach XML und Validierung

  1. Das Skript filter3makeandcheckxml.sh konvertiert das Textdokument in ein XML-Dokument. In der Logdatei kann geprüft werden, ob dabei Fehler aufgetreten sind. Etwaige Fehler sollten nach Möglichkeit in der zugrundeliegenden Textdatei korrigiert werden.
  2. Das nächste Skript, filter4makeschemaandcheck, formt das XML in XML gemäß dem ECHO-Schema um und überprüft das Ergebnis (Logdatei beachten). Bei Fehlern gibt die Log-Datei Hinweise auf den Ort und die Art des Fehlers. Es ist aber empfehlenswert, mit einem Texteditor zu arbeiten, der die Fehler im XML anzeigen kann (beispielsweise Oxygen oder Emacs).
  3. Das letzte Skript, filter5numberdivs, löst das am Anfang der Datei befindliche DTD-Fragment auf und nummeriert die div-Elemente
  4. Damit ist der Text vollständig in XML gemäß dem ECHO-Schema formatiert und kann in den Textspeicher importiert werden.

Variante 2: Arbeit mit Emacs

Diese Variante ähnelt der Variante 1. Für die Arbeit mit Emacs gibt es einen Major Mode (echo-mode.el), der einige Befehle und zudem eine Kommentarsyntax im XML-Stil bereitstellt, so daß in der txt-Version mit Kommentaren gearbeitet werden kann, die auch in der XML-Version bestehen bleiben. Die Befehle bestehen wiederum aus kaum mehr als den Aufrufen der zuvor erwähnten Shellskripte (es wird nur zusätzlich die Datei neu eingelesen oder automatisch die XML-Datei geöffnet.)

Variante 3: Arbeit mit Textwrangler/ BBEdit (auf Apple Mac OS)

NB: derzeit ist die Ausgabe in das Unix Script Output-Fenster fehlerhaft.

  1. Für die Arbeit mit Textwrangler müssen alle Skripte aus dem <svn-Verzeichnis>/schema/scripts/workflow-Verzeichnis in das Skriptverzeichnis ~/Library/Application Support/TextWrangler/Unix Support/Unix Filters/ kopiert werden.
  2. In den Einstellungen ist es möglich, einen Font auszuwählen, der MUFI-Zeichen unterstützt, beispielsweise Andron Scriptor.
  3. Das Skript prepare_conversion.py funktioniert nicht in Textwrangler, da es kein Textfilter ist. Dieses muß über die Kommandozeile aufgerufen werden.
  4. Ansonsten können die Textfilter im Textwrangler einfach angewandt werden. Angefangen mit Filter_2_02 werden zunächst alle Filter_2-Skripte der Reihe nach ausgeführt (Zugriff beispielsweise über das #!-Menü in der Menüzeile). Dabei sollte darauf geachtet werden, daß kein Text markiert ist. Für die Schritte 3 bis 5 gibt es jeweils zusammengefaßte Skripte, nämlich Filter_3_make_wellformed.pl und Filter_4_make_valid.pl. Diese führen einzelne Skripte aus.
  5. Nach Filter_3_make_wellformed.pl und Filter_4_make_valid.pl sollten die jeweiligen Testskripte Filter_3_test_wellformedness.pl und Filter_4_test_validity.pl ausgeführt werden.
  6. Zuletzt sollte Filter_5_06_number_divs.pl ausgeführt werden.
  7. Falls der Text valide ist, kann er hochgeladen werden.
  8. Problematisch an der Arbeit mit Textwrangler ist, daß es keine interaktive Überprüfung des XML gibt. Hier empfiehlt sich gegebenenfalls die zwischenzeitliche Arbeit mit Oxygen.
Last modified 13 years ago Last modified on Jun 16, 2011, 1:17:27 PM