<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Transkribus | FDMLab@LABW</title><link>https://fdmlab.landesarchiv-bw.de/tag/transkribus/</link><atom:link href="https://fdmlab.landesarchiv-bw.de/tag/transkribus/index.xml" rel="self" type="application/rss+xml"/><description>Transkribus</description><generator>Wowchemy (https://wowchemy.com)</generator><language>de-de</language><lastBuildDate>Tue, 09 Aug 2022 00:00:00 +0000</lastBuildDate><image><url>https://fdmlab.landesarchiv-bw.de/media/sharing.jpg</url><title>Transkribus</title><link>https://fdmlab.landesarchiv-bw.de/tag/transkribus/</link></image><item><title>Das FDMLab@LABW: Data-Science-Methoden und -Techniken für den Einsatz im Archiv</title><link>https://fdmlab.landesarchiv-bw.de/publication/2022-abi-technik-42/</link><pubDate>Tue, 09 Aug 2022 00:00:00 +0000</pubDate><guid>https://fdmlab.landesarchiv-bw.de/publication/2022-abi-technik-42/</guid><description/></item><item><title>Verborgene Datenschätze heben: Das FDMLab experimentiert mit KI im Archiv</title><link>https://fdmlab.landesarchiv-bw.de/publication/2022-archivnachrichten-64/</link><pubDate>Thu, 28 Apr 2022 00:00:00 +0000</pubDate><guid>https://fdmlab.landesarchiv-bw.de/publication/2022-archivnachrichten-64/</guid><description/></item><item><title>Training eines Strukturmodells für Tabellen mit P2PaLA</title><link>https://fdmlab.landesarchiv-bw.de/post/2021-09-training-strukturmodell-tabellen-mit-p2pala/</link><pubDate>Tue, 07 Sep 2021 00:00:00 +0000</pubDate><guid>https://fdmlab.landesarchiv-bw.de/post/2021-09-training-strukturmodell-tabellen-mit-p2pala/</guid><description>&lt;p>Transkribus bietet uns gute Werkzeuge an, um das Layout von komplexen Tabellen manuell zu erfassen. Wir möchten aber Bestände mit tausenden von Seiten bearbeiten. Wie können wir die Layoutanalyse auch für komplizierte Tabellenstrukturen automatisieren? Das Tool P2PaLA, welches in die Transkribus-Nutzeroberfläche integriert ist, gibt uns die Möglichkeit, ein spezifisches Strukturmodell für eine Dokumentensammlung zu trainieren.&lt;/p>
&lt;h2 id="unser-anwendungsfall-stammrollen-mit-tabellenlayout">Unser Anwendungsfall: Stammrollen mit Tabellenlayout&lt;/h2>
&lt;p>In einem &lt;a href="https://fdmlab.landesarchiv-bw.de/post/2021-07-analyse-tabellarischer-layoutstrukturen-mit-transkribus/">früheren Beitrag&lt;/a> haben wir vorgestellt, welche Möglichkeiten Transkribus uns bietet, eine Seite unserer Stammrollen manuell zu segmentieren, um diese für die Texterkennung vorzubereiten. Die Erfahrung zeigte uns: Es funktioniert, aber es kostet auch recht viel Zeit. Transkribus bringt darüber hinaus bereits eine automatische Layoutanalyse mit, die „per Knopfdruck“ ein Ergebnis liefert. In unserem Fall ist die Tabelle jedoch so kompliziert, dass die automatische Analyse kein zufriedenstellendes Ergebnis liefern konnte. Die Stammrollen aus den militärischen Beständen des LABW umfassen insgesamt mehrere Millionen Digitalisate. Da es viel zu aufwändig wäre, tausende von Tabellenseiten händisch zu bearbeiten, möchten wir die Layouterkennung so weit wie möglich automatisieren.&lt;/p>
&lt;p>Dazu möchten wir mit dem Tool P2PaLA ein Strukturmodell für das Layout unserer Stammrollen trainieren. Wir wollen uns dabei auf die für uns wesentlichen Informationen konzentrieren und insbesondere die laufende Nummer der Einträge, die Namen der Personen sowie ihre Geburtsdaten erkennen.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> Ein Blick auf das Tabellenlayout zeigt, dass wir diese Informationen in den ersten drei Tabellenspalten finden. Dabei entspricht eine Tabellenzeile einem Eintrag für eine Person.&lt;/p>
&lt;p>Die folgende Abbildung zeigt die sechs Tabellenzellen, die wir auf einer Doppelseite erkennen möchten:&lt;/p>
&lt;figure id="figure-diese-sechs-tabellenzellen-sollen-auf-jeder-doppelseite-erkannt-werden">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Diese sechs Tabellenzellen sollen auf jeder Doppelseite erkannt werden." srcset="
/post/2021-09-training-strukturmodell-tabellen-mit-p2pala/_hubaef64a030eea9b451fa1a6704546d45_936448_d0c6cb1312e12313068c6eccbfb424af.webp 400w,
/post/2021-09-training-strukturmodell-tabellen-mit-p2pala/_hubaef64a030eea9b451fa1a6704546d45_936448_b091c91bc7c86b8b07bee449bf370fd3.webp 760w,
/post/2021-09-training-strukturmodell-tabellen-mit-p2pala/_hubaef64a030eea9b451fa1a6704546d45_936448_3de55f738f1cde57ce29a6f16f442e5c.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2021-09-training-strukturmodell-tabellen-mit-p2pala/_hubaef64a030eea9b451fa1a6704546d45_936448_d0c6cb1312e12313068c6eccbfb424af.webp"
width="760"
height="590"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Diese sechs Tabellenzellen sollen auf jeder Doppelseite erkannt werden.
&lt;/figcaption>&lt;/figure>
&lt;h2 id="zusammenstellen-eines-trainingsdatensets">Zusammenstellen eines Trainingsdatensets&lt;/h2>
&lt;p>Im ersten Schritt muss für das Strukturmodelltraining ein geeignetes Trainingsdatenset zusammengestellt werden. Die Auswahl der Trainingsdaten sollte sorgfältig getroffen werden, denn die spätere Effizienz des Strukturmodells hängt maßgeblich von der Qualität der Trainingsdaten ab. Die Transkribus-Hilfe empfiehlt 50-100 Trainingsseiten, um ein brauchbares Modell zu erstellen. In unserem Fall umfasst das Trainingsdatenset 147 Seiten aus unterschiedlichen Stammrollen der relevanten Bestände.&lt;/p>
&lt;p>Sehr wichtig ist, dass die Trainingsdaten wirklich alle Merkmale enthalten, mit denen das Modell später umgehen können soll. Hierbei kommt es durchaus auch auf Kleinigkeiten an: Wenn einige Seiten einen Tabelleneintrag, andere aber zwei Einträge haben, wenn manche Seiten Fußzeilen oder Randbemerkungen aufweisen oder sich auf andere Weise unterscheiden, müssen alle diese Varianten in den Trainingsdaten enthalten sein, damit das Modell sie „erlernen“ kann. Wir haben beispielsweise auch ein paar nicht ausgefüllte Formularseiten und leere, weiße Blätter in unsere Trainingsdaten aufgenommen, da unsere Stammrollen häufig solche Seiten enthalten.&lt;/p>
&lt;p>Ein weiterer vorbereitender Schritt ist in unserem Anwendungsfall, dass die Trainingsseiten zunächst zurechtgeschnitten werden müssen. Denn die Digitalisate weisen, da vom Mikrofilm digitalisiert wurde, am oberen Rand einen Streifen mit Verfilmungsinformationen auf. Für das Abschneiden der Bildränder nutzen wir das kostenlose Programm &lt;a href="https://www.xnview.com/de/xnview/" target="_blank" rel="noopener">XnView&lt;/a>, mit dem auch eine Stapelverarbeitung möglich ist. Alternativ kann für diese Aufgabe auch jedes andere Bildbearbeitungsprogramm genutzt werden.&lt;/p>
&lt;figure id="figure-seite-mit-und-ohne-verfilmungsstreifen">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Seite mit und ohne Verfilmungsstreifen." srcset="
/post/2021-09-training-strukturmodell-tabellen-mit-p2pala/abb2_seite_stammrolle_mit_und_ohne_verfilmungsrand_hu77de876079f9150f2e5dc829256925a6_803310_c1ed8e27d8bfe4e364ef01680c8da7a3.webp 400w,
/post/2021-09-training-strukturmodell-tabellen-mit-p2pala/abb2_seite_stammrolle_mit_und_ohne_verfilmungsrand_hu77de876079f9150f2e5dc829256925a6_803310_706dffedfa0cec8ae14e1ce2bd70aebc.webp 760w,
/post/2021-09-training-strukturmodell-tabellen-mit-p2pala/abb2_seite_stammrolle_mit_und_ohne_verfilmungsrand_hu77de876079f9150f2e5dc829256925a6_803310_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2021-09-training-strukturmodell-tabellen-mit-p2pala/abb2_seite_stammrolle_mit_und_ohne_verfilmungsrand_hu77de876079f9150f2e5dc829256925a6_803310_c1ed8e27d8bfe4e364ef01680c8da7a3.webp"
width="760"
height="329"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Seite mit und ohne Verfilmungsstreifen.
&lt;/figcaption>&lt;/figure>
&lt;h2 id="erstellung-von-ground-truth">Erstellung von Ground Truth&lt;/h2>
&lt;p>Anschließend legen wir für die Trainingsseiten in Transkribus eine Dokumentensammlung an und laden die Seiten in die Sammlung hoch. Wir kennzeichnen auf den Trainingsseiten die relevanten Textteile durch das Einzeichnen von Textregionen um diese Textteile. Wie das genau geht, zeigt die &lt;a href="https://readcoop.eu/transkribus/howto/how-to-transcribe-documents-with-transkribus-introduction/" target="_blank" rel="noopener">Transkribus-Anleitung&lt;/a>. Diese intellektuell geprüften, „richtigen“ Beispiele werden auch als Ground Truth bezeichnet. Sie dienen dem Algorithmus als Referenzmaterial, um die „richtige“ Segmentierung“ unseres Tabellenlayouts zu lernen.&lt;/p>
&lt;p>Es hat sich gezeigt, dass man bessere Ergebnisse erzielt, wenn man die Textregionen eher eng um den Text zeichnet, als wenn man den gesamten Zellenbereich inklusive Leerraum kennzeichnet. Unsere Vermutung ist, dass dies darin begründet ist, dass der Algorithmus nach Textbereichen „sucht“ und es deshalb nicht hilft, ihm Tabellenzellen „zeigen“ zu wollen.&lt;/p>
&lt;h2 id="tagging-mit-strukturelementen">Tagging mit Strukturelementen&lt;/h2>
&lt;p>Über die Registerkarte „Metadata“ legen wir drei benutzerdefinierte Strukturtags „zelle-nummer“, „zelle-name“ und „zelle-geburt“ an. Danach zeichnen wir alle eingezeichneten Textregionen mit dem passenden Strukturtag aus. Eine ausführliche &lt;a href="https://readcoop.eu/transkribus/howto/how-to-use-the-structural-tagging-feature-and-how-to-train-it/" target="_blank" rel="noopener">Anleitung zur Verwendung der Funktion des Structural Tagging&lt;/a> gibt es auf der Transkribus-Hilfeseite. Die Strukturtags werden wir im nächsten Schritt brauchen, um beim Modelltraining anzugeben, welche Elemente trainiert werden sollen (s.u.).&lt;/p>
&lt;h2 id="durchführung-des-modelltrainings-mit-p2pala">Durchführung des Modelltrainings mit P2PaLA&lt;/h2>
&lt;p>Nun können wir das eigentliche Modelltraining mit P2PaLA anstoßen. In der Eingabemaske von P2PaLA wählen wir dafür die drei Strukturtags an, die trainiert werden sollen („zelle-nummer“, „zelle-name“, „zelle-geburt“). Außerdem geben wir dem Modell einen Namen und fügen eine Kurzbeschreibung bei, die erläutert, für welche Dokumente das Modell geeignet ist. Wir trainieren ausschließlich Textregionen und nicht die Erkennung von Textzeilen. Dies reduziert den Aufwand beim Erstellen der Ground Truth deutlich, da für das Training von Zeilen auch die Zeilen manuell gekennzeichnet werden müssten. Anschließend stoßen wir das Training an. Je nach Auslastung des Transkribus-Servers kann es etwas dauern, bis die Ergebnisse eines Trainings vorliegen. Den Status unseres Trainings können wir in der Jobübersicht in der Transkribus-Oberfläche nachverfolgen.&lt;/p>
&lt;h2 id="anwendung-des-modells-auf-testdaten">Anwendung des Modells auf Testdaten&lt;/h2>
&lt;p>Nach Abschluss des Trainings wenden wir unser Stammrollen-Strukturmodell auf ein Testdatenset an, das wir aus fünf Stammrollen zusammengestellt haben, die noch nicht Teil der Trainingsdaten waren, um zu sehen, wie gut das Modell unbekannte Daten tatsächlich verarbeiten kann.&lt;/p>
&lt;p>Das Ergebnis zeigt, dass unser Strukturmodell die sechs trainierten Textregionen in allen Stammrollen des Testdatensets findet. Es treten jedoch auch noch Fehler auf. Besondere Seiten, die nicht dem Standard-Layout entsprechen, können nicht erkannt werden, da sie nicht trainiert wurden. Teilweise sind auch auf Seiten, die dem trainierten Layout entsprechen, Fehler zu finden. So wurden stellenweise einzelne Buchstaben oder Wortteile nicht in die Textregion aufgenommen, wenn sie über den Zellenrand hinausragen. Bei Seiten mit einem Eintrag wird die vorhandene Tabellenzeile stets richtig erkannt, manchmal führen Bemerkungen im unteren Seitenbereich aber zu fälschlicherweise eingezeichneten Textregionen.&lt;/p>
&lt;p>Schlecht erkannt werden Seiten, bei denen die darunterliegenden Seiten noch sichtbar sind oder in die Zettel eingeklebt wurden (siehe Abbildung). Auch durch ein erneutes Training mit zusätzlichen Trainingsbeispielen dieser Art konnte dieses Problem bisher nicht behoben werden.&lt;/p>
&lt;p>Wenn im Original die Schrift blass und selbst für das menschliche Auge schwer lesbar ist, wirkt sich dies auch negativ auf die Layoutanalyse aus. Eventuell könnte eine erneute Digitalisierung in höherer Auflösung zu einem besseren Ergebnis führen.&lt;/p>
&lt;figure id="figure-blasse-schrift-oder-eingeklebte-zettel-erschweren-die-segmentierung-der-textregionen">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Blasse Schrift oder eingeklebte Zettel erschweren die Segmentierung der Textregionen." srcset="
/post/2021-09-training-strukturmodell-tabellen-mit-p2pala/abb3_seite_blasser_text_ausgeklappter_zettel_hu3ebf29f3aebf920ad7f2deda8b58531c_769450_62b5705d923bd7a0af3e3a8f850dcb01.webp 400w,
/post/2021-09-training-strukturmodell-tabellen-mit-p2pala/abb3_seite_blasser_text_ausgeklappter_zettel_hu3ebf29f3aebf920ad7f2deda8b58531c_769450_d44dc057b7e4bcef48e691e28c4323f1.webp 760w,
/post/2021-09-training-strukturmodell-tabellen-mit-p2pala/abb3_seite_blasser_text_ausgeklappter_zettel_hu3ebf29f3aebf920ad7f2deda8b58531c_769450_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2021-09-training-strukturmodell-tabellen-mit-p2pala/abb3_seite_blasser_text_ausgeklappter_zettel_hu3ebf29f3aebf920ad7f2deda8b58531c_769450_62b5705d923bd7a0af3e3a8f850dcb01.webp"
width="760"
height="609"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Blasse Schrift oder eingeklebte Zettel erschweren die Segmentierung der Textregionen.
&lt;/figcaption>&lt;/figure>
&lt;p>Auf vielen Seiten fanden sich nach der ersten Anwendung unseres Modells sehr kleine Textregionen, die fälschlicherweise an unterschiedlichen Stellen eingezeichnet wurden. Dieses Problem ließ sich sehr leicht beheben, indem wir den minimalen Wert für Textregionen („min area“) in den Einstellungen von P2PaLA heraufgesetzt haben.&lt;/p>
&lt;h2 id="fazit-und-nächste-schritte">Fazit und nächste Schritte&lt;/h2>
&lt;p>Das Trainieren von Strukturmodellen mit P2PaLA ist für Archive sehr interessant, da die Archive über vielfältige Unterlagen verfügen, die Formulare und Tabellen enthalten. Der beschriebene Anwendungsfall steht daher exemplarisch für viele Anwendungskontexte.&lt;/p>
&lt;p>Im FDMLab konnte mit P2PaLA ein Strukturmodell für Stammrollen trainiert werden, welches es ermöglicht, bestimmte, besonders relevante Informationen (laufende Nummer, Namen, Geburtsdaten) zu finden.&lt;/p>
&lt;p>Eine noch offene Aufgabe für das FDMLab ist die Automatisierung der richtigen Lesereihenfolge der analysierten Textregionen. Aktuell liest Transkribus die Textregionen spaltenweise von oben nach unten. In unserem Anwendungsfall wünschen wir uns aber ein zeilenweises Auslesen. Transkribus gibt uns die Möglichkeit, die automatisch erstellte Lesereihenfolge nachträglich manuell zu korrigieren. Wir möchten für diesen Schritt jedoch eine maschinelle Lösung finden.&lt;/p>
&lt;p>Insgesamt kann gesagt werden, dass wir einen semiautomatischen Prozess realisieren können, da die Ergebnisse unserer Layoutanalyse einer manuellen Nacharbeit bedürfen. Der Aufwand für manuelle Arbeiten ist jedoch sehr viel geringer, als wenn ohne eine automatische Layoutanalyse gearbeitet würde.&lt;/p>
&lt;p>Der nächste anstehende Arbeitsschritt wird die Analyse der Textzeilen in den Textregionen sein. Danach wird die eigentliche Handschriftenerkennung durchgeführt werden, die auf Basis der Textzeilen arbeitet.&lt;/p>
&lt;p>Es bleibt abzuwarten, wie die Layoutanalyse in Transkribus künftig weiterentwickelt werden wird. Derzeit bietet das Segmentierungsmodul von Transkribus spezielle Funktionalitäten für die manuelle Segmentierung von Tabellen an. Da P2PaLA bisher aber noch keine Tabellenelemente, sondern nur Textregionen erkennen und verarbeiten kann, können diese spezifischen Werkzeuge für das Training von Strukturmodellen leider nicht genutzt werden. Eine Weiterentwicklung der Layoutverarbeitungsmöglichkeiten für Tabellen wäre in hohem Maße wünschenswert.&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Mit Hilfe eines Volltextes, der diese Basisinformationen enthält, kann man die Fundstelle für eine Person schnell recherchieren und weitere Informationen direkt aus der Stammrolle entnehmen.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>Dies wurde exemplarisch von &lt;a href="https://europe.naverlabs.com/blog/vital-records-and-deep-learning-are-helping-us-uncover-the-past-from-historical-handwritten-records/" target="_blank" rel="noopener">Naver Labs Europe&lt;/a> umgesetzt
und sollte in Transkribus integriert werden, jedoch scheint sich die Integration zu verzögern.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Analyse tabellarischer Layoutstrukturen mit Transkribus</title><link>https://fdmlab.landesarchiv-bw.de/post/2021-07-analyse-tabellarischer-layoutstrukturen-mit-transkribus/</link><pubDate>Tue, 13 Jul 2021 00:00:00 +0000</pubDate><guid>https://fdmlab.landesarchiv-bw.de/post/2021-07-analyse-tabellarischer-layoutstrukturen-mit-transkribus/</guid><description>&lt;p>Eine gute Layouterkennung ist die Voraussetzung für eine gute OCR- oder HTR-Erfassung von Dokumenten.
Anhand von Stammrollen aus dem LABW testen wir, welche Möglichkeiten Transkribus bei der Layouterkennung komplexer Tabellenstrukturen bietet.&lt;/p>
&lt;h2 id="unser-ausgangsmaterial-stammrollen-mit-tabellen-layout">Unser Ausgangsmaterial: Stammrollen mit Tabellen-Layout&lt;/h2>
&lt;p>Die militärischen Bestände des LABW aus dem Zeitraum zwischen 1871 bis ca. 1920 beinhalten u.a. umfangreiche militärische Personalunterlagen. Dazu gehören die sogenannten Kriegs- und Friedensstammrollen von verschiedenen Regimentern. Diese listen alle Angehörigen einer Einheit mit Daten zur Person, den Angehörigen, mitgemachten Gefechten, Auszeichnungen etc. auf. Die Stammrollen sind für viele unterschiedliche Forschungsfragen interessant und insbesondere auch für Genealogen eine gerne genutzte historische Quelle.&lt;/p>
&lt;p>Die Stammrollen sind bereits vollständig digitalisiert und über das Online Findmittelsystem (OLF) des LABW einsehbar.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> Durch eine zusätzliche Volltexterfassung der Namen und Geburtsdaten aus den Stammrollen könnte man schnell und bequem nach einer bestimmten Person suchen. Das wäre ein echter Mehrwert für genealogische Forschungen! Wir testen, wie wir dies mit Transkribus umsetzen können.&lt;/p>
&lt;p>Hier zuerst ein Blick auf das Layout unserer Stammrollen:&lt;/p>
&lt;figure id="figure-tabellarisches-layout-der-stammrollen-quelle-landesarchiv-baden-württemberg-hauptstaatsarchiv-stuttgart-m-439-band-270">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Tabellarisches Layout der Stammrollen (Quelle: Landesarchiv Baden-Württemberg, Hauptstaatsarchiv Stuttgart M 439 Band 270)." srcset="
/post/2021-07-analyse-tabellarischer-layoutstrukturen-mit-transkribus/HStA_M439_Bd270_0002_hu3eb8821a4bffdb5c79db1d340978c84b_1441863_9834594ad07ec8e3364b9788615f812e.webp 400w,
/post/2021-07-analyse-tabellarischer-layoutstrukturen-mit-transkribus/HStA_M439_Bd270_0002_hu3eb8821a4bffdb5c79db1d340978c84b_1441863_4d3b465e60c1d84f0682c0c46280b672.webp 760w,
/post/2021-07-analyse-tabellarischer-layoutstrukturen-mit-transkribus/HStA_M439_Bd270_0002_hu3eb8821a4bffdb5c79db1d340978c84b_1441863_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2021-07-analyse-tabellarischer-layoutstrukturen-mit-transkribus/HStA_M439_Bd270_0002_hu3eb8821a4bffdb5c79db1d340978c84b_1441863_9834594ad07ec8e3364b9788615f812e.webp"
width="760"
height="606"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Tabellarisches Layout der Stammrollen (Quelle: Landesarchiv Baden-Württemberg, Hauptstaatsarchiv Stuttgart M 439 Band 270).
&lt;/figcaption>&lt;/figure>
&lt;h2 id="layouterkennung-als-basis-für-die-transkription">Layouterkennung als Basis für die Transkription&lt;/h2>
&lt;p>Die Layoutanalyse ist in Transkribus der erste Schritt, bevor man ein Dokument manuell oder automatisiert transkribieren kann. Bei der Layoutanalyse wird ein Dokument in Textregionen, Zeilen und Basislinien unterteilt. Die Texterkennung arbeitet auf der Basis dieser Segmentierung. Ausführliche Informationen, wie man die automatische Layoutanalyse durchführen kann, gibt es auf der Transkribus-Website.&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Wir testen, wie gut die automatische Layoutanalyse bei unseren Stammrollen funktioniert.&lt;/p>
&lt;h2 id="ergebnisse-der-automatischen-layoutanalyse">Ergebnisse der automatischen Layoutanalyse&lt;/h2>
&lt;p>Schon ein kurzer Blick auf eine Seite aus unseren Stammrollen zeigt, dass wir es mit einem komplexen Layout zu tun haben: Unsere Tabelle besitzt 15 Spalten mit Spaltenüberschriften. Auf einer (Doppel-)Seite gibt es in der Regel zwei Einträge, sprich Zeilen. Die Zellen innerhalb einer Zeile sind teilweise noch einmal in zwei kleinere Zellen unterteilt. Was wir als Menschen sofort verstehen, stellt an Transkribus hohe Anforderungen bei der richtigen Erkennung von Textabschnitten und Zeilen und der Festlegung der Lesereihenfolge der einzelnen Elemente. Wir haben Transkribus eine harte Nuss zu knacken gegeben!&lt;/p>
&lt;p>Die Ergebnisse der automatischen Layoutanalyse sind dementsprechend fehlerhaft. Der Großteil des Textes wurde als Textzeilen erkannt. Vor allem in den Spaltenüberschriften, vereinzelt auch in den Tabelleneinträgen, gibt es aber auch Textzeilen, die nicht als solche erkannt wurden.&lt;/p>
&lt;p>Bei der Erkennung der Textregionen scheint Transkribus sich insgesamt an den Tabellenspalten zu orientieren. Dies hat jedoch nicht zufriedenstellend funktioniert. Während einerseits mehrere Tabellenspalten in einer Textregion zusammengefasst wurden, sind andere Spalten in mehrere Regionen aufgeteilt worden, die sich teilweise auch überlappen.&lt;/p>
&lt;p>Auch, wenn das Layout der Tabelle auf jeder Seite dasselbe ist, werden bei jeder Seite unterschiedliche Textregionen erkannt, da die Textverteilung sich auf den Seiten unterscheidet. Das Ergebnis der automatischen Layoutanalyse ist daher bei gleichen Voreinstellung auf jeder Seite etwas anders.&lt;/p>
&lt;p>Die fehlerhaften Textregionen stellen deshalb ein Problem dar, weil dadurch auch die Lesereihenfolge der Zeilen durcheinandergerät.&lt;/p>
&lt;figure id="figure-ergebnis-der-automatischen-layoutanalyse-von-transkribus">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="HStA_M439_Bd270_0002_auto_analyse.jpg" alt="Ergebnis der automatischen Layoutanalyse von Transkribus." loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Ergebnis der automatischen Layoutanalyse von Transkribus.
&lt;/figcaption>&lt;/figure>
&lt;h2 id="manuelle-bearbeitungsmöglichkeiten">Manuelle Bearbeitungsmöglichkeiten&lt;/h2>
&lt;p>Um zu einem brauchbaren Ergebnis zu kommen, sind manuelle Nacharbeiten erforderlich. Transkribus stellt uns dafür umfangreiche Möglichkeiten zur Verfügung. Eine detaillierte Anleitung findet sich ebenfalls auf der Transkribus-Website.&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> Zuerst müssen die Textregionen korrigiert werden. Sinnvoll ist es hier, jeweils eine Tabellenzelle als eine Textregion zu kennzeichnen.&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> Nachdem die Lesereihenfolge der Textregionen berichtigt wurde, werden auch die Basislinien innerhalb der Textregionen manuell korrigiert, wo dies nötig ist. Abschließend wird die Lesereihenfolge der Zeilen angegeben.&lt;/p>
&lt;figure id="figure-manuelle-nachbearbeitung-der-layouterkennung">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Manuelle Nachbearbeitung der Layouterkennung." srcset="
/post/2021-07-analyse-tabellarischer-layoutstrukturen-mit-transkribus/HStA_M439_Bd270_0002_manuell_hucfcc503a372b8c67b8c4d03d635ce251_1110370_fe7e1ac24797277b36727d86eca1deea.webp 400w,
/post/2021-07-analyse-tabellarischer-layoutstrukturen-mit-transkribus/HStA_M439_Bd270_0002_manuell_hucfcc503a372b8c67b8c4d03d635ce251_1110370_bbfbafe7d61d64180e4f2a5f9002ea37.webp 760w,
/post/2021-07-analyse-tabellarischer-layoutstrukturen-mit-transkribus/HStA_M439_Bd270_0002_manuell_hucfcc503a372b8c67b8c4d03d635ce251_1110370_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2021-07-analyse-tabellarischer-layoutstrukturen-mit-transkribus/HStA_M439_Bd270_0002_manuell_hucfcc503a372b8c67b8c4d03d635ce251_1110370_fe7e1ac24797277b36727d86eca1deea.webp"
width="760"
height="596"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Manuelle Nachbearbeitung der Layouterkennung.
&lt;/figcaption>&lt;/figure>
&lt;div class="alert alert-note">
&lt;div>
&lt;p>&lt;strong>Tipps für manuelle Layoutkorrekturen&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Um fehlerhafte Textzeilen zu korrigieren, müssen Sie die Basislinien korrigieren, an denen sich die Texterkennung orientiert. Die Zeilen werden dann automatisch ebenfalls angepasst.&lt;/li>
&lt;li>Wenn Sie Text aus einer Textregion auf zwei unterschiedliche Textregionen aufteilen möchten, nutzen Sie das Werkzeug zum Zerschneiden von Elementen (gekennzeichnet durch das Scherensymbol). Nur so werden die Zeilen korrekt zu zwei Regionen zugeordnet.&lt;/li>
&lt;li>Achten Sie darauf, dass sich Textregionen nicht überlappen.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;/div>
&lt;h2 id="fazit">Fazit&lt;/h2>
&lt;p>Die automatische Layoutanalyse von Transkribus, die bei einfachen Layouts durchaus überzeugend funktionieren mag, kann ein komplexes Tabellenlayout wie das unserer Stammrollen nicht mit ausreichender Qualität verarbeiten. Transkribus bietet uns umfangreiche Möglichkeiten, die Layouterkennung manuell nachzubearbeiten. So haben wir am Ende unseres Tests die Seite aus der Stammrolle zufriedenstellend segmentiert. Die Nacharbeiten nehmen jedoch viel Zeit in Anspruch, sodass dieses Vorgehen nicht geeignet ist, um unseren gesamten Bestand an Kriegs- und Friedensstammrollen im LABW zu bearbeiten.&lt;/p>
&lt;p>Um einen effizienteren Weg zu finden, unser Tabellenlayout zu analysieren, werden wir als nächstes das Tool &lt;em>P2PaLA&lt;/em> testen, welches in Transkribus integriert und ab Version 1.15.1 für alle Transkribus User freigeschaltet ist. Mit &lt;em>P2PaLA&lt;/em> lässt sich ein spezifisches Strukturmodell für die Layouterkennung einer Dokumentensammlung trainieren. Auf diese Weise möchten wir einen höheren Automatisierungsgrad bei der Erkennung unseres Stammrollen-Tabellenlayouts erreichen. Wir werden in einem Folgebeitrag davon berichten.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Die Bestände des Hauptstaatsarchivs Stuttgart &lt;a href="https://www2.landesarchiv-bw.de/ofs21/olb/struktur.php?archiv=1&amp;amp;klassi=1.12.002.002&amp;amp;anzeigeKlassi=1.12.002.002&amp;amp;zeigehauptframe=1" target="_blank" rel="noopener">HStA M 430/1 - M631&lt;/a> in OLF.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>Anleitung zur &lt;a href="https://readcoop.eu/de/transkribus/wiki/layout-analysis/" target="_blank" rel="noopener">Layoutanalyse mit Transkribus&lt;/a> im Transkribus-Ressourcenzentreum der READ COOP.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>Anleitung &lt;a href="https://readcoop.eu/de/transkribus/anleitungen/dokumente-transkribieren/" target="_blank" rel="noopener">„Wie man Dokumente mit Transkribus transkribiert“&lt;/a> im Transkribus-Ressourcenzentreum der READ COOP.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>Grundsätzlich kennt das von Transkribus verwendete &lt;a href="https://github.com/PRImA-Research-Lab/PAGE-XML" target="_blank" rel="noopener">PAGE XML&lt;/a> Format auch Tabellen. Jedoch werden rekursive Strukturen (Tabelle -&amp;gt; Zelle -&amp;gt; Text) unserer Erfahrung nach nicht von allen Werkzeugen zuverlässig unterstützt.&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>80. Südwestdeutscher Archivtag 2021</title><link>https://fdmlab.landesarchiv-bw.de/event/2021-werkzeuge-zur-texterkennung/</link><pubDate>Fri, 18 Jun 2021 11:00:00 +0000</pubDate><guid>https://fdmlab.landesarchiv-bw.de/event/2021-werkzeuge-zur-texterkennung/</guid><description>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/PaEjLgqzmo8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div></description></item><item><title>Werkzeuge zur Texterkennung: ein Blick in die digitale Werkstatt des FDMLab am Landesarchiv Baden-Württemberg</title><link>https://fdmlab.landesarchiv-bw.de/publication/2021-suedwestdeutscher-archivtag/</link><pubDate>Fri, 18 Jun 2021 11:00:00 +0000</pubDate><guid>https://fdmlab.landesarchiv-bw.de/publication/2021-suedwestdeutscher-archivtag/</guid><description/></item><item><title>2. Workshop des OCR-BW-Projektes 2021</title><link>https://fdmlab.landesarchiv-bw.de/event/2021-ocr-im-archiv/</link><pubDate>Wed, 09 Jun 2021 11:00:00 +0000</pubDate><guid>https://fdmlab.landesarchiv-bw.de/event/2021-ocr-im-archiv/</guid><description/></item><item><title>Wie wir Docker einsetzen</title><link>https://fdmlab.landesarchiv-bw.de/post/2021-06-wie-wir-docker-einsetzen/</link><pubDate>Tue, 08 Jun 2021 00:00:00 +0000</pubDate><guid>https://fdmlab.landesarchiv-bw.de/post/2021-06-wie-wir-docker-einsetzen/</guid><description>&lt;p>Programme haben Anforderungen an ihre Umgebung.
Dies kann ein bestimmtes Betriebssystem sein (Windows, Linux, macOS),
eine Laufzeitumgebung für eine Programmiersprache (Python, Java, C#),
oder die Verfügbarkeit bestimmter Bibliotheken (GTK, .NET, Qt).
Wir wollen uns beim Testen und Evaluieren aber nicht einschränken!&lt;/p>
&lt;p>Im FDMLab evaluieren wir Programme und Bibliotheken, die sowohl für den Gebrauch am Rechner, als auch als Serveranwendung entwickelt wurden.
Würden wir diese alle auf unserem Testrechner installieren, hätten wir schnell die von Randall Munroe dargestellte Situation erzeugt.
Also unser System mit Programmen, Laufzeitumgebungen und Konfigurationsdateien vollgemüllt.&lt;/p>
&lt;figure id="figure-python-environmenthttpsxkcdcom1987-von-randall-munroe-unter-cc-by-nc-lizenzhttpcreativecommonsorglicensesby-nc25">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="[Python Environment](https://xkcd.com/1987/) von Randall Munroe unter [CC BY-NC Lizenz](http://creativecommons.org/licenses/by-nc/2.5/)." srcset="
/post/2021-06-wie-wir-docker-einsetzen/python_environment_huf01e0eb7d16bfdafe1594868b0e0e25e_54078_eaf385cb765fbdd143396c6e7cb3e5a8.webp 400w,
/post/2021-06-wie-wir-docker-einsetzen/python_environment_huf01e0eb7d16bfdafe1594868b0e0e25e_54078_cd12d25540c3a8bdf9c0e7a4206b9819.webp 760w,
/post/2021-06-wie-wir-docker-einsetzen/python_environment_huf01e0eb7d16bfdafe1594868b0e0e25e_54078_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2021-06-wie-wir-docker-einsetzen/python_environment_huf01e0eb7d16bfdafe1594868b0e0e25e_54078_eaf385cb765fbdd143396c6e7cb3e5a8.webp"
width="492"
height="487"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
&lt;a href="https://xkcd.com/1987/" target="_blank" rel="noopener">Python Environment&lt;/a> von Randall Munroe unter &lt;a href="http://creativecommons.org/licenses/by-nc/2.5/" target="_blank" rel="noopener">CC BY-NC Lizenz&lt;/a>.
&lt;/figcaption>&lt;/figure>
&lt;p>Stattdessen versuchen wir - sofern möglich - die zu evaluierenden Programme als Docker Container zu testen.
Wie im Eingangsbild symbolhaft dargestellt&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>, handelt es sich bei Docker Containern (vereinfacht)
um einen Standard um Anwendungen mitsamt ihrer Umgebung zu verpacken und somit auf unterschiedlichen Docker Hosts laufen zu lassen.&lt;/p>
&lt;p>Wir verwenden dafür &lt;a href="https://docs.docker.com/docker-for-windows/install/" target="_blank" rel="noopener">Docker Desktop für Windows&lt;/a>.&lt;/p>
&lt;h2 id="docker-container-via-browser">Docker Container via Browser&lt;/h2>
&lt;div class="mermaid">---
title: Docker Container via Browser
config:
look: handDrawn
theme: neutral
---
flowchart TD
subgraph Container[Container]
FC[Dateien]
Server[[Server]]
DB[(Datenbank)]
Lib{{Bibliotheken}}
end
Browser[[Browser]]
FU[Dateien]
FU &lt;--> FC --> Server
Server --> Browser
DB --> Server
Lib --> Server
&lt;/div>
&lt;p>Eine Variante Docker zu verwenden, ist mit der Anwendung in dem Container via einer Web GUI im Browser zu interagieren.
Ein Beispiel hierfür ist das Projekt &lt;a href="http://ocr4all.org/" target="_blank" rel="noopener">OCR4All&lt;/a>.
Mit dem folgenden PowerShell Befehl wird die Vorlage für einen &lt;em>OCR4All Container&lt;/em> (&lt;code>image&lt;/code>)
aus der &lt;em>Docker Hub Registry&lt;/em> heruntergeladen und lokal ein &lt;em>OCR4All Container&lt;/em> erstellt.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">docker&lt;/span> &lt;span class="n">run&lt;/span> &lt;span class="p">-&lt;/span>&lt;span class="n">-rm&lt;/span> &lt;span class="n">-it&lt;/span> &lt;span class="n">-p&lt;/span> &lt;span class="mf">8080&lt;/span>&lt;span class="err">:&lt;/span>&lt;span class="mf">8080&lt;/span> &lt;span class="n">ls6uniwue&lt;/span>&lt;span class="p">/&lt;/span>&lt;span class="n">ocr4all&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Über die Adresse &lt;code>http://localhost:8080&lt;/code> lässt sich die Web GUI des &lt;em>OCR4All Containers&lt;/em> aufrufen und bedienen.&lt;/p>
&lt;p>Es ist möglich Daten von der eigenen Festplatte mit &lt;a href="https://docs.docker.com/storage/volumes/" target="_blank" rel="noopener">in den Container einzuhängen&lt;/a> (&lt;em>mounten&lt;/em>).&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">docker&lt;/span> &lt;span class="n">run&lt;/span> &lt;span class="p">-&lt;/span>&lt;span class="n">-rm&lt;/span> &lt;span class="n">-it&lt;/span> &lt;span class="n">-p&lt;/span> &lt;span class="mf">8080&lt;/span>&lt;span class="err">:&lt;/span>&lt;span class="mf">8080&lt;/span> &lt;span class="n">-v&lt;/span> &lt;span class="p">${&lt;/span>&lt;span class="n">PWD&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="err">:&lt;/span>&lt;span class="p">/&lt;/span>&lt;span class="n">var&lt;/span>&lt;span class="p">/&lt;/span>&lt;span class="n">ocr4all&lt;/span>&lt;span class="p">/&lt;/span>&lt;span class="n">data&lt;/span> &lt;span class="n">ls6uniwue&lt;/span>&lt;span class="p">/&lt;/span>&lt;span class="n">ocr4all&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="docker-container-als-skript">Docker Container als Skript&lt;/h2>
&lt;p>Docker Container können ähnliche wie Skripte verwendet werden.&lt;/p>
&lt;p>Mit dem folgenden Beispiel wird ein &lt;a href="https://ocr-d.de/en/workflows" target="_blank" rel="noopener">OCR-D Workflow&lt;/a> ausgeführt,
ohne dass die mehr als 60 unterschiedlichen Prozessoren separat installiert werden müssen.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">docker&lt;/span> &lt;span class="n">run&lt;/span> &lt;span class="p">-&lt;/span>&lt;span class="n">-rm&lt;/span> &lt;span class="n">-v&lt;/span> &lt;span class="p">${&lt;/span>&lt;span class="n">PWD&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="err">:&lt;/span>&lt;span class="p">/&lt;/span>&lt;span class="n">data&lt;/span> &lt;span class="n">-w&lt;/span> &lt;span class="p">/&lt;/span>&lt;span class="n">data&lt;/span> &lt;span class="p">--&lt;/span> &lt;span class="n">ocrd&lt;/span>&lt;span class="p">/&lt;/span>&lt;span class="n">all&lt;/span>&lt;span class="err">:&lt;/span>&lt;span class="n">maximum&lt;/span> &lt;span class="n">bash&lt;/span> &lt;span class="n">workflow&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">sh&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="alert alert-warning">
&lt;div>
Das Image &lt;code>ocrd/all:maximum&lt;/code> ist mehrere Gigabyte groß!
&lt;/div>
&lt;/div>
&lt;h2 id="wo-docker-nicht-funktioniert">Wo Docker nicht funktioniert&lt;/h2>
&lt;p>Es gibt Software, die nicht als Docker Image vorliegt, oder als solche verwendet werden kann.
Dazu gehört Software, die eine systemspezifische GUI Bibliothek verwendet.&lt;/p>
&lt;p>Beispiele hierfür sind der &lt;a href="https://www.primaresearch.org/tools/PAGEViewer" target="_blank" rel="noopener">Page Viewer&lt;/a>
oder der &lt;a href="https://readcoop.eu/transkribus/download/" target="_blank" rel="noopener">Transkribus Expert Client&lt;/a>.
Diese benötigen beide Java als Laufzeitumgebung und stellen ihre GUI mit nativen Betriebssystemkomponenten dar.
Docker Container haben keine nativen GUI Komponenten, weshalb diese Programme in einem Docker Container nicht genutzt werden können &lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>.&lt;/p>
&lt;h2 id="unser-fazit">Unser Fazit&lt;/h2>
&lt;p>Wir verwenden Docker um schnell und unkompliziert unterschiedlichste Anwendungen evaluieren zu können.
Inzwischen kommen Docker Container bei uns auch praktisch zum Einsatz.
Zum Beispiel um gemeinsame Projekte reproduzierbar bearbeiten zu können.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Die Standardisierung von Seefracht-Containern zu &lt;a href="https://de.wikipedia.org/wiki/ISO-Container" target="_blank" rel="noopener">ISO-Containern&lt;/a> optimierte die Transportkette im Güterverkehr.
Daher werden standardisierte virtuelle Container häufig mit Fracht-Containern verglichen.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>Es gibt Bibliotheken, die die nativen GUI Komponenten für Webbrowser darstellen können.
Ein Beispiel hierfür ist &lt;a href="https://developer.gnome.org/gtk3/stable/gtk-broadway.html" target="_blank" rel="noopener">GTK Broadway&lt;/a>.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item></channel></rss>