Hier werden die Vorüberlegungen und Schritte zur Erstellung eines digitalen Archives notiert. Zunächst als Gedächtnisstütze oder für andere Menschen mit ähnlichen vorhaben.
Inhaltsverzeichnis
Archivsysteme (Stand Ende 2015)
- es existieren viele digitale Findmittel
http://ariadne.uni-greifswald.de/images/Ariadne/index.html - für MV, enthält keine Dokumente
deutsche digitale bibliothek: https://www.archivportal-d.de/
Stadtarchiv Rostock hat teilweise digitalen Index: http://www.stadtarchiv-rostock.findbuch.net/
- vollständig digitaliserte Inhalte von Archiven sind selten
- Vorreiter z.B. Köln nach Einsturz, Crowdsourcing von Urkunden
Linksammlung zum rechtlichen Rahmen
https://irights.info/artikel/rechtspflicht-zur-amnesie-digitale-inhalte-archive-und-urheberrecht/18101 - digitale Langzeitarchivierung
http://www.uni-potsdam.de/emoon/fileadmin/user_upload/eingangsgrafiken/modul_5/Texte/Urheberrecht_Fremde_Materialien_zur_Verfuegung_stellen.pdf - Vervielfältigung und Zugänglichmachung fremder Materialien
http://www.medienscouts-nrw.de/einscannen-von-zeitungsartikeln-3/ - Zeitungsartikel scannen und veröffentlichen
https://www.gesetze-im-internet.de/bundesrecht/urhg/gesamt.pdf - Urheberrechtsgesetz
digitale Archivaliensoftware
Semantic Mediawiki
- Archive die (Semantic) Mediawikis nutzen:
- Einschätzung zur Eignung für Archive:
- verbreitetes Bedienkonzept
- webbasiert
- maschinenlesbar
- Übersichten, Eingabemasken etc. schnell erstellbar
flexible Strukturierung & Abbildung von Datensätzen
- mehrsprachig
- Benutzer_innenverwaltung
verbreitete Import- & Exortfunktionen
- Open Source, keine Herstellerabhängigkeiten
- gängige Administration, kein Spezialwissen notwendig
- große, langlebige Entwicklungscommunity
- Hauptentwicklung durch Institut für Angewandte Informatik und Formale Beschreibungsverfahren (AIFB) Karlsruhe; Weiterentwicklung durch EU- und Firmenprojekte
- Grundlage bildet Mediawiki, dass durch die Wikimedia Foundation begleitet wird
automatisierbar -- https://www.mediawiki.org/wiki/Manual:Pywikibot
erweiterbar -- https://www.mediawiki.org/wiki/Semantic_Bundle
ICARUS
- betreiben:
- monasterium (400.000 mittelalterliche Urkunden)
- sehr gut dokumentiert
unterstützt durch http://coop-project.eu/
- monasterium (400.000 mittelalterliche Urkunden)
Topothek
- Firma die online Portal anbietet
ICA-AtoM
accesstomemory
- (noch) keine deutsche übersetzung
Namenforschung
- nutzen exist DB und typo3 Anbindung - aufwändig
Omeka
- Open Source Plattform für online Sammlungen und Ausstellungen
- vom Roy Rosenzweig Center For History And New Media
- (noch) keine deutsche Übersetzung aber Möglichkeit dafür angelegt
Referenzverwaltung
https://en.wikipedia.org/wiki/Comparison_of_reference_management_software
- Zotero
multiuser Synchronisation - looft
- Export als rdf, csv;
https://github.com/urschrei/pyzotero - Python API
Digitalisierung
vom Original zur Archivalie im Onlinearchiv
- Originalvorlage scannen
- glatt Auflegen, damit die Grundline der Schrift beim Scannen keine Wölbung hat
- hohe Auflösung wählen
- keine oder verlustfreie Kompression
- in offenem Dateiformat speichern
- Scan in ähnliches Format bringen
- Ränder, Werbung und andere Fragmente wegschneiden
- Grundlinie horizontal ausrichten
- ggf. schärfen, Kontrast erhöhen
- Archivalie in Archiv ablegen
- siehe Handbuch (Todo verlinken)
- digitale Archivalie im Softwarearchiv anlegen
- neue Seite im Wiki
- Texterkennung
- automatisierte Texterkennung neuer Archivalien läuft regelmäßig im Hintergrund
- erkannter Fließtext wird als Unterseite zur Archivalie verlinkt
- Indizierung der neuen Inhalte
- Suchmaske für Index
Texterkennung
Welche automatisiert nutzbare Open Source Software gibt es?
https://help.ubuntu.com/community/OCR - guter Überblick
- tesseract
- cuneiform
- scantailor
- unpaper
tesseract
Artikel als jpg speichern und mittels tesseract Text extrahieren:
tesseract artikel.jpg artikel -l deu -psm 1
der Vorgang lässt sich gut parallelisieren:
parallel -j 2 tesseract {} {.} -l deu -psm 1 ::: /pfad/zu/bildern/*.jpg
Dateiformate
für bild+text -> pdf/a
- pdf mit ocr layer erzeugen:
- weitere:
Indizierung + Volltextsuche
http://www.lesbonscomptes.com/recoll/ recoll - Dateien indizieren
https://github.com/koniu/recoll-webui webrecoll - webbasierte Suche (python/bottle)
https://www.mediawiki.org/wiki/Extension:CirrusSearch CirrusSearch - Inhalte im Mediawiki indizieren
Installation & Einrichtung Semantic Mediawiki
Vorbereitung
Debian Jessie aufsetzen -- http://debian.org
notwendige Softwarepakete installieren:
aptitude install git php5-curl php5-cli php5-json php5-readline php5-fpm php5-apcu php5-intl php5-gd php5-mysql mariadb-common mariadb-server nginx-full imagemagick ghostscript poppler-utils
composer installieren
von der Webseite holen und entpacken -- https://getcomposer.org/download/
systemweit nutzbar machen:
mv composer.phar /usr/local/bin/composer
- DNS entsprechend anpassen (hier als Bsp.: das-digitale-archiv.org)
Mediawiki Installation
Mediawiki Software holen, entpacken und verlinken:
cd /var/www/ wget https://releases.wikimedia.org/mediawiki/1.27/mediawiki-1.27.1.tar.gz tar zxf mediawiki-1.27.1.tar.gz ln -s mediawiki-1.27.1 mediawiki chown -R www-data. mediawiki*
* nginx config anlegen:
server { server_name das-digitale-archiv.org; root /var/www/mediawiki; index index.php; client_body_timeout 120; client_max_body_size 300m; location / { try_files $uri $uri/ @rewrite; } location @rewrite { rewrite ^/(.*)$ /index.php?title=$1&$args; } location ^~ /maintenance/ { return 403; } location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; try_files $uri @rewrite; } location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { try_files $uri /index.php; expires max; log_not_found off; } location = /_.gif { expires max; empty_gif; } location ^~ /cache/ { deny all; } location /dumps { root /var/www/mediawiki/local; autoindex on; } }
Dateiuplaodgrenze erhöhen in /etc/php5/fpm/php.ini:
upload_max_filesize = 300M post_max_size = 300M
nginx config aktivieren:
ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/ systemctl restart nginx.service php5-fpm.service
mysql db & user anlegen:
mysql -p > CREATE DATABASE archiv; > CREATE USER 'archiv_user'@'localhost' IDENTIFIED BY 'lk345vlk12asdaijrapogf'; > GRANT ALL PRIVILEGES ON archiv.* TO 'archiv_user'@'localhost'; > FLUSH PRIVILEGES; > exit;
Mediawiki Installationsroutine im Browser aufrufen (http://das-digitale-archiv.org)
- mysql Datenbank, Benutzer und Passwort angegeben
- Einstellungen zu Uploads, Lizenzen usw. treffen
abschließend wird eine Datei LocalSettings.php erzeugt, diese runterladen & ins mediawiki Verzeichnis kopieren (z.B. /var/www/mediawiki/)
- Damit ist die Installation des Mediawikis abgeschlossen.
SMW Installation
Semantic Mediawiki als Erweiterung (extension) des Mediawikis installieren:
cd /var/www/mediawiki/ composer require mediawiki/semantic-media-wiki "~2.4" --update-no-dev php maintenance/update.php
~2.4 entsprechend der gewünschten SMW Version anpassen (2.4 war Ende 2016 die stabile Version)
in LocalSetting.php ergänzen:
# SMW im Mediawiki aktivieren enableSemantics( 'http://das-digitale-archiv.org' ); # Anzeige der Faktenbox steuern $GLOBALS['smwgShowFactbox'] = SMW_FACTBOX_NONEMPTY; # Breadcrumb fuer Kategorien anzeigen $wgUseCategoryBrowser = true; # Hochladen aller Dateitypen erlauben (nicht für öffentliche Wikis empfohlen) $wgEnableUploads = true; $wgCheckFileExtensions = false; $wgStrictFileExtensions = false; $wgVerifyMimeType = false; # PDF Dateien verarbeiten (Vorschau etc.) require_once "$IP/extensions/PdfHandler/PdfHandler.php"; # Inhaltsverzeichnisse und Baumansichten für Kategorien require_once "$IP/extensions/CategoryTree/CategoryTree.php";
nach Änderungen an Konfiguration und Erweiterungen -> Cache leeren:
php maintenance/clearInterwikiCache.php
schauen, ob alles läuft: http://das-digitale-archiv.org/index.php?title=Spezial:Version
Erweiterungen, Nacharbeiten, Optimierungen
Extensions
Funktionale Erweiterungen werden bei Mediawiki als 'extension' installiert. Das bereits installierte Semantic Mediawiki ist so eine Erweiterung für Mediawikis.
https://www.mediawiki.org/wiki/Extension:PdfHandler -- pdf Thumbnails, inline Textsuche
https://www.mediawiki.org/wiki/Extension:CategoryTree -- erzeugt Inhaltsverzeichnisse auch für Kategorien
https://www.mediawiki.org/wiki/Extension:Semantic_Drilldown - Kategorien semantisch durchstöbern
Skins
Das Aussehen des Mediawikis lässt sich mittels 'skins' verändern.
https://www.mediawiki.org/wiki/Skin:Foreground - basiert auf foundation
Einige Buttons erhalten nicht die richtige CSS Klasse. Bis der Patch eingearbeitet ist in mediawiki/includes/EditPage.php ab Zeile 3990 die Buttons um Folgendes erweitern: 'class' => 'button'
https://www.mediawiki.org/wiki/Skin:Tweeki - basiert auf bootstrap
optionale Mediawiki Anpassungen
- automatisierte Aufgaben können je nach Serverauslastung pro Seitenaufruf ablaufen oder per cron
- php maintenance/showJobs.php - welche Aufgaben stehen an
- php maintenance/runJobs.php - Aufgaben direkt abarbeiten
folgende Zeile in der crontab führt die Aufgaben jede Nacht um 1:11 aus: 11 1 * * * php /var/www/mediawiki/maintenance/runJobs.php > /var/log/nginx/mediawikicron.log
- php maintenance/rebuildtextindex.php - Index für Textsuche neu aufbauen
Mediawiki Fehlersuche
Wird statt des Wikis eine "MWException" angezeigt hilft, in der LocalSettings.php folgende Zeile bei der Fehlersuche:
$wgShowExceptionDetails = true;
- nach Änderungen ruhig mal den Cache leeren:
cd /var/www/mediawiki/maintenance php5 clearInterwikiCache.php php5 rebuildLocalisationCache.php --force
Unable to move the new CDB file into place.
- Fehler: "/index.php MWException from line 118 of /data/mediawiki/includes/cache/localisation/LCStoreCDB.php: Unable to move the new CDB file into place."
- Ursache: kein Verzeichnispfad in Config angegeben oder unzureichende Berechtigungen dafür
Lösung siehe: https://www.mediawiki.org/wiki/Topic:T7me7nu8tmlj8dhd
Ausgabe steuern
NOTOC and TOC
NOFACTBOX and SHOWFACTBOX
SMW Kategorien Links aktualisieren
cd /var/www/mediawiki/maintenance php5 refreshLinks.php
elasticsearch als Suchmaschine nutzen
Überblick: https://www.mediawiki.org/wiki/Extension:CirrusSearch
- wir brauchen Elasticsearch, Elastica und Cirrussearch
Elasticsearch
- die Version in Debian/Jessie ist veraltet
Achtung! CirrusSearch kommt nur mit Versionen bis 1.x klar, diese nutzen Java 7
download & installieren:
aptitude install openjdk-7-jre wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.1.deb dpkg -i elasticsearch-1.7.1.deb
- Falls der Server nicht startet, überprüfe ob genug RAM für den Start des Servers frei ist (syslog oder /var/log/elasticsearch/elasticsearch.log).
Elastica
download & install:
cd /tmp/ wget https://extdist.wmflabs.org/dist/extensions/Elastica-REL1_27-4607acf.tar.gz tar zxf /tmp/Elastica-REL1_27-4607acf.tar.gz -C /var/www/mediawiki/extensions/ cd /var/www/mediawiki/extensions/Elastica composer install --no-dev
LocalSettings.php um folgendes ergänzen:
wfLoadExtension( 'Elastica' );
CirrusSearch
LocalSettings.php um folgendes ergänzen:
require_once( "$IP/extensions/CirrusSearch/CirrusSearch.php" ); $wgDisableSearchUpdate = true; $wgCirrusSearchServers = array( 'localhost');
CirrusSearch Config initialisieren:
php extensions/CirrusSearch/maintenance/updateSearchIndexConfig.php
SearchUpdate aktivieren; das war nur zur Initialisierung notwendig:
$wgDisableSearchUpdate = false;
Suchindex erstellen:
php extensions/CirrusSearch/maintenance/forceSearchIndex.php --skipLinks --indexOnSkip php extensions/CirrusSearch/maintenance/forceSearchIndex.php --skipParse
abschließend in LocalSettings.php CirrusSearch als Standardsuche setzen:
$wgSearchType = 'CirrusSearch';
Fehlersuche Elasticsearch
- Wurde der Server gestartet?
netstat -lpn |grep 9200
oder im Browser aufrufen: http://das-digitale-archiv.org:9200
- Ist der Suchindex aktuell?
neu erstellen:
php extensions/CirrusSearch/maintenance/forceSearchIndex.php --skipLinks --indexOnSkip php extensions/CirrusSearch/maintenance/forceSearchIndex.php --skipParse
Datentransfer von Zotero zu SMW
Zotero Export
- Export als CSV Datei (direkt aus Zotero heraus)
SMW Import
via webinterface https://www.mediawiki.org/wiki/Extension:Data_Transfer
- eleganter und vollautomatisiert geht's mit Pywikibot
Pywikibot installieren
https://www.mediawiki.org/wiki/Manual:Pywikibot/Third-party_Wiki_Quick_Start
- grob die notwendigen Schritte:
- pywikibot-core installieren
- user-config.py anlegen und anpassen
- family
- usernames
- family.py Datei generieren
- testen
alle Schritte im Detail:
aptitude install python-pip cython libmysqlclient-dev wget http://tools.wmflabs.org/pywikibot/core_stable.tar.gz tar zxf core_stable.tar.gz cd core_stable pip install -r requirements.txt python generate_family_file.py http://das-digitale-archiv.org archiv python3 pwb.py login python3 pwb.py basic -v -dry -page:Hauptseite
- fehler bei generate_family
- das Script läuft zum einen nicht mit python3
und es braucht für diesen Schritt Leserechte im Wiki; teporär freigeben in LocalSettings.php
$wgGroupPermissions['*']['read'] = true;
- fehler bei generate_family
Pywikibot nutzen
Für Pywikibot gibt es ein Fülle an Scripte für spezielle Anwendungsfälle. Darin zunächst stöbern kann später vlt. eigene Programierarbeit sparen helfen zumindest gibt es einen guten Überblick in die API. Die Scripte liegen im pywikibot Verzeichnis unter scripts
- python3 pwb.py scripts/login.py -- Bot am Wiki anmelden
- python3 pwb.py login -- Bot anmelden, wie oben nur weniger tippen
- ... category tree -- Baumansicht von Kategorien
- add, move, remove, ...
- ... checkimage -- Dateianhänge checken (z.B. auf Lizenz, Template)
... delete -page:SandKasten -- Seite SandKasten löschen
- ... editarticle -- Wikiseiten mit deinem lokalen Lieblingseditor bearbeiten
- ... isbn -- Fehler bei ISBN Nummern erkennen, Format ändern
- ... movepages
- ... pagefromfile -- Wikiseiten aus einer Datei anlegen
- ... replace -- Inhalte ersetzen, oder auch ISBNs reparieren
- ... upload -- Dateien anhängen
weitere Doku zu Pywikibot
https://doc.wikimedia.org/pywikibot/api_ref/pywikibot.html#module-pywikibot.page
- pywikibot/scripts/basic.py bietet einen guten Startpunkt für eigene Scripte
Pywikibot beschleunigen
Der Bot geht recht sparsam mit den Ressourcen des Wikiservers um. Zum Testen und für große Importe sind die Wartezeiten zwischen den Seitenaufrufen unnötig und lassen sich in der Datei user-config.py durch folgende Zeile minimieren:
minthrottle = 0 maxlag = 0