<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Infrastruktur | museum-digital: blog</title>
	<atom:link href="https://blog.museum-digital.org/de/category/infrastruktur/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.museum-digital.org</link>
	<description>A blog on museum-digital and the broader digitization of museum work.</description>
	<lastBuildDate>Tue, 17 Mar 2026 13:30:25 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://blog.museum-digital.org/wp-content/uploads/2020/01/cropped-mdlogo-code-512px-32x32.png</url>
	<title>Infrastruktur | museum-digital: blog</title>
	<link>https://blog.museum-digital.org</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="search" type="application/opensearchdescription+xml" title="Search museum-digital: blog" href="https://blog.museum-digital.org/wp-json/opensearch/1.1/document" />	<item>
		<title>Gemeinfreie Nachschlagewerke verfügbarer machen: resources.museum-digital.org</title>
		<link>https://blog.museum-digital.org/de/2026/03/17/gemeinfreie-nachschlagewerke-verfuegbarer-machen-resources-museum-digital-org/</link>
					<comments>https://blog.museum-digital.org/de/2026/03/17/gemeinfreie-nachschlagewerke-verfuegbarer-machen-resources-museum-digital-org/#respond</comments>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Tue, 17 Mar 2026 13:22:07 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Digitalisierung]]></category>
		<category><![CDATA[Infrastruktur]]></category>
		<category><![CDATA[Technik/Design]]></category>
		<category><![CDATA[Terminologie]]></category>
		<category><![CDATA[Gemeinfreie Werke]]></category>
		<category><![CDATA[Quellen]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=4635</guid>

					<description><![CDATA[Ein kleines Nebenprojekt soll gemeinfreie Nachschlagewerke einfacher verfügbar machen.]]></description>
										<content:encoded><![CDATA[
<p>Über die letzten Jahrzehnte wurden abertausende gemeinfreie Werke von Bibliotheken und Initiativen wie dem <a href="https://archive.org/">Internet Archive</a> und Google Books gescannt und im Netz verfügbar gemacht. Das ist an sich eine Arbeit von unschätzbarem Gewinn.</p>



<p>Etwas geschmälert wird der Nutzen leider dann doch oft durch die schlechte tatsächliche Zugänglichkeit der Inhalte. Selbst wenn die Quellen frei erreichbar sind, bedeutet die oft schlechte Texterkennung, dass sie nicht systematisch durchsuchbar sind. Im kleinen ist das verkraftbar: Suche ich in von &#8211; je band &#8211; immerhin meist drei parallel verfügbaren Ausgaben von Naglers Künstlerlexikon nach einem Eintrag, ist die Chance hoch, dass ich ihn nur beim manuellen Durchblättern finde. Durch den alphabetischen Aufbau ist das leicht getan.</p>



<p>Wenn ich aber die Quelle noch nicht kenne, bzw. nicht weiß, ob ich bei Nagler, oder z.B. in einem Lexikon speziell nur für Kupferstecher suchen soll, dann summiert sich die Arbeit. Abhilfe schüfe eine bessere OCR und eine Aufbereitung in einer für Suchmaschinen gut lesbaren Form. Und was können Suchmaschinen besser lesen als Webseiten?</p>



<p>Also: <a href="https://resources.museum-digital.org/">resources.museum-digital.org</a>!</p>



<h2 class="wp-block-heading">Motivation: Vokabulararbeit</h2>



<p>Ein zentraler Bestandteil der Arbeit im Hintergrund von museum-digital ist die Vokabulararbeit. Die eindeutige Bestimmung, in-Beziehung-Setzung und Anreicherung von Begriffen zu Akteuren, Orten, Schlagworten / Konzepten und Zeiten. Entsprechend oft wünscht man sich &#8211; besonders für weniger bekannte Entitäten &#8211; Nachschlagewerke. Und umso hilfreicher sind einfach und bedenkenlos zugängliche und nachnutzbare, gemeinfreie Nachschlagewerke. Diese haben in ihrer Masse zudem oft den Vorteil, das aus heutiger Sicht weniger Relevante Einträge aufgeführt werden, die zur Zeit der Veröffentlichung noch als der Nennung wert eingeschätzt wurden.</p>



<p>Dazu kommt, dass gerade in der Vokabulararbeit oft nur wenig Kontext vorhanden ist. Die beste Kenntnis oder zumindest den besten Zugang zu den Objekten haben schließlich die Museen und nicht entfernt und meist ehrenamtlich arbeitende Vokabular-Redakteure. Umso nützlicher wäre es, Inhalte aus historischen Nachschlagewerken in der Breite durchsuchen zu können, ohne schon vorher wissen zu müssen, welches Nachschlagewerk man nun heranziehen muss.</p>



<p>Es ist also in unserem unbedingten Interesse, mehr der eigentlich schon verfügbaren Quellen in der Breite schnell durchsuchen zu können. Am besten einfach mit Google (oder der Suchmaschine der Wahl). Dabei ist die Menge der besser verfügbaren Nachschlagewerke im Zweifelsfall wichtiger als 100%-ige Korrektheit &#8211; diese lässt sich, sobald man einen passenden Eintrag gefunden hat immer noch durch das zurateziehen der Scans herstellen.</p>



<h2 class="wp-block-heading">resources.museum-digital.org</h2>



<p>Als kleines Nebenprojekt im museum-digital-Kosmos soll <a href="https://resources.museum-digital.org/">resources.museum-digital.org</a> nun also dazu dienen, historische Nachschlagewerke durch eine neu durchgeführte Texterkennung mit der heute verfügbaren Technik und eine Präsentation nach Web-Logik verfügbarer zu machen. Den Aufschlag machen dabei die 22 Bände vom schon erwähnten <em>Neuen Allgemeinen Künstlerlexikon</em> von <a href="https://de.wikipedia.org/wiki/Georg_Kaspar_Nagler">Georg Kaspar Nagler</a>. Die Grundlage bildeten dabei die im Internet Archive durch verschiedene Bibliotheken verfügbar gemachten und auf der Seite verlinkten Scans der Bände.</p>



<p>Wichtig dabei war von Anfang an, dass eine rein automatische Bearbeitung gut genuge Ergebnisse für eine Präsentation bieten sollte, und das die Präsentation der fast zwangsläufig imperfekten, automatisch generierten Daten einerseits an sich schon gewinnbringend und andererseits manuell verbesserbar sein sollte. Dazu war und bleibt es wichtig, die rein maschinell erstellten Transkriptionen als eben solche zu Kennzeichnen.</p>



<h3 class="wp-block-heading">Ansatz: Hin zur neuerlich durchgeführten Texterkennung</h3>



<p>Um halbwegs leserliche und verwertbare Textvorlagen für die Erstellung der Seite zu bekommen, versuchten wir zuerst, mit der bestehenden OCR zu arbeiten. Diese war im Falle Naglers oft gut genug, um die grobe Struktur des Werkes abzubilden, beinhaltete aber soviele Fehler, dass schon eine regelbasierte Aufspaltung der Einträge (eigentlich im konkreten Fall recht leicht, da fast jeder Eintrag mit &#8222;&lt;Nachname&gt;, &lt;Vorname&gt;,&#8220; anfängt) deutlich unzuverlässig wurde. Der Versuch eine LLM-basierten Korrektur der OCR half etwas, aber nicht in einem zufriedenstellenden Maße.</p>



<h3 class="wp-block-heading">Vorgehen: Neue OCR</h3>



<p>Stattdessen sollte es also eine gänzlich neue OCR sein. Glücklicherweise bieten die Uploads im Internet Archive neben den PDFs wenig komprimierte <code>.jp2</code>-Versionen der einzelnen Seiten eines Buches zum Download an, die eine fast ideale Basis für das weitere Vorgehen boten. Für eine bessere Interoperabilät mit verschiedenen Programmen wandelten wir diese ohne weitere Kompression in <code>.png</code>-Dateien.</p>



<p>Grob sollten die einzelnen Scans nun mit <a href="https://github.com/tesseract-ocr">Tesseract</a> transkribiert und in der Folge mit dem multimodalen LLM Qwen3-VL, später Qwen3.5, gegengeprüft werden.</p>



<p>Es ist &#8211; zumindest in interessierten Kreisen &#8211; fast schon eine Binsenweisheit, dass Tesseract mit entsprechend vorbereiteten Bilddateien deutlich besser umgehen kann als mit anderen. Idealerweise sollten Scans mindestens 600 DPI haben (bzw. eine entsprechende Pixelzahl bieten &#8211; im Schlimmstfall kann selbst ein naives Hochskalieren der Bilder zu besseren Ergebnissen führen) und Schwarzweiß oder in Graustufen gehalten sein. Entsprechend werden die Scans in einer Arbeitskopie den Vorgaben angepasst und dann mit Tesseract OCR-ed.</p>



<p>Im nächsten Arbeitsschritt werden einzelnen Scan-Seiten gemeinsam mit den Ergebnissen von Tesseract als Vorlage an das KI-Modell übergeben.</p>



<p>Wichtige Erkenntnisse dabei gibt es zweierlei: Besonders bei unsauber gescannten Seiten bietet Qwen3.5 oft bessere Ergebnisse als ein nicht nachtrainiertes Tesseract. Es passiert allerdings relativ häufig, dass ganze Seitenbereiche (z.B. Absätze) einfach &#8222;übersehen&#8220; werden. Das lässt sich durch die Mitgabe auch einer mit Schreib- oder Lesefehlern gespickten Vorlage umgehen. Zweitens erziehlt Qwen3.5 bessere Ergebnisse mit den nicht nachbearbeiteten Bilddateien (mehrfarbig, nicht verstärkter Kontrast / wenig Tonwertkorrektur, etc.) als mit den für Tesseract optimierten.</p>



<p>In diesem Arbeitsschritt kam es hin- und wieder zu deutlichen Zeitüberschreibungen. Wo ein üblicher Scan vielleicht 5 Sekunden brauchte, brauchten einzelne mehrere Stunden. Hintergrund waren besonders unsaubere Scans (bzw. Nachbearbeitungen beim ursprünglichen Ansatz, Qwen3.5 mit den nachbearbeiteten Scans arbeiten zu lassen): Hier ergab die OCR mit Tesseract schon nur ein Durcheinander, und auch mit Qwen3.5 konnten keine Ergebnisse erzielt werden. Abhilfe schaffte das Einführen eines Timeouts. Nach zwei Minuten wird die Abfrage abgebrochen und Qwen3.5 um eine selbstständige OCR der Seite angefragt. Ergibt auch das keine Ergebnisse, wird die Seite übergangen.</p>



<p>Die so erstellte, maschinell nachgeprüfte OCR der Einzelseiten wird nun mit einem Script in eine <code>JSON</code>-Datei zusammengefasst und in die einzelnen Einträge aufgespalten. Die Erkennung von einzelnen Einträgen ist dabei kontextabhängig. Im Falle von Nagler war der Beginn der Einträge durch die Nennung der Namen verhältnismäßig einfach durchführbar.</p>



<h3 class="wp-block-heading">Mehr Sinn erkennen</h3>



<p>Eine gute Webseite präsentiert nicht nur Daten, sondern verlinkt diese intern wie extern. Je mehr Sinn also (automatisch) aus den einzelnen Einträgen gezogen werden kann, desto besser lassen sich die Einträge präsentieren &#8211; und später suchen.</p>



<p>Statt also die einzelnen Einträge einfach so im Web wiederzugeben, werden sie erst einmal einer <a href="https://en.wikipedia.org/wiki/Named-entity_recognition">Named Entity Recognition</a> mit <a href="https://github.com/fastino-ai/GLiNER2">GLiNER2</a> unterzogen, um im Eintrag genannte Personen, Orte, Zeiten, Berufe und Kunstrichtungen zu erkennen.</p>



<p>Um falsch erkannte oder nach Ansicht von museum-digital kategorisch falsch zugeordnete Entitätsnamen (z.B. die Person &#8222;Prinzessin&#8220;) zu filtern, werden die so erkannten Begriffe mit der <a href="https://openrefine.org/docs/technical-reference/reconciliation-api">Reconciliation API</a> <a href="https://blog.museum-digital.org/2024/07/03/reconciliation-apis-arrive-to-museum-digital/">von md:term</a> abgeglichen. In der Folge werden nur solche Begriffe als verknüpfte Entitäten weiterverwertet, die bei museum-digital schon bekannt sind.</p>



<p>Zuletzt werden zumindest in Naglers Fall auch die Titel der Einträge reconciled. In diesem Fall gegen Wikidata, da dieses einerseits mehr der Namen kennen dürfte, und die verfügbaren Reconciliation APIs andererseits weniger kritisch mit der Verfügbarkeit oder Abwesenheit von Lebensdaten umgehen. Sollte Wikidata einen Treffer abwerfen, wird über die entsprechende <a href="https://term.museum-digital.de/beacon/persinst/gnd">BEACON</a>-Datei nach demselben Eintrag in museum-digital gesucht.</p>



<h3 class="wp-block-heading">Verfügbar machen</h3>



<p>Die so gewonnenen Daten werden in den letzten Arbeitsschritten in einfach menschlich bearbeitbare Markdown-Dateien überführt, aus denen schlussendlich mithilfe des Seiten-Generators <a href="https://www.getzola.org/">Zola</a> eine Webseite generiert wird. Die verschiedenen Zwischenschritte, die Scripte zur Named Entity Recognition und Reconciliation, sowie die Markdowndateien finden sich zur freien Nachnutzung und für Korrekturen <a href="https://codeberg.org/museum-digital/resources.museum-digital.org">auf Codeberg</a>.</p>



<p>Eine Suche hat <a href="https://codeberg.org/museum-digital/resources.museum-digital.org">resources.museum-digital.org</a> selbst nicht. Gerade in Anbetracht der Schwierigkeiten, die wir in den letzten Monaten mit Serverauslastung und Resourcenverbrauch hatten, soll die Seite im laufenden Betrieb keine erhöhten zusätzlichen Kosten oder Aufwände benötigen &#8211; und ohne Suchfunktion können wir sie trotz ihrer Größe sehr einfach und quasi ohne Wartungsaufwand als statische Seite hosten. Andererseits ist das Ziel ja gerade eine Verbesserung der Auffindbarkeit durch Suchmaschinen, wofür es eine Suche als Bestandteil der Webseite selbst fast nicht mehr bräuchte.</p>



<h2 class="wp-block-heading">Fazit</h2>



<p>Auch wenn das Ausprobieren verschiedener Ansätze einige Zeit gebraucht hat, haben wir jetzt einen Workflow, um historische Nachschlagewerke fast ohne menschlichen Aufwand deutlich besser durchsuchbar verfügbar machen können. Alle eingesetzten KI-Tools laufen lokal, verursachen also außer dem Strom keine weiteren Kosten. Die Ergebnisse können sich &#8211; gemessen an Aufwand und Erwartung &#8211; sehen lassen. Zum Start macht die Seite 33000 Einträge aus Naglers Künstlerlexikon besser verfügbar.</p>



<p>Das Nachschlagen &#8211; und das Lob für das Scannen! &#8211; der tatsächlichen Quellen bleibt dabei unerlässlich. Ensprechend verlinkt jede Unterseite von resources.museum-digital.org die je relevante Quelle (d.h. auch den konkreten Scan) prominent.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="640" src="https://blog.museum-digital.org/wp-content/uploads/2026/03/Screenshot_resources-museum-digital.org_-1024x640.webp" alt="Screenshot eines Eintrags aus resources.museum-digital.org." class="wp-image-4639" srcset="https://blog.museum-digital.org/wp-content/uploads/2026/03/Screenshot_resources-museum-digital.org_-1024x640.webp 1024w, https://blog.museum-digital.org/wp-content/uploads/2026/03/Screenshot_resources-museum-digital.org_-300x188.webp 300w, https://blog.museum-digital.org/wp-content/uploads/2026/03/Screenshot_resources-museum-digital.org_-1536x960.webp 1536w, https://blog.museum-digital.org/wp-content/uploads/2026/03/Screenshot_resources-museum-digital.org_.webp 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Screenshot des Eintrags zu Johann Baptist Cacchi in resources.museum-digital.org.</figcaption></figure>



<h2 class="wp-block-heading">Danksagung</h2>



<p>Danke an <a href="https://orcid.org/0009-0008-4184-5217">Felix Schenke</a>, dessen Berichte über seine eigenen Arbeiten an der OCR von Handschriften viele Ansätze aufzeigten, die im Rahmen der Arbeit an resources.museum-digital.org hilfreich waren.</p>



<div class="wp-block-cgb-cc-by message-body" style="background-color:white;color:black"><img decoding="async" src="https://blog.museum-digital.org/wp-content/plugins/creative-commons/includes/images/by.png" alt="CC" width="88" height="31"/><p><span class="cc-cgb-name">This content</span> is licensed under a <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International license.</a> <span class="cc-cgb-text"></span></p></div>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.museum-digital.org/de/2026/03/17/gemeinfreie-nachschlagewerke-verfuegbarer-machen-resources-museum-digital-org/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-thumbnail><url>https://blog.museum-digital.org/wp-content/uploads/2026/03/blog_header_bookshelf.webp</url><width>600</width><height>411</height></post-thumbnail>	</item>
		<item>
		<title>Maintenance / Outage: Search Database not Available for Today</title>
		<link>https://blog.museum-digital.org/de/2025/06/11/maintenance-outage-search-database-not-available-for-today-2/</link>
					<comments>https://blog.museum-digital.org/de/2025/06/11/maintenance-outage-search-database-not-available-for-today-2/#respond</comments>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Wed, 11 Jun 2025 15:55:18 +0000</pubDate>
				<category><![CDATA[Infrastruktur]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=4396</guid>

					<description><![CDATA[Some minutes ago, our search server crashed. To bring everything back to normal, we will have to re-index, which will take a few hours. As that is being done, most of the frontend will remain operational without issue. musdb will, depending on the instance, be unavailable into the night.]]></description>
										<content:encoded><![CDATA[
<p>Some minutes ago, our search server crashed. To bring everything back to normal, we will have to re-index, which will take a few hours. As that is being done, most of the frontend will remain operational without issue. musdb will, depending on the instance, be unavailable into the night.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.museum-digital.org/de/2025/06/11/maintenance-outage-search-database-not-available-for-today-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Volltextsuche oder Buchstaben-Suche nach Inventarnummern in musdb?</title>
		<link>https://blog.museum-digital.org/de/2025/03/30/volltextsuche-oder-buchstaben-suche-nach-inventarnummern-in-musdb/</link>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Sun, 30 Mar 2025 00:34:27 +0000</pubDate>
				<category><![CDATA[Infrastruktur]]></category>
		<category><![CDATA[musdb]]></category>
		<category><![CDATA[Technik/Design]]></category>
		<category><![CDATA[Neue Features]]></category>
		<category><![CDATA[Objektsuche (musdb)]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=4375</guid>

					<description><![CDATA[Sucht man nach &#8222;rennen&#8220;, möchte man Einträge (Objektbeschreibungen, Blog-Posts, etc.) finden, die Begriffe wie &#8222;gerannt&#8220; oder &#8222;[ich] renne&#8220; enthalten. Sucht man nach einer Inventarnummer &#8222;*1&#8220;, möchte man alle Inventarnummern erhalten, die exakt auf die Zahl 1 enden. Im ersten Fall geht es um eine Volltextsuche, idealerweise unter Berücksichtigung von Flexionen, Kofferworten, etc. Die exakten Buchstaben <a href="https://blog.museum-digital.org/de/2025/03/30/volltextsuche-oder-buchstaben-suche-nach-inventarnummern-in-musdb/" class="more-link">...</a>]]></description>
										<content:encoded><![CDATA[
<p>Sucht man nach &#8222;rennen&#8220;, möchte man Einträge (Objektbeschreibungen, Blog-Posts, etc.) finden, die Begriffe wie &#8222;gerannt&#8220; oder &#8222;[ich] renne&#8220; enthalten. Sucht man nach einer Inventarnummer &#8222;*1&#8220;, möchte man alle Inventarnummern erhalten, die exakt auf die Zahl 1 enden. Im ersten Fall geht es um eine Volltextsuche, idealerweise unter Berücksichtigung von Flexionen, Kofferworten, etc. Die exakten Buchstaben sind untergeordnet &#8211; &#8222;renne&#8220; beinhaltet nicht &#8222;rennen, und ist trotzdem ein guter Treffer. In Beispiel der Inventarnummer geht es tatsächlich nur um die Buchstaben. Das Einbringen eines Verständnisses von Flexionen wäre hier fehl am Platz. Abstrakt ausgedrückt: Objektbeschreibungen sind Zeichenkombinationen und Text &#8211; und besonders als Text interessant. Inventarnummern sind Zeichenketten, und als solche interessant.</p>



<p>Um das Jahr 2021 haben wir in musdb und dem Frontend von museum-digital die Objekt-Suchfunktion grundlegend neu implementiert, um eine erweiterte Suche über (fast) alle relevanten Felder hinweg, die beliebig kombinierbar ist und z.B. auch ODER- oder NICHT-Suchen erlaubt, zu ermöglichen. Möglich wurde das durch den Einsatz eines dedizierten Suchservers (<a href="https://manticoresearch.com/">Manticore</a>).</p>



<p>Während eine traditionelle relationale Datenbank (hier MySQL) darauf ausgerichtet ist, sehr effektiv erwartbare Abfragen, für die vorher ein Index angelegt wurde, zu beantworten, erlaubt der Suchserver eine bessere Performanz beim freien Kombinieren. Dazu bietet er erweiterte Features vor allem im Bereich der Volltextsuche (etwa eine Berücksichtigung von Flexionen). Andererseits ist er gezielt <em>nicht</em> auf Buchstaben-Suchen ausgerichtet. Ein allgemein unbedingt gewünschter Nebeneffekt der Nutzung von Manticore war also, das alle Suchen in Freitextfeldern zu Volltextsuchen wurden.</p>



<p>Probleme macht das aber eben bei Feldern, die eigentlich keine herkömmlichen &#8222;Text&#8220;-Felder sind, sondern nach einer (institutions-spezifisch) formalisierten Regel ausgefüllte Buchstabenkombinationen abbilden. Konkret: Standortangaben und Inventarnummern.</p>



<p>Im Falle der Standorte bietet das seitdem eingeführte Modul zur Raumverwaltung eine ohnehin bessere Alternative zu den herkömmlichen Freitextfeldern für Objekt-Standorte. Verknüpft man ein Objekt mit einem &#8222;Raum&#8220;, lassen sich hierarchische Suchen durchführen, Sensordaten mit den Objektdaten zusammenführen, man erhält ein detailliertes Log der Standortverschiebungen &#8211; und man hat durch die kontrollierte Liste von Räumen eine Sicherheit, dass nicht durch Tippfehler falsche Zuordnungen geschehen. Ein Migrationstool ist über das Dashboard in musdb verfügbar. Es spricht also eigentlich nichts mehr für die alternative Benutzung der herkömmlichen Standortfehler. Auch wenn dort eine Buchstabensuche Sinn machen würde, ist diese bei den eigentlich eh mittlerweile obsolet gewordenen Feldern somit leicht umgehbar.</p>



<p>Im Fall der Inventarnummern gibt es andererseits keinen solchen Ausweg: Eine Buchstabensuche wird unbedingt benötigt, und fehlte bis zu diesem Wochenende.</p>



<h2 class="wp-block-heading">Die Grundlagen legen: Von MySQL zu Manticore und (ein wenig) zurück</h2>



<p>Der Einsatz von Manticore war die Basis für die Implementation der neuen, verbesserten Suchfunktion. Mit der Zunahme von Abfragen zeigte sich allerdings ein weiterer Vorteil von MySQL: Seine bessere Stabilität. Solange Abfragen im Kernbereich von MySQL liegen (Suchen über Indexe), ist MySQL stabiler und annähernd ähnlich performant wie Manticore. Als es zeitweise zu Stabilitätsproblemen kam wurden die Suchfunktionen erweitert, um je nach Anwendungsfall mit beiden &#8211; MySQL und Manticore &#8211; als Backend arbeiten zu können.</p>



<p>Das war relativ leicht möglich, weil alle Suchabfragen von Manticore beantwortet werden konnten, während MySQL viele, aber nicht alle beantworten kann. Die grobe Logik ist also wie folgt: Wird eine Suchabfragen an den Server gestellt, wird jeder Parameter eingeordnet und in eine Abfragekomponente für Manticore und &#8211; soweit möglich &#8211; für MySQL übersetzt. Können alle Abfrageparameter mit MySQL beantwortet werden, wird die Frage direkt an die Datenbank gestellt. Andernfalls kommt Manticore zum Einsatz.</p>



<p>In der Praxis:</p>



<ul class="wp-block-list">
<li>Lautet die Abfrage: Objekte zum Schlagwort &#8222;Helm&#8220; mit Bezug zum Ort &#8222;Berlin&#8220;, dann kann die Abfrage sowohl von MySQL als auch von Manticore beantwortet werden. MySQL wird bevorzugt.</li>



<li>Lautet die Abfrage: Objektdatensätze, die irgendwo den Text &#8222;Helme&#8220; erwähnen, mit Bezug zu &#8222;Berlin&#8220;, dann kann MySQL die Abfrage nicht bedienen. Also kommt Manticore zum Einsatz.</li>
</ul>



<p>So blieben alle Abfrageparameter miteinander kombinierbar, während dem Kontext entsprechend das effektivere Backend gewählt wurde.</p>



<h2 class="wp-block-heading">Entgegen der Logik <em>oder</em> Umgang mit Unvollkommenheit</h2>



<p><strong>Aufgrund ihrer Bedeutung für die Arbeit in vielen Museen haben wir nun Buchstabensuchen nach Inventarnummern wieder implementiert.</strong> Aber Buchstabensuchen nach Inventarnummern brechen die bestehende Logik und Kombinierbarbeit:</p>



<ul class="wp-block-list">
<li>Lautet die Abfrage: Objekte zum Schlagwort &#8222;Helm&#8220;, deren Inventarnummer auf &#8222;1&#8220; endet, dann kann die Abfrage nur von MySQL beantwortet werden. MySQL wird genutzt.</li>



<li>Lautet die Abfrage: Objektdatensätze, die irgendwo den Text &#8222;Helme&#8220; erwähnen, und deren Inventarnummer auf &#8222;1&#8220; endet, dann nur Manticore die Volltextsuche nach &#8222;Helme&#8220; sauber und in der erwarteten Form (als Volltextsuche) beantworten, während nur MySQL die Buchstabensuche nach der Inventarnummer durchführen kann. Die Suche kann logisch nicht (sauber) durchgeführt werden.</li>
</ul>



<p>So gut es ist, dass die wichtige Suchoption bei Inventarnummern zurück ist, musste also ein Umgang mit dieser jetzt unvollständigen Kombinierbarkeit gefunden werden. Vorstellbar wären zwei Optionen gewesen.</p>



<p>Die naheliegendere Form wäre es gewesen, alle Erweiterung einer Bestehenden Suche nach Inventarnummern um Volltextsuchen zu verbieten. In diesem Fall hätten die Benutzer möglichst schlicht nie zum problematischen Ausnahmefall gelangen können. Andererseits hätten die plötzlich fehlenden oder ausgegrauten Erweiterungsoptionen zu Verwirrung geführt. Schlimmer: Im eh schon sehr dichten Such-Interface von musdb fehlt ein geeigneter Platz, um zu dokumentieren, warum die Erweiterung in diesem spezifischen Fall auf einmal unmöglich ist. Die Verwirrung hätte also auch nicht sinnvoll aufgelöst werden können.</p>



<p>Entsprechend kommt nun die Alternative zum Einsatz: Kombinieren User die Suche nach Inventarnummern mit einer Volltextsuche, dann wird aus der Buchstabensuche nach der Inventarnummer eine Volltextsuche und es erscheint eine Warnung &#8211; auf jeder Seite der Paginierung &#8211; dass die gerade durchgeführte kombinierte Suche nicht die erwarteten Ergebnisse liefern wird und vermieden werden sollte. Das mag unsauber wirken, ist aber transparent, und ermöglicht den Suchenden die Möglichkeit, alternative Zugänge zu finden. Naheliegend wäre etwa, die Ergebnisse der Buchstabensuche nach Inventarnummer in eine Merkliste zu überführen und dann in dieser Merkliste weiterzusuchen.</p>



<div class="wp-block-cgb-cc-by message-body" style="background-color:white;color:black"><img decoding="async" src="https://blog.museum-digital.org/wp-content/plugins/creative-commons/includes/images/by.png" alt="CC" width="88" height="31"/><p><span class="cc-cgb-name">This content</span> is licensed under a <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International license.</a> <span class="cc-cgb-text"></span></p></div>
]]></content:encoded>
					
		
		
		<post-thumbnail><url>https://blog.museum-digital.org/wp-content/uploads/2025/03/ai-detective-warning-ukiyo-e-scaled.webp</url><width>600</width><height>343</height></post-thumbnail>	</item>
		<item>
		<title>Ein kleines Tool zur Konkordanzprüfung bei Importen</title>
		<link>https://blog.museum-digital.org/de/2025/01/23/ein-kleines-tool-zur-konkordanzpruefung-bei-importen/</link>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Thu, 23 Jan 2025 15:16:16 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Importer]]></category>
		<category><![CDATA[Infrastruktur]]></category>
		<category><![CDATA[Technik/Design]]></category>
		<category><![CDATA[Importe]]></category>
		<category><![CDATA[Neue Features]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=4279</guid>

					<description><![CDATA[Wenn man einen Import in museum-digital durchführt – insbesondere bei der Migration von Inventarisierungsdaten – besteht die Möglichkeit, dass Fehler aufgrund nicht übereinstimmender Einträge auftreten. Das Importtool stellt fest, dass versucht wurde, einen bisher noch unbekannten Wert in ein kontrolliertes Feld in Musdb zu importieren. Häufig treten Probleme etwa bei Akteursrollen und Eingangstypen auf. Ein <a href="https://blog.museum-digital.org/de/2025/01/23/ein-kleines-tool-zur-konkordanzpruefung-bei-importen/" class="more-link">...</a>]]></description>
										<content:encoded><![CDATA[
<p>Wenn man einen Import in museum-digital durchführt – insbesondere bei der Migration von Inventarisierungsdaten – besteht die Möglichkeit, dass Fehler aufgrund nicht übereinstimmender Einträge auftreten. Das Importtool stellt fest, dass versucht wurde, einen bisher noch unbekannten Wert in ein kontrolliertes Feld in Musdb zu importieren. Häufig treten Probleme etwa bei Akteursrollen und Eingangstypen auf.</p>



<p>Ein Beispiel: Die bisherige Datenbank eines Museums verwendete Akteurrollen statt einer Ereignisstruktur um auszudrücken wer ein Objekt erstellt hat. Das Museum hat entsprechend eingetragen, dass ein gegebenes Objekt Objekt einen verknüpften Akteur X hat, der als „Haupthersteller“ mit dem Objekt verknüpft ist, und eine verknüpfte Zeit Y, die als „Herstellungszeit“ gekennzeichnet ist. Beim Import werden diese Rollen („Haupthersteller“ und „Herstellungszeit“) dann in die Ereignistypen von museuem-digital übersetzt, um ein Ereignis zu bilden: Das Objekt wurde von Akteur X zum Zeitpunkt Y hergestellt. Dies funktioniert, weil die Begriffe „Haupthersteller“ und „Herstellungszeit“ dem Ereignistyp &#8222;Herstellung&#8220; zugeordnet sind.</p>



<p>Wenn einem Begriff noch kein entsprechender Wert einer kontrollierten Liste in museum-digital zugeordnet ist, bricht der Importer den Import beim ersten Auftauchen des Begriffs in einem der kontrollierten Felder schlicht ab. Einerseits ist das gut, um unnötigen Ressourcenaufwand für einen Import der ohnehin nicht abgeschlossen werden kann, zu sparen. Andererseits ist es mühsam. Noch nicht zugeordnete Einträge erkennt man so immer nur einzeln.</p>



<h2 class="wp-block-heading">Ein kleines neues Tool</h2>



<p>Ein kleines neues Tool, <a href="https://concordance.museum-digital.org/">concordance.museum-digital.org</a>, macht den Vorgang etwas weniger mühsam. Benutzer können alle Importdaten eines bestimmten Felds (z. B. der Schauspielerrollen) zeilenweise hochladen und prüfen, ob sie bereits in den Konkordanzlisten zugeordnet wurden oder nicht.</p>



<p>Für bisher nicht zugeordnete Einträge besteht nun die Möglichkeit, diese über die Oberfläche des Werkzeugs einem der bei museum-digital erlaubten Feldinhalte zuzuordnen und schlussendlich die Codezeilen zu generieren, die für eine Aufnahme in die Konkordanzlisten nötig sind.</p>



<p>Während das einfache Überprüfen und Erweitern der relevanten <a href="https://gitea.armuli.eu/museum-digital/MDImporterConcordanceLists">Open-Source-Listen</a> auch für nicht technisch versierte Nutzer trivial sein sollte, ist dieser Weg sicherlich bequemer. Wichtig ist auch, dass der Import nicht mehr mehrmals ausgeführt werden muss, bis keine Fehler mehr auftreten, die durch nicht übereinstimmende Einträge verursacht werden. Und, nun ja, es ist sicherlich auch bequemer, Werte in normaler menschlicher Sprache abzugleichen, als die internen IDs der Zielwerte zur Bestimmung von Entsprechungen zu nutzen.</p>



<p>Der Code des Konkordanz-Prüfers kann, MIT-lizensiert, <a href="https://gitea.armuli.eu/museum-digital/concordance-checker">hier</a> gefunden werden.</p>



<p></p>
]]></content:encoded>
					
		
		
		<post-thumbnail><url>https://blog.museum-digital.org/wp-content/uploads/2025/01/20250123_Concordance_checker_de.avif</url><width>600</width><height>393</height></post-thumbnail>	</item>
		<item>
		<title>Ein Kalender heißt feste Termine</title>
		<link>https://blog.museum-digital.org/de/2023/03/14/ein-kalender-heisst-feste-termine/</link>
					<comments>https://blog.museum-digital.org/de/2023/03/14/ein-kalender-heisst-feste-termine/#respond</comments>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Tue, 14 Mar 2023 00:59:47 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Infrastruktur]]></category>
		<category><![CDATA[Projektseite www.museum-digital.de]]></category>
		<category><![CDATA[Monatliche Benutzertreffen]]></category>
		<category><![CDATA[Neue Features]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=3659</guid>

					<description><![CDATA[Im letzten Jahr haben wir eine Online-Reihe von monatlichen Benutzer-Treffen zur Vorstellung neuer Entwicklungen bei museum-digital und zur Diskussion von Fragen aus der Benutzer- und Interessiertenschaft ins Leben gerufen. Wie die Dinge so laufen, blieben wir für einige Monate beim festen Termin &#8211; jeden ersten Dienstag von 17 bis 19 Uhr &#8211; und dann irgendwann <a href="https://blog.museum-digital.org/de/2023/03/14/ein-kalender-heisst-feste-termine/" class="more-link">...</a>]]></description>
										<content:encoded><![CDATA[
<p>Im letzten Jahr haben wir eine Online-Reihe von <a href="https://blog.museum-digital.org/tag/monthly-meetup/">monatlichen Benutzer-Treffen</a> zur Vorstellung neuer Entwicklungen bei museum-digital und zur Diskussion von Fragen aus der Benutzer- und Interessiertenschaft ins Leben gerufen. Wie die Dinge so laufen, blieben wir für einige Monate beim festen Termin &#8211; jeden ersten Dienstag von 17 bis 19 Uhr &#8211; und dann irgendwann nicht mehr. Natürlich sind Terminkalender der Teilnehmer ein wichtiger Aspekt, aber nicht zu vernachlässigen war dabei das schlichte Fehlen einer vorher festgelegten URL für das kommende Treffen.</p>



<p>Über das Wochenende haben wir ein neues Feature auf der Projektseite, <a href="http://www.museum-digital.org">www.museum-digital.org</a>, hinzugefügt: einen Kalender für Schulungen, Treffen, etc. Die hier aufgelisteten Termine werden wiederum aus verschiedenen vorhandenen Kalendern, die bereits online erreichbar sind, zu Listen der nächsten kommenden Termine zusammengesetzt.</p>



<p>Während die wichtigste Quelle dafür bisher der vom <a href="https://verein.museum-digital.de/">museum-digital e.V.</a> gepflegte <a href="https://verein.museum-digital.de/events/">Schulungskalender</a> ist, haben wir auch einen geteilten, aber bisher unveröffentlichten Kalender für englischsprachigen Termine wie die monatlichen Benutzertreffen eingebunden. Damit ist es nun möglich, die Benutzertreffen Monate im voraus zu planen und Zeit und Ort (bzw. URL) festzulegen, ohne jedes Mal einen neuen Blogpost zur Ankündigung schreiben zu müssen.</p>



<p>Und natürlich ist der Druck öffentlich angekündigte Termine einzuhalten deutlich größer. Damit steigt die Wahrscheinlichkeit, dass wir die monatlichen Benutzertreffen an jedem ersten Dienstag im Monat (17 bis 19 Uhr) in diesem Jahr auch langfristig an ihrem angestammten Termin durchhalten können. Also, einfach auf <a href="http://www.museum-digital.org">www.museum-digital.org</a> vorbeischauen und nach dem nächsten &#8222;Monthly user meet-up&#8220; suchen. Dort ist der Link zum Treffen schon festgelegt.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.museum-digital.org/de/2023/03/14/ein-kalender-heisst-feste-termine/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-thumbnail><url>https://blog.museum-digital.org/wp-content/uploads/2023/03/about-md-org-calendar-en.webp</url><width>600</width><height>321</height></post-thumbnail>	</item>
		<item>
		<title>Service Announcement: Bildserver heute zeitweise nicht verfügbar</title>
		<link>https://blog.museum-digital.org/de/2023/01/04/service-announcement-bildserver-heute-zeitweise-nicht-verfuegbar/</link>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Wed, 04 Jan 2023 13:47:02 +0000</pubDate>
				<category><![CDATA[Infrastruktur]]></category>
		<category><![CDATA[Hosting]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=3434</guid>

					<description><![CDATA[Der Server, über den Mediendateien in den öffentlichen Ausspielungen von museum-digital ausgeliefert werden, hat heute ein kritisches BIOS-Update bekommen und ist wegen des dadurch notwendigen Neustarts (heute 14:30) temporär nicht verfügbar. Links auf die Domain asset.museum-digital.org können damit derzeit nicht korrekt aufgelöst werden. Konkrete Probleme in den öffentlichen Ausspielungen sollte es so jedoch nicht geben. <a href="https://blog.museum-digital.org/de/2023/01/04/service-announcement-bildserver-heute-zeitweise-nicht-verfuegbar/" class="more-link">...</a>]]></description>
										<content:encoded><![CDATA[
<p>Der Server, über den Mediendateien in den öffentlichen Ausspielungen von museum-digital ausgeliefert werden, hat heute ein kritisches BIOS-Update bekommen und ist wegen des dadurch notwendigen Neustarts (heute 14:30) temporär nicht verfügbar. Links auf die Domain asset.museum-digital.org können damit derzeit nicht korrekt aufgelöst werden.</p>



<p>Konkrete Probleme in den öffentlichen Ausspielungen sollte es so jedoch nicht geben. Wir konnten rechtzeitig auf die Benutzung einer Rückfallebene umstellen.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Wartungstag im ZIB 2022</title>
		<link>https://blog.museum-digital.org/de/2022/08/31/wartungstag-im-zib-2022/</link>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Tue, 30 Aug 2022 23:10:38 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Infrastruktur]]></category>
		<category><![CDATA[Systemadministration]]></category>
		<category><![CDATA[Wartungstag]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=3365</guid>

					<description><![CDATA[Vom 29.8.2022 bis 30.8.2022 fand der Wartungstag des Zuse-Instituts Berlin, wo der Server von museum-digital gehostet wird, statt. Das bedeutet, dass dieser Server abgeschaltet war. In diesem Jahr waren wir auf den Wartungstag gut vorbereitet und museum-digital funktionierte trotz des temporär fehlenden Servers fast problemfrei weiter. Konkrete Probleme sind dabei nur durch einige fehlerhafte, zwischengespeicherte <a href="https://blog.museum-digital.org/de/2022/08/31/wartungstag-im-zib-2022/" class="more-link">...</a>]]></description>
										<content:encoded><![CDATA[
<p>Vom 29.8.2022 bis 30.8.2022 fand der <a href="https://www.digis-berlin.de/wartungstag-am-zuse-institut-am-30-08/">Wartungstag des Zuse-Instituts Berlin</a>, wo der Server von museum-digital gehostet wird, statt. Das bedeutet, dass dieser Server abgeschaltet war.</p>



<p>In diesem Jahr waren wir auf den Wartungstag gut vorbereitet und museum-digital funktionierte trotz des temporär fehlenden Servers fast problemfrei weiter. Konkrete Probleme sind dabei nur durch einige fehlerhafte, zwischengespeicherte Links auf den Startseiten (die sich in fehlenden Bildern ausdrückten) einiger Instanzen entstanden. Da der Server auch unsere Brücke ins Backup-System von digiS, dem Landeszentrum für Digitalisierung in Berlin, ist, fehlten zudem für einen Tag die Backups in dieses (die Tages-Backups für den gestrigen Tag werden allerdings heute automatisch synchronisiert werden; mehr zum Backup und zur Infrastruktur findet sich <a href="https://de.about.museum-digital.org/about/infrastructure/">auf museum-digital.org</a>).</p>



<div class="wp-block-cgb-cc-by message-body" style="background-color:white;color:black"><img loading="lazy" decoding="async" src="https://blog.museum-digital.org/wp-content/plugins/creative-commons/includes/images/by.png" alt="CC" width="88" height="31"/><p><span class="cc-cgb-name">This content</span> is licensed under a <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International license.</a> <span class="cc-cgb-text"></span></p></div>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
