Schlagwort-Archive: Technik

Wikimedia-Commons-Kategorien auslesen und mit einer METS/MODS-Datei im DFG-Viewer anzeigen

Zur Abwechslung diesmal ein technischer Blogbeitrag als Ergebnis eines kleinen wochenendlichen Projekts mit der Herausforderung, die auf Wikimedia Commons hochgeladenen Digitalisate der im vorigen Beitrag vorgestellten Satzung formvollendet im DFG-Viewer zu präsentieren.

Der hierzulande bei Bibliotheken und Archiven einigermaßen verbreitete DFG-Viewer ermöglicht die unkomplizierte Anzeige von Digitalisaten aus dezentralen Repositorien. Mit ihm lässt sich eine vereinheitlichte Präsentationsoberfläche zur Ansicht von digitalisierten Medien bereithalten, ohne eine lokale Präsentationssoftware installieren oder betreiben zu müssen. Zur Implementierung genügt es, beim Aufruf unter https://dfg-viewer.de als URL-Parameter den Link auf eine lokale XML-Datei mit der technischen Kodierung des anzuzeigenden Digitalisat im standardisierten METS/MODS-Format zu übergeben, z.B. https://dfg-viewer.de/show?tx_dlf[id]=https://vermessungs-bibliothek.de/dvw-satzung-1935.xml. Mit korrekter URL-Kodierung sieht das dann etwas kryptischer aus: https://dfg-viewer.de/show?tx_dlf%5Bid%5D=https%3A%2F%2Fvermessungs-bibliothek.de%2Fdvw-satzung-1935.xml.

Die referenzierte XML-Datei kann dabei beliebige Links auf Bilddateien enthalten. Wo die darzustellenden Bilddateien liegen, ist dem DFG-Viewer vollkommen egal. Einzige Voraussetzung ist die Erreichbarkeit der Digitalisate im Internet. Was liegt da näher, als gleich zwei Fliegen mit einer Klappe zu schlagen: Nämlich die interessierenden Scans/Digitalisate nicht (nur) auf der eigenen Website abzulegen, sondern gleich auf Wikimedia Commons hochzuladen und direkt von dort einzubinden.

Während die einzelnen Objektseiten der auf Commons hochgeladenen Bilder einem festen Schema folgen, ändert sich der Dateipfad der eigentlichen Bilddatei allerdings von mal zu mal, was die Sache ein wenig erschwert. Beispiel:
* commons.wikimedia.org/wiki/File:DVW-Satzung-1935-1.jpgupload.wikimedia.org/wikipedia/commons/b/b7/DVW-Satzung-1935-1.jpg
* commons.wikimedia.org/wiki/File:DVW-Satzung-1935-2.jpgupload.wikimedia.org/wikipedia/commons/5/58/DVW-Satzung-1935-2.jpg

Dank der unter www.mediawiki.org/wiki/API:Categorymembers dokumentierten Schnittstelle lassen sich die URLs der einer Kategorie zugeordneten Bilddateien aber relativ bequem abfragen. Der API-Call commons.wikimedia.org/w/api.php?action=query&generator=categorymembers&gcmtitle=Category:Satzung_des_Deutschen_Vereins_für_Vermessungswesen,_1935&gcmlimit=100&gcmtype=file&prop=imageinfo&iiprop=url liefert alle nötigen Daten. (Altenativ ließen sich die Unterverzeichnisse bei fester Dateinamenstruktur auch aus den ersten beiden Buchstaben des MD5-Hashwerts des jeweiligen Dateinamens ableiten, siehe commons.wikimedia.org/wiki/Commons:FAQ#What_are_the_strangely_named_components_in_file_paths?.)

Die Überführung des Abfrageergebnisses in das (z.B. hier bei der DDB) dokumentierte METS-Datenformat erledigt nun das folgende PHP-Skript: commets.php.

Mit drei Parametern lässt sich damit eine METS/MODS-Datei generieren, was man hier gleich mal ausprobieren kann:

Wikimedia-Commons-Kategory (ohne „Category:“):

Dateiname/ID (ohne Dateierweiterung „.xml“):

eigene Homepage (ohne „https://“):
       

Das Ergebnis sieht dann bspw. wie folgt aus: test.xml

Bevor man die per Skript erzeugte XML-Datei auf dem eigenen Webserver ablegt, muss man nur noch an den markierten Platzhaltern die entsprechenden bibliographischen Daten ergänzen oder z.B. die beiden Abschnitte zum FULLDOWNLOAD löschen, wenn kein Gesamt-PDF zum Download angeboten wird.

Aufgerufen wird das Ganze via dfg-viewer.de/show?tx_dlf[id]=https%3A%2F%2Fvermessungs-bibliothek.de%2Fdvw-satzung-1935.xml. Eine konkrete Seite lässt sich wie folgt ansprechen: dfg-viewer.de/show?tx_dlf%5Bid%5D=https%3A%2F%2Fvermessungs-bibliothek.de%2Fdvw-satzung-1935.xml&tx_dlf%5Bpage%5D=2

Zum vereinfachten Aufruf mit einem stabilen lokalen Kurzlink kann eine Weiterleitung wie hier view.php dienen, die dann im gleichen Verzeichnis wie die METS/MODS-Datei liegen muss. Damit lässt sich der DFG-Viewer auch wie folgt aufrufen: vermessungs-bibliothek.de/view.php?id=dvw-satzung-1935 bzw. mit Seitenangabe vermessungs-bibliothek.de/view.php?id=dvw-satzung-1935&s=2. In der METS/MODS-Datei stehen diese Kurzlinks im optionalen Parameter CONTENTIDS. Ebenfalls optional ist eine lokale Präsentation (<dv:presentation />), die hier mit dem Link zur Commons-Kategorie belegt wird.

Viel Spaß beim Nachmachen bzw. Nachnutzen!

Workflow für schicke & schlanke Buch-PDFs mit Fraktur-Texterkennung

Heute etwas Technisches: zur Abwechslung will ich an dieser Stelle einmal meinen Workflow skizzieren, wie sich Buchscans mit einem Bündel freier Software unter Windows oder Linux effizient in hochaufgelöste und schlanke, durchsuchbare schwarz-weiß PDFs wandeln lassen. Die vorgestellte Vorgehensweise, bei der eine optimierte Bild-PDF am Ende mit dem OCR-Ergebnis überlagert wird, liefert bei gleicher Qualität rund 25% kleinere Ergebnisse als die direkte Erzeugung von OCR-PDFs mit tesseract und anschließender PDF-Optimierung.

1. ScanTailor

Zur Umwandlung der Scans in gerade ausgerichtete und auf den Textinhalt beschnittene (d.h. randlose) Binärbilder der Einzelseiten verwende ich ScanTailor Advanced (Windows-Version 1.0.19: github.com/ScanTailor-Advanced/scantailor-advanced/releases). Anleitungen gibt es zuhauf: wiki.ubuntuusers.de/Scan_Tailor/, wiki.genealogy.net/Scan_Tailor, www.heise.de…). Nota bene:

  • Zur Prüfung, ob beim Arbeitsschritt „Inhalt auswählen“ alle Seitenzahlen oder sonstige Marginalien einbezogen wurden, hilft die Sortiermöglichkeit der Seiten nach aufsteigender Höhe bzw. Breite (rechte Spalte ganz unten).
  • Da die Seitenränder später im PDF definiert werden, reicht es für die jetzt erzeugten TIFFs im Schritt „Ränder“ ein Rand von je 1 mm („Anwenden auf …“ → „Alle Seiten“ nicht vergessen).
  • Um bei nur teilweise gefüllten Seiten die ursprüngliche Anordnung der Textblöcke beizubehalten, sollte man im gleichen Schritt unter „Ausrichtung“ mit der Einstellung „Original“ experimentieren.
2. img2pdf

Im nächsten Arbeitsschritt fasse ich die von Scantailor standardmäßig im Unterverzeichnis \out abgelegten TIFF-Dateien mit dem Kommandozeilentool img2pdf (Windows-Version unter gitlab.mister-muffin.de/josch/img2pdf/releases) in einer PDF zusammen, wobei die TIFFs beim Einbinden unverändert bleiben. Ein A4-PDF mit 1 cm Rand erzeugt man so:

img2pdf -o out.pdf -S A4 -b 1cm *.tif

Für DIN-A5 mit bspw. 6 mm Rand passt man die Parameter wie folgt an, wobei zusätzlich auch weitere Parameter für die PDF-Metadaten angegeben werden können:

img2pdf -o out.pdf -S A5 -b 6mm *.tif --producer "ScanTailor+Tesseract" --title "Gehrman: Erlebnisse/Erinnerungen, 1903" 

Hinweis: Damit das Kommadozeilenprogramm in jedem Verzeichnis ausgeführt werden kann, muss unter Windows der Verzeichnispfad der Anwendung vollständig aufgerufen oder zur PATH-Umgebungsvariablen hinzugefügt werden.

Alternative: Wer statt eines Kommandozeilentools lieber mit grafischer Benutzeroberfläche arbeitet, kann unter Windows die PDFill PDF Tools nutzen, Menüpunkt 9 Convert Images to PDF.

3. pdfsizeopt

Für möglichst kompakte PDFs können mit pdfsizeopt (Windows-Version: https://github.com/pts/pdfsizeopt/releases) nun die in der soeben erzeugte out.pdf eingebetteten Binärbilder weiter optimiert und in der Größe reduziert werden. Das für monochrome Bilder geeignete JBIG2-Kompressionsverfahren ruft man damit folgendermaßen auf:

pdfsizeopt --use-image-optimizer=jbig2 out.pdf opt.pdf

Alternative: Wer eine Adobe Acrobat Pro Lizenz sein eigen nennt, kann mit der PDF-Optimierung bei Auswahl der JBIG2-Komprimierung ähnliche Ergebnisse erzielen, siehe helpx.adobe.com/de/acrobat/using/optimizing-pdfs-acrobat-pro.html.

4. Ghostscript

Nun wird mittels ghostscript aus der gerade erzeugten opt.pdf oder der inhaltsgleichen out.pdf ein Multipage-TIFF erzeugt. Nötig ist dieser Schritt nur, weil die OCR-Software Tesseract kein PDF einlesen kann. Auch die von ScanTailor erzeugten TIFFs können nicht direkt für die OCR verwendet werden. Wegen des individuell festgelegten DIN-Zielformats und der zusätzlichen Seitenränder wäre der OCR-Layer später nicht deckungsgleich zum PDF. Um aus der vorliegenden out.pdf eine mehrseitige schwarz-weiss-TIFF-Datei zu erzeugen, startet man ghostscript auf der Kommandozeile wie folgt:

gswin64 -dSAFER -dBATCH -dNOPAUSE -sDEVICE=tiffg4 -r600 -sOutputFile=out.tif out.pdf

Dass die in die Texterkennung einfließende out.tif größer als die Ausgangs-PDF ist, muss nicht stören. Nach der OCR im nächsten Schritt wird sie ohnehin wieder gelöscht.

5. Tesseract

Unter Windows holt man sich die OCR-Software Tesseract am besten unter github.com/UB-Mannheim/tesseract/wiki. Das Projektteam OCR-BW an der Unibibliothek Mannheim stellt zugleich eigene Tesseract-Modelle zum Download bereit, die deutlich bessere Ergebnisse bei der Texterkennung von Fraktur liefern als die Standardmodelle frk und script/Fraktur. Von OCR-BW empfohlen wird das Modell frak2021_1.069.traineddata. Installieren lässt es sich ganz leicht, indem man die Datei dem entsprechenden Ordner (Standardpfad in Windows: C:\Program Files\Tesseract-OCR\tessdata) zu den übrigen Schrift- bzw. Sprachmodellen hinzufügt. Für leichtere Aufrufe kürzt man den Dateinamen z.B. in frak.traineddata.

Mit folgendem Kommandozeilenaufruf wird die Erzeugung des OCR-Textlayers text.pdf angestoßen, wobei zu Kontrollzwecken gleich noch eine Textdatei text.txt mit dem erkannten Volltext ausgegeben wird:

tesseract out.tif text -l frak -c textonly_pdf=1 pdf txt
6. pdftk

Zu guter Letzt wird nun mit der Funktion multibackground des PDF-Werkzeugs PDFtk Server der OCR-Textlayer text.pdf in die JBIG2-optimierte opt.pdf eingebunden:

pdftk opt.pdf multibackground text.pdf output ocr.pdf


Jetzt muss nur noch ein wenig aufgeräumt werden. Die in ocr.pdf eingeflossenen Zwischenprodukte out.pdf, opt.pdf, out.tif sowie text.pdf können getrost gelöscht werden. Gleiches gilt für die im Endprodukt enthaltenen schwarz-weiß TIFF-Dateien aus der ScanTailor-Bearbeitung im out-Verzeichnis.

Als Beispiel für ein auf diese Weise prozessiertes PDF stehen hier die Erlebnisse aus meiner 15jährigen Dienstzeit im Geschäftsbezirk einer Generalkommission des DVW-Ehrenmitglieds Eduard Gehrmann von 1903 zum Download bereit. Zum Verfasser dieser Lebenserinnerungen informiert der nächste Blogbeitrag.