Dieses Projekt befreit das österreichische Regierungsprogramm 2020-2024 aus seinem PDF-Format und macht es so zugänglicher.
Warum?
Weil PDF kein Datenformat ist. Es ist auch nicht barrierefrei. Außerdem ist es am Smartphone schlecht zu lesen. Solche wichtigen Dokumente sollten nicht auf Schönheit und Textsatz hin optimiert werden. Hier ist Zugänglichkeit und Offenheit wichtig. Das ist für OpenData wichtig. Ein PDF ist kein OpenData, kein offenes Dokument.
Reiner Text als Quelle und daraus ordentlich generiertes HTML sind hier meiner Meinung nach eine gute Lösung. Durch semantisches Markup wird der Text maschinenlesbar. Zudem ist der Zugang so technisch niederschwellig. Es müssen keine komplexen Systeme mit hohen Kosten, wie z.B. CMS dazu verwendet werden.
Technisch habe ich aus dem PDF den reinen Text extrahiert. Da PDF kein strukturiertes Dokumentenformat ist (sondern ein Seitenbeschreibungsformat), kann der Text nicht perfekt heraus geholt werden. Wenn sich jemand für den Hintergrund dazu interessiert: Die 30 Minuten Video How to Extract Text Contents from PDF (3 Teile, Englisch) erklären das ganz gut.
Vor dem Extrahieren habe ich mit PDFSAM Basic das lange Original-PDF Kapitelweise in kleinere PDFs zerlegt. Die Dateien habe ich dann einigermaßen sinnvoll benannt. Danach habe ich mit PDFMiner so gut wie möglich den Text pro Datei extrahiert.
Dann habe ich Sphinx eingesetzt, um aus dem reinen Text strukturiertes HTML zu generieren. Der verwendete Markup ist RestructuredText (aba ReST). ReST ist ähnlich dem bekannterem Markdown, aber für komplexere Dokumente besser geeignet.
Durch das semantische Format ReST wird der Text maschinenlesbar, was auch ein Anspruch bei OpenData ist.
Da da der extrahierte Text teilweise ziemlich chaotisch ist, war jetzt die manuelle Überarbeitung dran:
- es mussten Formatierungen eingefügt werden:
- vor allem Zwischenüberschriften,
- Absätze,
- Aufzählungslisten,
- Umbrüche und Trennzeichen sind oft an falschen Stellen.
- Es hat leider auch Text/Absätze/Spalten durcheinander gewürfelt:
- Spalten, die im Original-nicht richtig im Fluss definiert wurden, werden leider oft durcheinander gebracht;
- Ist das PDF im Entstehungsprozess überarbeitet worden, stehen diese neuen Wörter oft am Ende des Blocks;
- Teilweise sind auch noch Textfragmente von vor der Überarbeitung drinnen.
Aufgrund der technischen Probleme mit dem PDF gehe ich davon aus, dass Menschen mit eingeschränkter Sehfähigkeit (welche einen Screenreader oder eine Braillezeile verwenden) ebenso einige Probleme haben das PDF korrekt zu lesen. Vielleicht irre ich mich auch, Rückmeldungen gerne an mich.
Ich habe das jetzt produzierte statische HTML mit WAVE/WebAIM getestet. Bis auf ein kleines Kontrastproblem im Menu ist es demnach barrierefrei. Das kann möglicherweise noch verbessert werden. Für Vorschläge und Mithilfe bitte gerne an mich wenden.
Das ist ein offenes Projekt, jede/r kann mitmachen.
Wer mithelfen mag: Das Projekt liegt auf Github, einer kollaborativen Plattform zur Quellcode-Verwaltung.
Grundsätzlich kann man dort eine/n Benutzer/in anlegen und im /source/ Ordner auf der zu ändernden Datei auf Bearbeiten (edit) klicken. Es wird eine Kopie im eigenen Ordner (Clone) gespeichert. Dann fragt ihr mich über einen Pull-Request an die Änderungen zu Übernehmen. Sobald ich den Pull-Request übernommen (merged) habe, werde ich das HTML neu generieren und die Änderungen kommen so online.
Wer GIT kennt, kann sich auch eine lokale Arbeitskopie erstellen. Dann kann man auch Sphinx installieren und lokal den HTML-Generator laufen lassen. Bloß bitte das generierte HTML nicht im Pullrequest inkludieren, sonst kann es zu Konflikten im Git kommen.
Bei Fragen dazu könnt ihr mich gerne kontaktieren: - E-Mail Jens Klein - Twitter: yenzenz - GitHub: erstellt einen Issue auf github.com/jensens/RP-AT-2020/issues.
- Fehler ausbessern
- An einigen stellen sind Worte noch falsch getrennt und andere kleine Fehler zu finden. Hier freuen wir uns über Verbesserungsvorschläge in Form eines Pull-Requests.
- Stichworte markieren
Stichworte im Code markieren ist auch eine wichtige Aufgabe. Stichworte werden im Quelltext so markiert:
Die ist ein sinnloser :index:`Beispiel` Text. In dem wird eines :index:`Stichwortes <Stichwort>` gewürdigt. Für :index:`Extra- und Spezialworte <Extrawort, Spezialwort>` braucht man mehr als ein Stichwort.
Im ersten Fall wird das Wort direkt so genommen wie es da steht. Im zweiten Fall wird es anders als angezeigt aufgenommen, so wie in den Spitzklammern. In dem Fall hier wird die Grundform des Wortes übernommen. Im dritten Fall treffen auf eine Markierung mehrere Stichworte zu.
- Jens Klein
- Idee, Initiator, Technik, Überarbeitung. Klein & Partner KG
- Robert Harm
- Überarbeitung der meisten Kapitel und Publikation auf open3.at
- Erich Neuwirth
- Erstellung der Wortwolke
Die Erstellung des barrierefreien und maschinenlesbaren Regierungsprogramms erfolgte nach bestem Wissen und Gewissen. Durch die vielen manuellen Übertragungsschritte kann es passiert sein, dass sich eventuell Fehler (zB. in der Anordnung von Unterpunkten) eingeschlichen haben, für die wir keine Gewähr übernehmen. Wenn derartiges auffällt, bitte einen Issue auf github.com/jensens/RP-AT-2020/issues erstellen und wir werden dies umgehend korrigieren. mobi