rsmuchttps://blog.ggc-project.de/@/rsmuc@write.tchncs.de/atom.xml2021-05-25T06:58:29.179260+00:00<![CDATA[Paperless-ng]]>https://write.tchncs.de/~/Paperless/paperless-ng/2021-05-25T06:58:29.179260+00:00rsmuchttps://write.tchncs.de/@/rsmuc/2021-05-25T06:58:29.179260+00:00<![CDATA[<p>Papierloses Büro bedeutet zu einem großen Teil, dass Dokumente archiviert und wiedergefunden werden wollen und das natürlich ohne echtes Papier. Viele der Dokumente braucht man auch nie wieder. Aber spätestens bei der nächsten Steuererklärung muss doch wieder alles Mögliche an alten Rechnungen und Bank-Dokumenten herausgezogen werden. Viel Spaß macht das Thema nicht.</p>
<p>Dies klassisch über eine Ordnerstruktur zu machen ist zunächst naheliegend. Dank OCRmyPDF und Recoll ist ein Wiederfinden möglich. Und dank Python-Organize ist das automatische einsortieren in die Ordnerstruktur möglich und weitere kleine Scripte und Schritte sorgen für Ordnung. Artikel hierzu findet ihr im Blog.</p>
<p>Aber es bleiben eben trotzdem viele einzelne Schritte. Und bei vielen einzelnen Schritten gibt es viele kleine Stellen, an denen etwas schief gehen kann und bei denen man Zeit verliert. Also warum keine gesamtheitliche Lösung einsetzen?</p>
<p>Da meine Banken ein sehr hohes Mitteilungsbedürfnis haben, komme ich, obwohl ich nur in einem normalen Angestelltenverhältnis bin, auf circa 1000 Dokumente pro Jahr. Also musste etwas Besseres als eine einfache Ordnerstruktur her: Paperless-ng.</p>
<h2>Voraussetzungen</h2>
<p>Grundsätzlich erfüllt eine Dokumentenverwaltung zwei Aufgaben: Dokumente abspeichern. Dokumente wiederfinden.</p>
<p>Die Details sind dann schon ein wenig komplizierter.</p>
<p>Meine Anforderungen an ein System zur Dokumentenverwaltung sind gar nicht viele, aber die haben es in sich:</p>
<ul>
<li>Intuitives UI</li>
<li>Automatische Sortierung in Ordner / Zuordnung von Tags</li>
<li>OCR</li>
<li>Original-Daten nicht in Datenbank "gefangen"</li>
<li>Exit-Strategie</li>
<li>Single-User ausreichend</li>
<li>Fokus auf PDF-Dateien</li>
<li>Akzeptabler Aufwand für Installation und Pflege</li>
<li>Keine Cloud Lösung</li>
</ul>
<p>Mir ist besonders der Punkt wichtig, dass die Dokumente in keiner Datenbank "gefangen" sind. Denn dies würde voraussetzen, dass das Dokumentenverwaltungssystem laufen muss, damit ich auf die Dokumente zugreifen kann. Was ist im Notfall? Die Software startet nicht mehr, weil irgendein Update die Datenbank beschädigt hat? Oder einfach nur, weil der Docker-Daeamon nicht mehr mag. Klar, mit einem guten Backup, sollte dies alles in den Griff zu bekommen sein, aber man weiß ja nicht. Also sollten die Original-Dokumente möglichst "nackt" im Dateisystem liegen. Eine Verarbeitung in der Cloud wäre sicher das bequemste, aber kommt für mich aus Datenschutzgründen nicht in Frage.</p>
<h2>Paperless-ng</h2>
<p>Ich bin bereits öfter über das Projekt <a href="https://github.com/the-paperless-project/paperless" rel="noopener noreferrer">Paperless</a> gestolpert. Allerdings konnte ich mich damit nie wirklich anfreunden. Zudem ist die Entwicklung abgeschlossen und das Repository mittlerweile archiviert. Durch Zufall bin ich dann vor einiger Zeit auf <a href="https://github.com/jonaswinkler/paperless-ng" rel="noopener noreferrer">Paperless-ng</a> gestoßen, was ein Fork von Paperless ist und noch sehr aktiv weiterentwickelt wird. Paperless-ng erfüllt alle genannten Anforderungen und sogar noch einiges mehr.</p>
<h2>Die Installation und Konfiguration</h2>
<p>Die Installation ist für jeden, der schon ein wenig Erfahrungen mit Docker hat, einfach:</p>
<p>Das docker-compose.postgres.yml von <a href="https://github.com/jonaswinkler/paperless-ng/blob/master/docker/compose/docker-compose.postgres.yml" rel="noopener noreferrer">github</a> herunterladen und unter docker-compose.yml speichern.</p>
<p>Und nun noch das docker-compose.env von <a href="https://github.com/jonaswinkler/paperless-ng/blob/master/docker/compose/docker-compose.env" rel="noopener noreferrer">github</a> herunterladen und daneben ablegen. In diesem File wird die Konfiguration durchgeführt. Es sind nur ein paar wenige Änderungen notwendig:</p>
<ul>
<li>
<p>Die korrekte Zeitzone setzen:</p>
<p><code>PAPERLESS_TIME_ZONE=Europe/Berlin</code></p>
</li>
<li>
<p>Die korrekte Sprache für OCR setzten:</p>
<p><code>PAPERLESS_OCR_LANGUAGE=deu</code></p>
</li>
<li>
<p>Und nun noch die Ordnerstruktur festlegen:</p>
<p><code>PAPERLESS_FILENAME_FORMAT={created_year}/{correspondent}/{title}</code></p>
</li>
</ul>
<p>Die letzte Einstellung legt fest, wie die PDF-Dateien im Dateisystem abgelegt werden sollen. In diesem Fall z.B.</p>
<pre><code>2020/HypoVereinsbank/Kontoauszug_Januar.pdf
</code></pre>
<p>Details zu den Optionen sind in der <a href="https://paperless-ng.readthedocs.io/en/latest/advanced_usage.html#file-name-handling" rel="noopener noreferrer">Dokumentation</a> zu finden.</p>
<p>Würde die letzte Option nicht gesetzt werden, würden alle Dateien nur flach in einem Verzeichnis mit einer eindeutigen ID liegen. Nicht sehr übersichtlich. Mit der oben gezeigten Änderung können Dokumente bei Bedarf auch ohne ein lauffähiges Paperless-ng im Dateisystem wiedergefunden werden.</p>
<p>Und schon kann Paperless-ng gestartet werden:</p>
<pre><code>docker-compose up -d
</code></pre>
<p>Damit wir uns einloggen können, muss nun noch ein User angelegt werden:</p>
<pre><code> docker-compose run --rm webserver createsuperuser
</code></pre>
<p>Das war es. Über das Webinterface kann man sich nun einloggen:</p>
<pre><code>http://server:8000
</code></pre>
<p><img src="https://write.tchncs.de/static/media/E210FB28-A73E-E644-CEE8-27C55D7B96F5.png" alt="Paperless-NG Screenshot"></p>
<h2>Dokumente hochladen</h2>
<p>Wie kommen nun die Dokumente ins Dokumentenmanagement-System? Hier bietet Paperless-ng mehrere Möglichkeiten.</p>
<h3>Webinterface</h3>
<p>Die naheliegendste Variante ist über das Webinterface. Einloggen und entweder über den "Browse Files"-Button oder auch einfach per Drag and Drop. Fertig.</p>
<h3>Android App</h3>
<p>Ist man per Smartphone unterwegs - Verbindung zum Heimnetz vorausgesetzt - besteht die Möglichkeit, die Android App "Paperless" aus dem F-Droid Store zu verwenden. Mit dieser kann über den Teilen Button in Android ein Dokument an den Paperless-Server gesendet werden. Gerade wenn man, wie ich, nur noch viel mit dem Smartphone unterwegs ist, ist dies ziemlich praktisch. Der Umweg über das Notebook oder den Desktop Rechner entfällt somit.</p>
<p>Zum Verwalten und Finden der Daten, finde ich wiederum das Webinterface auch auf dem Smartphone die beste Option.</p>
<p><img src="https://write.tchncs.de/static/media/F2969A6F-7EE9-A36A-E3FA-C8E21A74389D.png" alt="Paperless NG 3"></p>
<h3>consume-Ordner</h3>
<p>Damit man sich auch am PC den Umweg über das Webinterface sparen kann, gibt es bei Paperless-ng den consume Ordner. Man legt also einfach die Dokumente dort hinein und Paperless-ng verarbeitet diese automatisch.</p>
<p>Der Ordner lässt sich im docker-compose.yml konfigurieren:</p>
<pre><code>...
volumes:
...
- /home/myfunkyuser/consume:/usr/src/paperless/consume
...
</code></pre>
<p>Und schon hat man im Home-Verzeichnis den Ordner "consume", in welchen man nun einfach noch die PDF-Dateien kopiert.</p>
<p>Allerdings läuft der Docker Container bei den meisten Nutzern vermutlich wie auch bei mir, nicht auf dem Arbeitsplatzrechner, sondern auf einem kleinen Home-Server oder Raspi.</p>
<p>So ziemlich alle Dateimanager unter Linux beherrschen es per SSH auf einen Ordner zuzugreifen. Also einfach ssh://192.168.2.3 im Dateimanager eingeben, die User und Passwort-Abfrage beantworten und fertig. Zum einfacheren Zugreifen, kann man diesen SSH-Ordner auch in den Links oder Favoriten speichern oder ihn über die FSTAB mounten.</p>
<h3>E-Mail / IMAP Collector</h3>
<p>Als vierten Weg bietet Paperless-ng auch noch einen E-Mail Collector. Paperless-ng kann also automatisch die Mailbox nach E-Mails mit PDF-Dateien durchforsten und diese verarbeiten. Eingerichtet wird dies über das Webinterface im Bereich "Admin".</p>
<p>Eine Beschreibung, wie dies konfiguriert werden kann, ist hier zu finden: <a href="https://paperless-ng.readthedocs.io/en/latest/usage_overview.html?highlight=mail#imap-email" rel="noopener noreferrer">Dokumentation Paperless-ng IMAP</a>.</p>
<p>Es landen also z. B. alle Rechnungen, die per E-Mail ankommen, automatisch in der Dokumentenverwaltung. Sehr praktisch. Theoretisch. Denn alle meine Mails, die ich erhalte, sind verschlüsselt. Entweder direkt vom Absender oder spätestens mit der Inbox-Verschlüsselung von Mailbox.org. Mit verschlüsselten Mails kann Paperless-ng leider noch nicht umgehen.</p>
<h2>Dokumentenmanagement</h2>
<p>Aber was macht Paperless-ng nun eigentlich mit einem PDF? (Randbemerkung: Paperless-ng kann nicht nur mit PDFs umgehen, sondern prinzipiell auch mit .doc und anderen Office-Formaten. Allerdings wird dies von mir nicht genutzt.)</p>
<p>Der grundlegende Workflow ist einfach:</p>
<ul>
<li>Dokument hochladen</li>
<li>OCR (Texterkennung)</li>
<li>Ablegen des Original-Dokumentes</li>
<li>Ablegen des Dokuments mit OCR</li>
<li>Anreichern von Meta-Daten, wie Tags, Datum, Korrespondent & Co.</li>
<li>Suchfunktion</li>
</ul>
<h3>Die Meta-Daten</h3>
<p>Paperless-ng ordnet jedem Dokument die folgenden Meta-Daten zu:</p>
<ul>
<li>
<p><strong><em>Title</em></strong>: Der Titel des Dokuments. Dieser wird aus dem Dateinamen des Dokuments übernommen.</p>
</li>
<li>
<p><strong><em>Archive serial number (ASN)</em></strong>: Möchte man eine eindeutige Zuordnung vom Papierdokument, welches man in einem Ordner aufhebt, kann man eine ASN vergeben. Dies ist eine einfache fortlaufende Nummer, welche auf dem Papierdokument und in den Meta-Daten angegeben wird. So lässt sich das Original-Dokument in einem Ordner schnell finden.</p>
</li>
<li>
<p><strong><em>Date created:</em></strong> Das Datum des Dokuments. Dieses wird automatisch aus dem Inhalt des Dokuments ermittelt.</p>
</li>
<li>
<p><strong><em>Correspondent:</em></strong> Der meiner Meinung nach neben dem Datum die wichtigste Meta-Information. Die Zuordnung des Korrespondenten. Also z. B. Sparkasse Düsseldorf, Hausverwaltung Mayr.</p>
</li>
<li>
<p><strong><em>Document type</em></strong>: Die Art von Dokument. Also z.B. Kontoauszug, Rechnung, Vertrag</p>
</li>
<li>
<p><strong><em>Tags</em></strong>: Frei definierbare Tags, welche das Dokument zuordnen sollen. Also z.B. Wohnung, Auto, Depot, Bank, Beleg Steuererklärung 2019</p>
</li>
<li>
<p><strong><em>Content</em></strong>: Der per OCR erfasste Inhalt, welcher vor allem für die Volltextsuche relevant ist.</p>
</li>
</ul>
<h3>Anlegen von Meta-Daten</h3>
<p>Damit nun die hochgeladenen Dokumente mit den Meta-Daten versehen werden können, legen wir diese zunächst an. Im Webinterface können im Bereich "Manage", die "Correspondents", "Tags" und "Document types" einfach angelegt werden.</p>
<p>Beim Anlegen der Meta-Informationen muss auch immer ein "Matching algorithm" ausgewählt werden. Dazu gleich mehr.</p>
<p>Sind also die Tags (Bank, Wohnung, Auto), die Korrespondenten (Hausverwaltung Mayr, Sparkasse Düsseldorf) und die Dokumententypen (Vertrag, Angebot, Rechnung) angelegt, kann man die Dokumente damit ausstatten.</p>
<p>Klingt erst mal nach viel händischer Arbeit pro Dokument.</p>
<p><img src="https://write.tchncs.de/static/media/331BD87C-4B4D-5035-6D9B-2053E1784A87.png" alt="Paperless NG - Metadaten"></p>
<h3>Matching</h3>
<p>Aber hier kommt genau das Matching ins Spiel. Die Zuordnung von Tags, Korrespondenten und Dokumententypen zu den Dokumenten soll natürlich nicht immer händisch passieren, sondern Paperless-ng soll uns die Arbeit abnehmen.</p>
<p>Hierfür bietet Paperless-ng mehrere Methoden an. So kann z. B. der Algorithmus "Exact" verwendet werden. Kommt nun das Wort "Sparkasse Düsseldorf" genau in dieser Schreibweise in einem Dokument vor, dann wird der Korrespondent "Sparkasse Düsseldorf" dem Dokument zugeordnet.</p>
<p>Nicht immer ist es ganz einfach, Matching-Regeln zu definieren. Nicht immer kommt "Sparkasse Düsseldorf" direkt hintereinander. Manchmal wird das "ü" beim OCR nicht richtig erkannt und es heißt Sparkasse Dusseldorf". Hier kommt nun das neuronale Netz von Paperless-ng ins Spiel. Dies ist die eigentliche Stärke der Software. Wählt man als Matching Algoritmus "Auto: Learn matching automatically", ordnet Paperless-ng alle Meta-Daten automatisch den neuen Dokumenten hinzu. Dabei lernt das neuronale Netzwerk mit jedem weiteren Dokument hinzu und das Matching wird immer besser.</p>
<p>Anfangs ist dies noch ein wenig frustrierend. Aber hat man die ersten 50 unterschiedlichen Dokumente in Paperless-ng verwaltet, wird das automatische Matching sehr zuverlässig. Bei mir sind es nun mittlerweile ca. 4000 Dokumente in Paperless-ng und das neuronale Netzwerk funktioniert bei wiederkehrenden Dokumenten mittlerweile so gut, dass nur selten Nacharbeit notwendig ist.</p>
<p>Statische Regeln haben einen Nachteil. Legt man z. B. fest, dass jedes Dokument mit dem Inhalt "Steuerberaterin Musterfrau" den Korrespondenten "Musterfrau" bekommt, funktioniert dies für viele Dokumente. Allerdings wird z. B. auch ein Kontoauszug der Sparkasse dem Korrespondenten "Musterfrau" Zugwiesen, wenn dieser eine Überweisung an "Musterfrau" enthält. Bei der Nutzung des neuronalen Netzwerks stehen die Chancen nicht schlecht, dass der Kontoauszug der Sparkasse zugewiesen wird.</p>
<p>Ich nutze selbst nur die "Auto"-Funktion als Zuordnungsmechanismus.</p>
<h3>Inbox Tag</h3>
<p>So weit also alles klar. Wir laden Dokumente in die Dokumentenverwaltung und es werden automatisch die Meta-Daten zugeordnet. Ein wenig händische Arbeit bleibt aber doch noch: Prüfen, ob Paperless-ng wirklich die korrekten Tags, Korrespondenten & Co zugeordnet hat.</p>
<p>Beim Anlegen der Tags ist uns schon die Checkbox "Inbox-Tag" aufgefallen. Diese Checkbox sollte bei einem Tag gesetzt werden. Ist die Checkbox aktiv, wird immer jedem neu hinzugefügten Dokument dieser Tag angehängt. Einfachhalber nutzen wir den Tag "Inbox" und wählen dort "Inbox-Tag" aus.</p>
<p>Was bringt uns das? Wir können alle Dokumente mit dem "Inbox" Tag auf Korrektheit prüfen und anschließend den Tag entfernen. Er dient uns also als Vorfilter. Ziemlich raffiniert.</p>
<h3>Dokumente finden</h3>
<p>Paperless-ng hat im Webinterface eine Suche integriert. Diese durchsucht sowohl den Inhalt der Dokumente und bietet auch die Möglichkeit, die Suche über weitere Meta-Daten einzuschränken.</p>
<p>z.B. "correspondent:HypoVereinsbank Tierpark"</p>
<p>Am häufigsten wird man die einfache Volltextsuche verwenden. Sollte dies zu viele Treffer finden, lässt sich die Suche im Anschluss die Suche noch über die Tags, Korrespondenten usw. einschränken.</p>
<h2>Backup</h2>
<p>Der Autor der Software hat auch dem Thema Backup in der Dokumentation ein eigenes Kapitel spendiert: <a href="https://paperless-ng.readthedocs.io/en/latest/administration.html?highlight=backup#making-backups" rel="noopener noreferrer">Dokumentation</a></p>
<p>Hilfreich: Die PDF-Daten liegen im Klartext im Backup. Im Worst Case kann man also auf jeden Fall auf die Daten zugreifen. Auch ohne dass die Software läuft.</p>
<p>Mit folgendem Mini-Script erzeuge ich mein Backup:</p>
<pre><code>docker-compose -f /root/paperless-ng/docker-compose.yml down
tar cfv /home/user/backup/$(date -I)_backup_paperless_media_$(date -I).tar /var/lib/docker/volumes/paperlessng_media
tar cfv /home/user/backup/$(date -I)_backup_paperless_data_$(date -I).tar /var/lib/docker/volumes/paperlessng_data
tar cfv /home/user/backup/$(date -I)_backup_paperless_pgdata_$(date -I).tar /var/lib/docker/volumes/paperlessng_pgdata
docker-compose -f /root/paperless-ng/docker-compose.yml up -d
</code></pre>
<p>Folgende drei Archiv-Dateien sind das Ergebnis:</p>
<ul>
<li>
<p>paperless_media: Alle Dateien in der Original-Version (originals) und in der Version mit OCR-Schicht (archive). Die Original-Versionen sichere ich monatlich unverschlüsselt auf eine DVD. So kann im Fall der Fälle auch jemand ohne tiefe technische Kenntnisse auf meine Dokumente zugreifen.</p>
</li>
<li>
<p>paperless_data: Die Meta-Daten</p>
</li>
<li>
<p>paperless_pgdata: Die SQL-Datenbank</p>
</li>
</ul>
<p>Nach einem Crash ist somit ein Restore kinderleicht.</p>
<h2>Update</h2>
<p>Ein Update ist dank der Container-Technologie einfach:</p>
<pre><code>docker-compose pull
docker-compose down
docker-compose up -d
</code></pre>
<p>Fertig. Die neue Version läuft.</p>
<h2>Finetuning</h2>
<h3>Tag-Empfehlungen:</h3>
<ul>
<li>
<p>Es macht keinen Sinn, dass Tags und Korrespondenten Duplikate sind. Also gibt es "Deutsche Telekom" und "O2" nur als Korrespondent. "Handy Vertrag" gibt es dafür als Tag.</p>
</li>
<li>
<p>Nicht für jeden Korrespondenten und jeden Dokumententyp macht es Sinn, diesen in Paperless-ng anzulegen. Einen Korrespondenten und einen Dokumententyp "Sonstiges" zu haben, wenn man sehr wahrscheinlich nicht viele dieser Dokumente haben wird, ist also durchaus legitim.</p>
</li>
<li>
<p>Mit der Anzahl der Tags sollte man es nicht übertreiben, da es hier sonst unübersichtlich werden kann. Hat man vorher mit einer Ordnerstruktur gearbeitet, kann man sich an dieser orientieren.</p>
</li>
</ul>
<h3>Anpassung Datumsformat</h3>
<h3>Ignore Dates</h3>
<pre><code>PAPERLESS_IGNORE_DATES="1954-02-16"
</code></pre>
<p>Paperless-ng findet automatisch das korrekte Datum anhand des Inhalts eines Dokuments. Aktuell wird dafür das erste gefundene Datum verwendet. Dies kann jedoch z. B. auch gerne mal das eigene Geburtsdatum sein. Entsprechend kann man Paperless-ng, wenn man die angegebene Option im <code>docker-compose.env</code> angibt, beibringen, das jeweilige Datum zu ignorieren.</p>
<h3>Datum aus Dateinamen</h3>
<p>Scanne ich Dokumente, dann erfasse ich im Dateinamen immer das schon das jeweilige Datum im Format YYYY-MM-DD. Also z. B. <code>2021-04-13</code>. Paperless-ng versucht normalerweise das Datum nur aus dem Inhalt des Dokument zu ermitteln. Der Dateiname wird ignoriert. Mit folgender Option prüft Paperless-ng zunächst den Dateinamen auf ein gültiges Datum:</p>
<pre><code>PAPERLESS_FILENAME_DATE_ORDER=YMD
</code></pre>
<p>Gerade wenn man vorher mit einer Ordnerstruktur gearbeitet hat und seine Dateien immer sauber benannt hat, ist diese Option sehr hilfreich.</p>
<h3>Delete Duplicates</h3>
<p>Paperless-ng prüft vor jedem Import per Checksumme, ob ein Dokument ein Duplikat ist. Ist dies der Fall, wird es nicht importiert. Verwendet man den consume-Ordner wird also die Datei im Ordner belassen und nicht angefasst. Dies führt in der Praxis gerne mal dazu, dass man sich wundert, warum die Datei so lange im Consume-Ordner liegt. Erst ein Blick ins Logfile oder auf die Webseite schafft dann Klarheit.</p>
<p>Gibt man die folgende Option an, dann löscht Paperless-ng Duplikate aus dem Consume-Ordner und erspart einem somit ein wenig Arbeit:</p>
<pre><code>PAPERLESS_CONSUMER_DELETE_DUPLICATES=true
</code></pre>
<h3>Recursive Consume Folder</h3>
<pre><code>PAPERLESS_CONSUMER_RECURSIVE=true
</code></pre>
<p>Dateien in Unterordnern des consume-Ordners werden von Paperless-ng standardmäßig ignoriert. Mit der oben genannten Option, werden auch Dateien aus Unterordnen erfasst.</p>
<h2>Fazit</h2>
<p>Paperless-ng läuft bei mir nun seit Anfang 2021 und verwaltet seitdem alle neu hinzugekommenen Dokumente. Auch alle meine bisherigen Dokumente habe ich erfasst. So komme ich nun mittlerweile auf nahezu 4000 Einzeldokumente.</p>
<p>Paperless-ng macht die Verwaltung von Dokumenten nicht sexy, aber erträglich. Die Software ist gut gepflegt, bekommt häufig Bugfixes und neue Features und läuft stabil. Die Pflege, Backup & Co ist Dank Containern sehr einfach und wenig Zeitaufwändig. Die Zuordnung von Tags, Korrespondenten und Dokumententypen funktioniert, sowohl über das neuronale Netzwerk oder alternativ auch über klassische Regex-Lösungen, sehr gut.</p>
<p>Für mich hat Paperless-ng meine bisherige Ordnerstruktur vollständig abgelöst. Alle Dokumente sind nun zentral verwaltet und gepflegt. Über den Monat verteilt werfe ich alle anfallenden Dokumente in den consume-Ordner oder lade sie über die App in Paperless-ng hoch. Einmal pro Monat wird dann die Zuordnung der Tags und Korrespondenten überprüft. Fertig.</p>
<h4>Dank & Feedback</h4>
<p>Titel-Photo by Photo by <a href="https://unsplash.com/@syinq?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText" rel="noopener noreferrer">Susan Q Yin</a> on <a href="https://unsplash.com/s/photos/library?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText" rel="noopener noreferrer">Unsplash</a></p>
<p>Ich freue mich über Feedback. Hinterlasst hier einen Kommentar oder Stern oder schreibt mir gerne per <a href="https://mstdn.social/@muc" rel="noopener noreferrer">Mastodon</a>.</p>
]]><![CDATA[Notizen: Zim & Joplin im Vergleich]]>https://write.tchncs.de/~/Paperless/desktop-wiki-und-notizbuch-zim-joplin/2021-01-04T13:13:15.005362+00:00rsmuchttps://write.tchncs.de/@/rsmuc/2021-01-04T13:13:15.005362+00:00<![CDATA[<p>Fast jeder nutzt sie: Notizzettel.</p>
<p>Schnell nur ein paar kleine Infos aufgeschrieben, an den Monitor gehängt und damit für immer notiert. Zumindest bis zum ersten größeren Windstoß.</p>
<p>Was ist mit längeren Notizen, die nicht in ein paar Worten erledigt sind? Einfach schnell in einen Texteditor und auf dem Desktop ablegen. Kein Problem.</p>
<p>Schwierig wird es, wenn die Post-its und Textfiles dann zur Dauereinrichtung werden. Es gibt einfach Informationen, die man sich nicht merken kann und möchte. Die eigene IBAN ... Wie man seine Linux-Distribution updated ... welche Blocklisten man in PiHole verwendet hat ... usw. usw.</p>
<p>Diese Informationen wollen halbwegs sortiert abgelegt werden, sodass man sie auch nach ein paar Wochen und Monaten wiederfindet.</p>
<p>Wer beruflich an Microsoft Lösungen gebunden ist, wird häufig mit <a href="https://www.onenote.com" rel="noopener noreferrer">OneNote</a> arbeiten. Abgesehen davon, dass es für Linux nicht verfügbar ist und von Microsoft in der aktuellen (offline) Form abgekündigt wurde, konnte ich mich selbst damit nie wirklich anfreunden. Mit Office 2019 gibt es nur noch die deutlich eingeschränkte Variante der OneNote App. Kollegen haben ihr halbes Arbeitswissen in OneNote abgelegt. Hunderte Seiten Dokumentation, Protokolle, Entwürfe und Co. Ich selbst nutze hierfür unseren zentral bereitgestellten Confluence-Server, da somit jeder auf mein Wissen zugreifen kann und keine Daten lokal bei mir gespeichert sind.</p>
<p>Im privaten Umfeld nutze ich schon seit Langem das <a href="https://zim-wiki.org/" rel="noopener noreferrer">Zim Desktop-Wiki</a>. Zim ist für alle Plattformen verfügbar, OpenSource, kommt ohne Cloud aus und ist intuitiv zu bedienen. Aber ist es das beste Tool?</p>
<h2>Kriterien für ein Desktop-Wiki</h2>
<p>Schauen wir uns zunächst die Kriterien für ein Desktop-Wiki an:</p>
<ul>
<li>Organisation der einzelnen Artikel in einer hierarchischen Struktur</li>
<li>kein Cloud-Zwang</li>
<li>schnelle und einfache Erfassung von Notizen</li>
<li>einfache Bedienung - nicht mit Funktionen überladen</li>
<li>Übersichtlichkeit</li>
<li>Einfügen von Anhängen möglich (z. B. Screenshots, Shell-Scripte)</li>
<li>Verlinkung der Artikel untereinander, Verlinkungen und Anhängen von Dateien</li>
<li>integrierte, gut funktionierende Suche</li>
<li>für Linux verfügbar</li>
</ul>
<h2>Joplin</h2>
<p>Im Zuge meiner Recherche nach Alternativen zu Zim bin ich dann auf <a href="https://joplinapp.org" rel="noopener noreferrer">Joplin</a> gestoßen. Da ich gerne in Markdown schreibe, ist dies definitiv ein Kandidat.</p>
<p>Mittels Markdown lassen sich ohne irgendwelche Tastenkombinationen oder wilde Klickerei mit der Maus Überschriften, Listenpunkte usw. erzeugen. Für ein schnelles Notieren z. B. in einer Konferenz also ideal. Für ein Desktop-Wiki, welches unsere Zettel-Sammlung auf dem Schreibtisch ersetzen soll, also ein Pluspunkt.</p>
<p>Schauen wir uns also Joplin ein wenig näher an.</p>
<h2>Export und Import</h2>
<p>Da ich nun Zim schon einige Zeit lang nutze, haben sich natürlich dort bereits viele Informationen und Notizen angesammelt. Wie kommt man also von Zim zu Joplin?</p>
<p>Da sowohl Zim als auch Joplin Markdown unterstützen, ist ein Wechsel zwischen beiden Applikationen gar kein Problem:</p>
<ol>
<li>In Zim auf "File --> Export"</li>
<li>Im sich öffnenden Fenster wählt man "Complete Notebook"</li>
<li>Als Format "Markdown (Pandoc)"</li>
<li>Und "Alle Seiten in eine eigene Datei"</li>
<li>In Anschluss wählt man noch den Ordner aus, in dem die Daten gespeichert werden sollen</li>
<li>In Joplin: File -> Import --> MD - Markdown (Directory) --> Das Verzeichnis auswählen und fertig</li>
</ol>
<p>Umgekehrt ist es leider nicht so einfach. Zim kann zwar in viele Formate exportieren, aber nur einfache Textdateien importieren.</p>
<p>Achtung beim Export/Import von Notizen mit Anhängen. Diese werden nicht automatisch migriert.</p>
<p>Ein Wechsel der Applikation bedeutet also immer ein wenig Aufwand. Aber dies ist auch immer eine gute Möglichkeit aufzuräumen. Zur Not geht es immer noch mit Copy & Pase, solange man irgendwie auf seine Notizen zugreifen kann.</p>
<h2>Die Bedienung</h2>
<p>Die Bedienung von Joplin unterscheidet sich nicht grundlegend von Zim und ist weitgehend selbsterklärend. Entsprechend gehe ich nur auf ein paar wenige Details ein. Der gravierendste Unterschied ist die Verwendung von <a href="https://markdown.de/" rel="noopener noreferrer">Markdown</a>.</p>
<h3>Notizbücher anlegen</h3>
<h4>In Joplin</h4>
<p>In Joplin legt man in der linken Sidebar einzelne Notebooks an. Diese können mittels "Sub-Notebooks" auch hierarchisch ineinander geschachtelt werden. Innerhalb eines Notebooks können dann die Notizen angelegt werden.</p>
<p>In der zweiten Spalte wählt man dann die jeweilige Notiz aus, die man lesen möchte.</p>
<h4>In Zim</h4>
<p>Zim sieht hier nicht viel anders aus. Startet man Zim zum ersten Mal, wird man aufgefordert ein Notebook anzulegen. Beim zweiten Start von ZIM, wird das Notebook automatisch geladen. Alles Weitere ist dann über einzelne Pages organisiert. Die Pages lassen sich wie bei Joplin die Notebooks ineinander schachteln, sodass sich hier eine hierarchische Struktur ergibt. Bei Bedarf kann man auch mehrere Notebooks anlegen, wenn man z. B. private und geschäftliche Notizen getrennt haben möchte. Jedes Notebook ist bei Zim in einem eigenen Verzeichnis im Filesystem abgelegt.</p>
<p>Joplin hat also direkt in einer GUI mehr Ebenen: Notebooks, Sub-Notebooks und Notes während Zim mit Pages und Sub-Pages auskommt. Bei Joplin liegen alle Daten in einer einzelnen Datenbank. Eine strikte Trennung von Privat und Beruf ist auf Datenebene also nicht möglich.</p>
<h3>Notizen anlegen und bearbeiten</h3>
<h4>In Joplin</h4>
<p>Die Notizen selbst kann man in Joplin nun entweder per Markdown erzeugen oder man kann auch über die Buttons oben rechts in den Rich-Text-Editor wechseln. Nutzt man diesen, gibt es in der Bedienung kaum noch einen Unterschied zu Zim.</p>
<p>Bei der Verwendung des Rich-Text-Editors weist Joplin explizit darauf hin, dass es einige Limitierungen gibt, da im Hintergrund weiterhin Markdown verwendet wird und unter anderem Plugins nicht mehr funktionieren könnten. Grundsätzlich sind diese Einschränkungen aber weniger gravierend, als die Warnmeldung einen annehmen lässt.</p>
<p>Das Schöne an Markdown, hat man sich einmal an die sehr einfache Syntax gewöhnt, kann man sehr schnell Überschriften, Bullet-Points usw. anlegen, ohne mit der Maus arbeiten zu müssen oder sich mit Tastenkombinationen auseinandersetzen zu müssen.</p>
<p>In Joplin kann man zudem zwischen mehreren Ansichten wechseln:</p>
<ul>
<li>Dem Editiermodus bei dem man im Markdown- oder dem Rich-Text-Editor schreibt</li>
<li>Dem View-Modus, bei dem nur das fertig gerenderte Dokument angezeigt wird.</li>
<li>Dem kombinierten Modus, bei dem man in der linken Seite Markdown schreibt und in der rechten das fertige Dokument sieht.</li>
</ul>
<p><img src="https://paperless.codeberg.page/paperless/joplinvszim_1_joplinedior.png" alt="[Joplin Notizen anlegen]"><a href="https://paperless.codeberg.page/paperless/joplinvszim_1_joplinedior.png" rel="noopener noreferrer">Joplin Notizen anlegen</a></p>
<h4>In Zim</h4>
<p>In Zim ist das Ganze schnell erklärt: In Zim gibt es nur eine Ansicht und Notizen werden über einen einfachen Rich-Text-Editor erzeugt. Die wichtigsten Formatierungsoptionen sind in der Toolbar zu finden, der Rest in der Menüleiste (Insert oder Format).</p>
<p>Eine echte Einarbeitung ist bei Zim nicht notwendig.</p>
<p><img src="https://paperless.codeberg.page/paperless/joplinvszim_2_zim_editor.png" alt="Zim Notizen anlegen"><a href="https://paperless.codeberg.page/paperless/joplinvszim_2_zim_editor.png" rel="noopener noreferrer">Zim Notizen anlegen</a></p>
<h3>Anhänge hinzufügen</h3>
<p>Sowohl bei Zim als auch bei Joplin können Anhänge über die Toolbar hinzugefügt werden.</p>
<p>In Joplin werden diese alle in einem Ordner mit einer eindeutigen ID gespeichert. Also z. B. <code>~/snap/joplin-james-carroll/current/.config/joplin-desktop/resources/819a136bb6ae454d8e0c7ae9450da14b.png</code></p>
<p>In Zim werden diese einfach in der Ordnerstruktur des Notizbuches unter dem originalen Namen abgelegt. Also z. B. <code>~/ZIM_Notebook/Notes/Artikelideen/joplinvszim_zim_editor.png</code></p>
<p>Im Anschluss sind diese, sowohl bei Joplin als auch bei Zim, über einen Link in der Notiz direkt erreichbar.</p>
<p>Löscht man diesen Link aus der Notiz, bleibt der Anhang bei beiden Tools im Dateisystem erhalten. Hier kann sich also mit der Zeit einiges an Müll ansammeln. Löscht man bei Zim aber nun z. B. die komplette Notiz "Artikelideen", so werden auch alle Anhänge entsorgt. Bei Joplin gibt es einen Garbage-Collector, welcher nach einiger Zeit die Anhänge aufräumen soll, da dies jedoch nicht immer zuverlässig funktioniert, gibt es auf Github gibt es hierzu einen <a href="https://github.com/laurent22/joplin/issues/932" rel="noopener noreferrer">Bug Report</a></p>
<p>Da man hier vermutlich eher nur Screenshots und kleine Konfigurationsdateien anhängt, sollte dies aber in beiden Fällen kein großes Drama sein. Wer viel mit Attachments arbeitet, sollte sich in Zim das "Attachment Browser"-Plugin mal ansehen.</p>
<h3>Theme wechseln</h3>
<p>Ich bin ein Fan von dunklen Designs, da ich hiermit auf Dauer besser arbeiten kann. Ich mag es einfach, wenn der Hintergrund dunkel und die Schrift hell ist und man nicht so sehr geblendet wird. Entsprechend ist auch Gnome bei mir auf ein dunkles Design eingestellt.</p>
<p>Während Zim einfach die Einstellungen von Gnome (GTK) übernimmt, kann (oder muss) man dies bei Joplin selbst einstellen.</p>
<p>Unter "Tools" --> "Options" --> "Appearance" kann man das Theme wechseln.</p>
<p>In Zim kann man zusätzlich die styles.conf Datei bearbeiten. Diese findet man unter ~/.config/zim/style.conf. Mir gefällt zum Beispiel die Farbe der Links (dunkelblau) nicht, da diese mit einem dunklen Hintergrund nicht gut zu erkennen sind. (Dies hat mich schon lange gestört, allerdings nie so sehr, dass ich mir eine Lösung gesucht habe. Aber eigentlich ist das Problem schnell gelöst)</p>
<p>Einfach Folgendes in der style.conf ändern:</p>
<pre><code>[Tag link]
foreground=blue
</code></pre>
<p>Mit "red" statt "blue" sehen die Links schon deutlich besser aus. Außerdem hätte ich noch gerne, dass diese unterstrichen sind. Also dies hier hinzufügen:</p>
<pre><code>underline=PANGO_UNDERLINE_SINGLE
</code></pre>
<p>Und schon sieht es besser aus.
Eine vollständige Übersicht über die styles.conf von Zim ist hier zu finden: <a href="https://zim-wiki.org/manual/Help/Config_Files.html" rel="noopener noreferrer">Zim Wiki Config Files</a></p>
<h3>Lokale Dateien verlinken</h3>
<p>Eine häufige Notiz bei mir: das Dokumentieren von Konfigurationsschritten ... In welche Datei fügt man noch mal eine neue Quelle für APT unter Debian ein?</p>
<p>In Zim klickt man auf das Link-Symbol und kann entweder nun mit einem Filebrowser die gewünschte Datei auswählen und einen Link-Text festlegen.</p>
<p>Bei Joplin sind wir an Markdown gebunden. Der Rich-Text-Editor hilft uns hier auch nicht weiter, da dieser nur ein einfaches Eingabefeld, aber keinen Dateibrowser öffnet.</p>
<p>So kann (unter Linux) auf eine Datei verlinkt werden:</p>
<pre><code>[Config File Test lokal link](file:///etc/pamac.conf)
</code></pre>
<p>Puh, das ist schon mal gar mal so komfortabel.</p>
<h3>Backup, Versionsverwaltung/History und Papierkorb</h3>
<p>Es können immer mal Fehler passieren. Ein Teil der Notiz aus Versehen überschrieben ... Problem. Entsprechend ist es natürlich immer gut, eine Möglichkeit zu haben, sich die Historie anzusehen und zu alten Ständen einzelner Artikel zurückgehen zu können. Auch ein generelles Backup ist nicht unwichtig.</p>
<h4>Backup</h4>
<p>Das Thema Backup ist bei beiden Tools einfach zu lösen. Bei Zim sichert man sich einfach den kompletten Notebook-Ordner. Dort liegen nur Textdateien und die Attachments. Also kein Problem diese zu sichern.</p>
<p>Bei Joplin werden die Daten in einer SQLite Datenbank gespeichert. Dies ermöglicht mehr Funktionen, wie die integrierte Versionsverwaltung, aber bedeutet eben auch, dass man ohne die Anwendung selbst nicht mehr oder nur sehr umständlich auf seine Daten zugreifen kann. Als Backup sichert man sich hier aber auch einfach nur den kompletten Ordner in dem die Datenbank liegt. Wo der Ordner zu finden ist, erfährt man, wenn man in Joplin auf <code>Tools -> Options</code> zugreift.</p>
<h4>Versionsverwaltung</h4>
<p>Was ist nun aber, wenn man nur einen einzelnen Eintrag verändert hat und die Änderungen verfolgen bzw. Rückgängig machen möchte?</p>
<p>In Joplin geht man beim jeweiligen Artikel auf das (i)-Info-Icon oben rechts.</p>
<p><img src="https://paperless.codeberg.page/paperless/joplinvszim_3_joplin_versionen.png" alt="Joplin Versionen einer Notiz"><a href="https://paperless.codeberg.page/paperless/joplinvszim_3_joplin_versionen.png" rel="noopener noreferrer">Joplin Versionen einer Notiz</a></p>
<p>Dann kann man durch alle Versionen springen und die Änderungen entsprechend verfolgen. Die Erstellung der Versionen erfolgt automatisch.</p>
<p>Zim verfolgt einen anderen Ansatz. Hier wird die Versionsverwaltung über Git (oder auch Bazaar und Mercurial)realisiert. Entweder kann hier natürlich einfach nur Git in der Commandline verwendet werden oder aber man verwendet die Integration direkt in Zim. Über "File --> Save Version..." wird ein neuer Commit erzeugt. Und mittels "File --> Versions..." kann man sich die einzelnen Commits anzeigen lassen. Die Zim-Variante ist zwar sicherlich mächtiger, jedoch für den Hausgebrauch auch ein wenig sperrig.</p>
<p>Sollte es "Save Versions" nicht geben, dann ist das Versioncontrol Plugin in Zim nicht aktiviert. Dies kann über "Edit --> Preferences --> Plugins --> Version Control" erfolgen. Absolut sinnvoll: Öffnet man dort die Konfiguration des Plugins, kann man dort ein Autosave einstellen. Ansonsten erfolgen Commits (Versionierung) nur manuell. Mehr hierzu kann man auch hier nachlesen: <a href="https://www.zim-wiki.org/manual/Plugins/Version_Control.html" rel="noopener noreferrer">Zim Wiki Version Control</a></p>
<p><img src="https://paperless.codeberg.page/paperless/joplinvszim_4_zimversions.png" alt="Zim Versionen einer Notiz"><a href="https://paperless.codeberg.page/paperless/joplinvszim_4_zimversions.png" rel="noopener noreferrer">Zim Versionen einer Notiz</a></p>
<p>Für den Anfänger ist Joplin hier sicher einfacher. Aber dafür kann es natürlich niemals so mächtig sein wie Git.</p>
<h4>Papierkorb</h4>
<p>Joplin hat keinen Papierkorb. Gelöschte Notizen sind gelöscht. Es gibt hier zwar Diskussionen und Feature-Wünsche, aber bis jetzt keine Umsetzung.</p>
<p>Bei Zim haben wir sogar zwei Möglichkeiten gelöschte Notizen wiederherzustellen:</p>
<ul>
<li>Zim verschiebt Notizen, die gelöscht werden in den Papierkorb des Systems. Die Notiz kann also aus dem System-Papierkorb einfach wiederhergestellt werden.</li>
<li>Mit aktivierter Versionsverwaltung, lässt sich die gelöschte Notiz natürlich auch einfach per Git & Co wiederherstellen.</li>
</ul>
<h3>Synchronisation & Android</h3>
<p>Um ehrlich zu sein, ist dies für mich nicht wirklich relevant, da ich das Desktop-Wiki nur lokal auf meinem privaten Notebook verwende. Auf dem Smartphone hatte ich bis jetzt nicht den Bedarf.</p>
<p>Für Joplin gibt es sowohl eine eigene Android- als auch eine iOS-App. Die Synchronisationsmöglichkeiten z. B. mit Dropbox sind direkt in Joplin integriert, es wird also kein Dropbox-Client benötigt. Aber auch Webdav (z. B. für mailbox.org) und viele weitere Anbieter/Protokolle sind möglich. Zudem lassen sich die Notizbücher verschlüsseln. Nicht schlecht.</p>
<ul>
<li>Bei Zim muss man hier auf externe Lösungen zurückgreifen. Also z. B. den Zim-Ordner per Seafile oder Nextcloud synchronisieren. Wer mobil unterwegs ist: Pech gehabt. Ein Android-Client ist zwar seit 2016 in der Planung. Wirklich passiert ist hier aber nichts. Man kann sich noch grob damit behelfen, dass die Txt-Dateien mit jedem Editor gelesen werden können. Schön ist anders, aber für die gelegentliche Verwendung ist das in Ordnung. Als App bietet sich hier z. B. <a href="https://f-droid.org/en/packages/com.simplemobiletools.notes.pro/" rel="noopener noreferrer">Simple Notes Pro</a> an.</li>
</ul>
<p><a href="https://paperless.codeberg.page/paperless/joplinvszim_5_simplenotes.png" rel="noopener noreferrer">Screenshot SimpleNotes</a></p>
<h2>Die Lizenz</h2>
<p>Zim unterliegt der GPL-2.0 und Joplin der MIT-Lizenz. Beide Applikationen sind also frei und vollkommen unkritisch. Der Sourcecode liegt jeweils bei Github:</p>
<p><a href="https://github.com/laurent22/joplin" rel="noopener noreferrer">Joplin bei Github</a></p>
<p><a href="https://github.com/zim-desktop-wiki/zim-desktop-wiki" rel="noopener noreferrer">Zim bei Github</a></p>
<h2>Die Installation</h2>
<p>Die Installation bei Zim ist einfach. Alle relevanten Distributionen bringen Zim in ihren Paketquellen mit. Eine Installation erfolgt also einfach über APT, YUM oder PACMAN.</p>
<p>Bei Joplin gibt es mehrere Möglichkeiten:</p>
<ul>
<li>Der offizielle Weg per AppImage, wie auf der Internetseite beschrieben</li>
<li>Snap (von mir genutzt)</li>
<li>AUR (unter Arch / Manjaro)</li>
</ul>
<p>Joplin ist mit 126 MB allerdings schon ein ganz schönes Schwergewicht, während Zim mit 7,7 MB auskommt.</p>
<p>Die Verwendung des Paketmanagers der Distribution hat zudem natürlich immer der Vorteil, dass man sich um Updates keine Gedanken machen muss. Bei Snap und AppImage muss man sich selbst kümmern.</p>
<p>Hier gehen die Punkte also an Zim.</p>
<h2>Pros und Cons Zusammenfassung</h2>
<p>Schauen wir uns also nochmal die beiden Tools im Vergleich an.</p>
<table><thead><tr><th>Feature </th><th> Joplin </th><th> Zim</th></tr></thead><tbody>
<tr><td>Installation </td><td> -- Nur als Snap oder AppImage </td><td> + Paketmanager</td></tr>
<tr><td>Installationsgröße </td><td> - 126 MB </td><td> + 7,7 MB</td></tr>
<tr><td>Synchronisation </td><td> + intern (z.B. Dropbox) </td><td> + extern (z.B. Nextcloud Client)</td></tr>
<tr><td>Mobiler Client (Android) </td><td> + ja </td><td> - nein</td></tr>
<tr><td>Datenspeicherung </td><td> - SQlite Datenbank </td><td> + Textfiles</td></tr>
<tr><td>Design </td><td> + modern </td><td> - etwas altbacken</td></tr>
<tr><td>Dateneingabe </td><td> + Markdown </td><td> + Rich Text</td></tr>
<tr><td>Projektaktivität </td><td> + hoch (307 Contributors) </td><td> + hoch (96 Contributors)</td></tr>
<tr><td>Letzer Release </td><td> + Vor 3 Tagen </td><td> + Vor 1 Monat</td></tr>
<tr><td>Verbreitung </td><td> + 20k Stars bei Github </td><td> + 1,1k Stars bei Github</td></tr>
<tr><td>Übersichtlichkeit </td><td> - OK </td><td> + Gut</td></tr>
<tr><td>Anhänge möglich </td><td> + ja </td><td> + ja</td></tr>
<tr><td>Links möglich </td><td> + ja (aber umständlich)</td><td> ++ ja</td></tr>
<tr><td>Plugins und Diagramme </td><td> ++ mittels Mermaid </td><td> + mittels Ditaa oder Diagram Editor</td></tr>
<tr><td>Versionskontrolle </td><td> + ja </td><td> + ja mittels git Integration</td></tr>
<tr><td>Papierkorb </td><td> - nein </td><td> + ja</td></tr>
<tr><td>Tabellen </td><td> ++ per Markdown </td><td> + per Plugin</td></tr>
<tr><td>Lizenz </td><td> + MIT </td><td> + GPL-2.0</td></tr>
<tr><td>Trennung von Privat und Beruf </td><td> - nein </td><td> + ja</td></tr>
<tr><td>Suche </td><td> + ja </td><td> + ja</td></tr>
</tbody></table>
<h2>Fazit</h2>
<p>Wie sieht nun mein Fazit aus, was das Thema Zim und Joplin angeht? Ich bin grundsätzlich nicht der absolute Power-User von Desktop-Wikis. Meine Notizen sind eher kurz und keine vollständige Wissensdokumentation. Also eher, was man sonst auf einen Post-it schmieren würde. Ein paar Linux Kommandos, die ich mir einfach nicht merken kann, weil ich sie nur selten verwende, ein paar Notizen zu Artikelideen usw.</p>
<p>Joplin ist wirklich eine interessante Alternative zu Zim und mein erstes Fazit nach den ersten Gehversuchen war: Ich werde in Zukunft Joplin verwenden.</p>
<p>Joplin bietet viele Funktionen wie die integrierte Synchronisation, die ich jedoch nicht brauche und wird insgesamt ein wenig moderner. Markdown ist eine praktische Sache, aber für ein Desktop-Wiki kein K.O.-Kriterium. Zum Teil mag dies eventuell sogar umständlicher sein.</p>
<p>Dass Joplin hauptsächlich nur über AppImages bzw. Snaps verteilt wird, ist dafür schon ein gravierender Nachteil. Die Verwendung auf Android ist für mich nicht so wichtig. Mein aktuelles Fazit ist also:</p>
<p>Beide Applikationen sind grundsätzlich sehr gut geeignet. Einen klaren Sieger gibt es nicht. Nach nun zweiwöchiger Nutzung von Joplin und anfänglicher totaler Begeisterung werde ich wieder zu Zim zurückkehren. Das gesamte Konzept ist etwas schlanker und für mich runder und entspricht mehr dem KISS-Prinzip. Keep it simple and stupid.</p>
<h4>Dank & Feedback</h4>
<p>Titel-Photo by <a href="https://unsplash.com/photos/hjDib8hePtw?utm_source=unsplash&utm_medium=referral&utm_content=creditShareLink" rel="noopener noreferrer">Kelly Sikkema</a></p>
<p>Vielen Dank an alle Kommentare und Hinweise die mich schon vorab per <a href="https://mstdn.social/@muc/105480259028366076" rel="noopener noreferrer">Mastodon</a> & Co erreicht haben. Ich freue mich über Feedback. Hinterlasst hier einen Kommentar oder ein Herz oder schreibt mir gerne per Mastodon.</p>
]]><![CDATA[Frühjahrsputz]]>https://write.tchncs.de/~/Paperless/frühjahrsputz/2020-12-27T21:08:21.584052+00:00rsmuchttps://write.tchncs.de/@/rsmuc/2020-12-27T21:08:21.584052+00:00<![CDATA[<p>Die freie Zeit zwischen den Jahren nutze ich, um nicht nur in unserer Wohnung, sondern auch auf dem Notebook klar Schiff zu machen. Herumliegende Dokumente werden digitalisiert und anschließend entsorgt, der Kleiderschrank wird ausgemistet und das ein oder andere unnütze Küchen-Gadget landet bei den Kleinanzeigen.</p>
<p>Auch vor meinem Notebook mache ich nicht halt. Auch dort sammelt sich im Laufe das Jahres vieles Unnötige an. Also Zeit für einen kleinen Frühjahrsputz.</p>
<h2>Backup</h2>
<p>Zunächst ist das Thema Backup dran. Alle Fotos, die in diesem Jahr neu hinzugekommen sind, werden gesichert. Wer öfter etwas auf meinem Blog ließt, kennt meine Affinität zu optischen Medien. Einmal gebrannt, können die Daten nur durch Umwelteinflüsse und den langsamen Zerfall des Datenträgers vernichtet werden. Ein versehentliches Überschreiben oder Ähnliches kann nicht zum Problem werden.</p>
<p>Lange Rede, kurzer Sinn: Alle Fotos von 2020 werden auf eine Blue-ray gebrannt. Bei Gelegenheit kommt diese Blue-ray dann in das Bankschließfach und somit sollte für die nächsten 10 - 20 Jahre Ruhe sein.</p>
<p>Das monatliche Offsite-Backup der digitalisierten Dokumente kann man in diesem Zuge natürlich auch gleich mitmachen.</p>
<h2>Aufräumen</h2>
<p>So nun ist alles gesichert. Aber spätestens bei einem Blick in den Dateimanager fällt auf: Es hat sich ganz schön viel Schrott angesammelt. Nur noch 20 GB freier Speicher ... dies wird wohl für das neue Jahr nicht mehr ausreichen.</p>
<h3>Papierkorb</h3>
<p>Also zunächst das Offensichtliche: Werfen wir einen Blick in den Papierkorb. Eine kurze Prüfung, ob sich dort irgendwas befindet, was noch gebraucht wird: Nein. Also weg damit.</p>
<p>--> 10 GB mehr Speicherplatz.</p>
<p>(Ja, den Papierkorb könnte ich auch öfter mal leeren)</p>
<h3>Downloads</h3>
<p>Das zweite Offensichtliche: der Downloads-Ordner. Auch hier kann eigentlich fast alles weg.</p>
<p>--> Noch mal 5 GB mehr Speicherplatz.</p>
<h3>Flatpak</h3>
<p>Jetzt schauen wir ein wenig tiefer ins System. Für ein paar wenige Programme verwende ich Flatpaks. Bei Flatpaks werden alte Runtimes, die nicht mehr benötigt werden, nicht automatisch entfernt. So kann sich hier einiges an Unsinn ansammeln.</p>
<p>Also entfernen wir alles Unnötige:</p>
<pre><code>flatpak uninstall --unused
</code></pre>
<p><a href="https://www.linuxuprising.com/2019/02/how-to-remove-unused-flatpak-runtimes.html" rel="noopener noreferrer">Mehr Details bei Linuxuprising.com</a></p>
<p>Dann noch ein Blick, was wir denn alles so per Flatpak installiert haben:</p>
<pre><code>flatpak list
</code></pre>
<p>Flatpaks sind meist nicht gerade schlank, entsprechend lohnt es sich hier unnötige Applikationen zu entfernen:</p>
<pre><code>flatpak uninstall Tootle
</code></pre>
<p>--> 4 GB mehr freier Speicherplatz</p>
<h3>Snap</h3>
<p>Auch Snap dümpelt auf meinem System herum. Schauen wir also an, ob es auch hier unnötige Pakete gibt und entfernen diese ggf.</p>
<pre><code>snap list
snap remove gitkraken
</code></pre>
<p>--> Bei mir war hier nichts Unnötiges dabei.</p>
<h3>pacman-Paketmanager Cache leeren</h3>
<p>Hier wird es nun distributionsspezifisch. Im Cache vom Paketmanager kann sich auch das ein oder andere unnötige ansammeln. Ich verwende Manjaro, also eine Distribution, die auf Arch basiert und pacman als Paketmanager verwendet.</p>
<p>Schauen wir uns zunächst an, wie viel Platz verbraucht wird:</p>
<pre><code>du -h /var/cache/pacman/pkg
</code></pre>
<p>Bei mir sind dies immerhin 8 GB.</p>
<p>Und nun leeren wir den Cache:</p>
<pre><code>sudo pacman -Scc
</code></pre>
<p>--> 8 GB Speicherplatz (temporär) gewonnen.</p>
<h3>Orphans entfernen</h3>
<p>Wird unter Manjaro Software installiert, hat diese häufig Abhängigkeiten zu anderen Paketen. Wird nun die ursprüngliche Software deinstalliert, kann es sein, dass die Abhängigkeiten auf dem System verbleiben, obwohl diese eigentlich gar nicht mehr gebraucht werden. Also weg damit:</p>
<pre><code>sudo pacman -Rns $(pacman -Qtdq)
</code></pre>
<p>Näheres hierzu:</p>
<p><a href="https://wiki.archlinux.org/index.php/System_maintenance#Clean_the_filesystem" rel="noopener noreferrer">Arch Wiki</a></p>
<p><a href="https://averagelinuxuser.com/clean-arch-linux/" rel="noopener noreferrer">Howto bei averagelinuxuser.com</a></p>
<h3>Cache leeren</h3>
<p>Bleibt noch der Cache-Ordner im Home-Verzeichnis. In diesem Verzeichnis speichern viele Applikationen ihre temporären Dateien. Häufig bleiben hier Reste übrig, gerade wenn ein Programm gelöscht wurde.</p>
<pre><code>~/.cache/
</code></pre>
<p>Das Verzeichnis kann einfach per <code>rm -rf ~/.cache/*</code> geleert werden.</p>
<p>--> 5 GB Speicherplatz freigegeben</p>
<h3>Disk Usage Analyzer</h3>
<p>Das war der einfache Teil, da es nur Systemdaten betroffen hat. Aber es sammeln sich auch überall persönliche Daten an. Schauen wir uns noch an, wo es überhaupt effektiv ist aufzuräumen.</p>
<p>Mittels des Tools "Disk Usage Analyzer" kann man einfach ermitteln, wo denn der meiste Platz benötigt wird. Screenshots und mehr Infos sind auf der Webseite zu finden:</p>
<p><a href="https://wiki.gnome.org/action/show/Apps/DiskUsageAnalyzer" rel="noopener noreferrer">Webseite</a></p>
<p>Die größten Speicherfresser sind bei mir die Digikam-Foto-Bibliothek und das Verzeichnis für das Backintime-Backup. Hier gibt es nichts zu entfernen.</p>
<p>Aber auch hier konnte ich viel finden, was nicht mehr benötigt wird. Alte virtuelle Maschinen, Verzeichnisse, in denen noch Fotos sind, obwohl schon eine Kopie in Digikam liegt usw.</p>
<h2>Fazit</h2>
<p>Statt der 20 GB, die anfangs verfügbar waren, sind nun wieder 60 GB nutzbarer Speicherplatz frei. Nicht super viel, aber für die nächsten Monate sollte dies wieder ausreichend sein.</p>
<p>Wird dann doch mehr gebraucht, muss ich entweder eine größere SSD einbauen oder das Backup von Backintime auslagern. Aber alles zu seiner Zeit.</p>
<p><span>Photo by <a href="https://unsplash.com/@daniel_von_appen?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText" rel="noopener noreferrer">Daniel von Appen</a> on <a href="https://unsplash.com/s/photos/cleaning?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText" rel="noopener noreferrer">Unsplash</a></span></p>
]]><![CDATA[Backup: Kontakte und Kalender]]>https://write.tchncs.de/~/Paperless/backup-kontakte-und-kalender/2020-12-17T12:59:50.437869+00:00rsmuchttps://write.tchncs.de/@/rsmuc/2020-12-17T12:59:50.437869+00:00<![CDATA[<h2>Die Ausgangssituation</h2>
<p>Seit Jahren bin ich nun zufriedener Kunde bei mailbox.org und nutze dies nicht nur als Mailanbieter, sondern habe dort auch mein Adressbuch und auch meinen Kalender. Beides wird mit meinem Smartphone synchronisiert und hauptsächlich dort genutzt. Gelegentlich auch auf dem Notebook (Gnome Calendar) oder über das Webinterface selbst.</p>
<p>Es war der Juni 2019, in der sorglosen Prä-Corona-Zeit, auf dem Weg in ein Urlaubswochenende. Mein Smartphone war der Meinung, dass es mitten auf der Autobahn eine gute Idee ist abzustürzen, während die Navigation läuft und nebenbei DAVx gerade meine Kontakte synchronisiert. Nach einem Neustart: Das Adressbuch ist leer. DAVx versucht erneut zu synchronisieren. Es sind nur noch 3 unvollständige Einträge im Adressbuch. 330 Kontakte weg.</p>
<p>Dank Synchronisation ist vermutlich alles auch auf dem Server gelöscht. Und wegen aktivierter 2FA mit dem Yubikey ist ein Einloggen auf dem Webinterface vom Smartphone aus nicht möglich. Ein guter Start ins Wochenende.</p>
<h2>Vdirsyncer</h2>
<p>Mailbox.org und vermutlich auch die meisten anderen Anbieter führen kein Backup von Kalender und Adressbuch durch. Gelöscht ist gelöscht.</p>
<p>Aber es gibt Abhilfe in Form des Tools <a href="https://github.com/pimutils/vdirsyncer" rel="noopener noreferrer">vdirsyncer</a>. Vdirsyncer kann eigentlich mehr als nur einfache Backups erstellen. Das Tool kann Kalender und Kontakte vollständig zur Offline-Nutzung in beide Richtungen synchronisieren. Uns interessiert hauptsächlich der Weg vom (mailbox.org-)Server zum Notebook.</p>
<h3>Die Installation</h3>
<p>Viele Wege führen nach Rom. In diesem Fall sind sie zum Glück alle nicht besonders steinig.</p>
<p>Ich verwende als Linux-Distribution Manjaro, welche auf ArchLinux basiert und mit dem auf das AUR von Arch zugegriffen werden kann. Im AUR ist vdirsyncer vorhanden und gut gepflegt und kann somit einfach installiert werden. Auch für Debian und Ubuntu stehen Pakete zur Verfügung und können einfach installiert werden: <a href="https://vdirsyncer.pimutils.org/en/stable/installation.html" rel="noopener noreferrer">Offizielle Dokumentation</a></p>
<p>Alle anderen können auch mit Python PIP / PyPi arbeiten. Ein einfaches <code>pip install --user vdirsyncer</code> sollte ausreichend sein.</p>
<h3>Die Konfiguration</h3>
<p>Bis hierhin war es noch einfach. Die Konfiguration erfolgt in der Datei <code>~/.vdirsyncer/config</code>. Also legen wir diese Datei an.</p>
<p>Eine detaillierte Beschreibung der Konfigurationsdatei findet sich in der Dokumentation des Tools: <a href="https://vdirsyncer.pimutils.org/en/stable/tutorial.html" rel="noopener noreferrer">Link zur Dokumentation</a></p>
<p>Mit diesem Beispiel werden sowohl die Kontakte als auch der Kalender von Mailbox.org synchronisiert. Das Passwort wird nicht direkt in der Konfigurationsdatei gespeichert, sondern über das secret-tool abgerufen. Details dazu gleich.</p>
<pre><code>[general]
status_path = "~/.vdirsyncer/status/"
############
# Kontakte
############
[pair example_contacts]
a = "example_contacts_local"
b = "example_contacts_remote"
collections = ["from a", "from b"]
metadata = ["displayname"]
conflict_resolution = "b wins"
[storage example_contacts_local]
type = "filesystem"
path = "~/.vdirsyncer/contacts/"
fileext = ".vcf"
[storage example_contacts_remote]
type = "carddav"
url = "https://dav.mailbox.org/caldav/"
username = "example@mailbox.org"
password.fetch = ["command", "secret-tool", "lookup", "mailbox", "mailbox"]
###########
# Kalender
###########
[pair example_calendar]
a = "example_calendar_local"
b = "example_calendar_remote"
collections = ["from a", "from b"]
metadata = ["displayname", "color"]
conflict_resolution = "b wins"
[storage example_calendar_local]
type = "filesystem"
path = "~/.vdirsyncer/calendars/"
fileext = ".ics"
[storage example_calendar_remote]
type = "caldav"
url = "https://dav.mailbox.org/caldav/"
username = "example@mailbox.org"
password.fetch = ["command", "secret-tool", "lookup", "mailbox", "mailbox"]
</code></pre>
<p>Die hier genannte Beispielkonfiguration kann so weit 1:1 übernommen werden. Nur "example" muss durch den jeweiligen Username bei Mailbox.org ersetzt werden.</p>
<p>Was ist nun mit dem Passwort? Die einfache Variante, statt dem im Beispiel genannte 'password.fetch ...' wäre der Eintrag:</p>
<pre><code>password = "asdf"
</code></pre>
<p>Ich bin allerdings kein großer Fan von Klartext-Passwörtern in Konfigurationsdateien. Faktisch würde dies kein echtes Problem darstellen, wenn das komplette Home-Verzeichnis oder die komplette Partition verschlüsselt ist. Denn kommt ein potenzieller Angreifer an der Verschlüsselung vorbei, z. B. weil er an ein laufendes System kommt ohne gesperrten Bildschirmschoner, hilft auch das secret-tool nicht mehr. Sicherer wäre nur, bei jeder Synchronisation das Passwort händisch einzugeben. Aber übertreiben wir es mal nicht.</p>
<p>Also speichern wir nun das Passwort mit dem secret-tool im Keystore:</p>
<pre><code>secret-tool store --label="example" mailbox mailbox
</code></pre>
<p>Anschließend geben wir das Passwort ein, drücken Enter und fertig.</p>
<p>Zum Test können wir uns das Passwort nun auch auf der Kommandline ausgeben lassen:</p>
<pre><code>secret-tool lookup mailbox mailbox
</code></pre>
<p>So, nun wird es ernst. Vor dem ersten Synchronisieren habe ich den Kalender und auch alle meine Kontakte über das Webinterface von Mailbox.org einmalig exportiert. Sicher ist sicher.</p>
<p>Starten wir nun also die Synchronisation:</p>
<pre><code>vdirsyncer discover && vdirsyncer metasync && vdirsyncer sync
</code></pre>
<p>Fertig.</p>
<p>Vdirsyncer sucht nun nach allen vorhandenen Adressbüchern und Kalendern und synchronisiert diese mit dem lokalen Rechner.</p>
<p>Alle Termine und Kontakte liegen nun im Verzeichnis ~/.vdirsyncer als .ics Dateien bzw. als .vcf. Prinzipiell können sie auch dort editiert und wieder zurück synchronisiert werden. Die Formate .ics und .vcf sind Standardformate und können entweder einfach per Textedior editiert werden und werden von jeder Kalender- bzw. Adressbuch-Applikation verstanden.</p>
<p>Da der Aufruf für ein Backup ein wenig sperrig ist, habe ich ihn bei mir in ein einfaches, einzeiliges Script gepackt, welches ich jeden Monat einmal händisch starte und somit alles sichere.</p>
<h2>Versionsverwaltung mit GIT</h2>
<p>Es muss nicht immer ganz so schlimm kommen wie in meiner einleitenden Erfahrung. Einfach nur aus Versehen einen einzelnen Kontakt auf dem Smartphone gelöscht oder das Geburtsdatum der falschen Kontakts verändert und versehentlich gespeichert: Dank Synchronisation sind die Daten futsch. Dank dem Backup mit vdirsyncer erst mal kein Problem. Aber wie bekommt man überhaupt mit, dass man aus Versehen das Geburtsdatum geändert hat. Die Antwort lautet hier wieder, wie schon bei den digitalisierten Dokumenten: Git.</p>
<p>Zu Git habe ich im letzten Backup-Artikel schon mal ein wenig geschrieben: <a href="https://write.tchncs.de/%7E/Paperless/schritt-5-das-backup" rel="noopener noreferrer">Hier gehts zum Artikel</a>. Für die Kontakte und Kalender kann man genauso vorgehen. Das Verzeichnis vom vdirsyncer wird einfach in Git aufgenommen und alle Änderungen sind in Zukunft zu sehen. Ein kurzer Blick: Oh da ist ja ein neuer Geburtstag eingetragen und hier habe ich drei Kontakte gelöscht. Wollte ich das wirklich?</p>
<p>Wenn ja: git commit und gut ist</p>
<p>Wenn nein: zurück zur letzten Version</p>
<h2>Wenn alle Stricke reißen</h2>
<p>Alles, was irgendwie veränderlich ist, kann auch zerstört werden. Ein böser böser Trojaner, der unsere vcards verändert, mit dem mailbox.org Server synchronisiert und unser lokales Git zerstört. Ok nicht sehr wahrscheinlich. Trotzdem brenne ich bei meinen monatlichen Dokumenten-Backups einfach das .vdirsyncer Verzeichnis mit auf meine Dokumenten DVD und bunkere diese DVDs regelmäßig in meinem Bankschließfach. Sieh auch: <a href="https://write.tchncs.de/%7E/Paperless/schritt-5-das-backup" rel="noopener noreferrer">Backup-Artikel</a></p>
<p>Etwas paranoid ... Aber sicher.</p>
<h2>Das Ende der Geschichte</h2>
<p>Am Ende des trotz alledem schönen Wochenendes, welches jedoch tatsächlich immer wieder von den Gedanken und der Unsicherheit bezüglich der verlorenen Kontakte überschattet wurde: Notebook eingeschaltet und auf dem Webinterface von mailbox.org angemeldet. Schnell in die Kontakte gewechselt. Puhh noch alle Kontakte vorhanden. Zur Sicherheit ein händischer Export über das Webinterface gemacht, die Synchronisation auf dem Smartphone neu eingerichtet und alles war wieder gut.</p>
<p>In Zukunft: Jedes Monat ein Backup und Versionsverwaltung in GIT, damit so etwas nicht mehr vorkommt.</p>
]]><![CDATA[Fotos: Eingeklebte Fotos digitalisieren]]>https://write.tchncs.de/~/Paperless/fotos-eingeklebte-fotos-digitalisieren/2020-11-06T16:17:04.638834+00:00rsmuchttps://write.tchncs.de/@/rsmuc/2020-11-06T16:17:04.638834+00:00<![CDATA[<h2>Eingeklebte Fotos digitalisieren</h2>
<p>Lose Fotos bzw. Fotos, die aus einem Album entnommen werden können und Negative zu digitalisieren war der einfache Teil. Dank Dokumentenscanner und Film-/Negativ-Scanner kommt man durch die Fotoalben relativ schnell durch und hat eine durchaus brauchbare Qualität.</p>
<p>Nun aber zum unschönen Teil: Fotos, die in ein Album fest eingeklebt sind, sich also nicht entnehmen lassen und bei denen es auch keine Negative mehr gibt. Glücklicherweise sind die meisten Fotos in meiner Sammlung entnehmbar. Aber es gibt auch 4 - 5 Alben, bei denen dies nicht der Fall ist. Gerade diese Fotos sind immer wieder kritisch, weil die Klebstoffe nicht unbedingt ideal für die Fotos sind. Was also tun?</p>
<p>Das Naheliegendste wäre wohl zunächst einen Flachbettscanner zu verwenden. Allerdings habe ich hier zwei Probleme: Erstens habe ich keinen Flachbettscanner und zweitens sind die meisten Fotoalben so dick, dass die Krümmung in der Mitte so stark ist, dass ein Einscannen mit dem Flachbettscanner unmöglich ist.</p>
<p>Was bleibt also übrig: Abfotografieren mit einem Smartphone, für welches es spezielle Foto-Scanner Apps gibt oder mit einer Spiegelreflexkamera (oder ähnlich guten Kamera). Schauen wir uns die unterschiedlichen Varianten näher an.</p>
<h3>Smartphone: Google Fotoscanner App</h3>
<p>Die Android-App, welche man am häufigsten für diesen Anwendungszweck findet, ist die <a href="https://www.google.com/intl/de/photos/scan/" rel="noopener noreferrer">Google Fotoscanner App</a>.</p>
<h4>Fotoscanner - Datenschutz</h4>
<p>Grundsätzlich bin ich Google Apps gegenüber etwas skeptisch, was das Thema Datenschutz angeht. Aber die Fotoscanner App hat laut "Exodus Privacy" keinen einzigen Tracker integriert: (Stand 08.10.2020) <a href="https://reports.exodus-privacy.eu.org/en/reports/com.google.android.apps.photos.scanner/latest/" rel="noopener noreferrer">Link zum Exodus Report</a></p>
<p>Zudem erfolgt die Verarbeitung lokal auf dem eigenen Smartphone und auch die Ergebnisse werden lokal gespeichert. Also keine Cloud im Spiel und Google bekommt von unseren Fotos nichts mit.</p>
<h4>Fotoscanner - Preis</h4>
<p>Den Google Fotoscanner gibt es kostenlos. Ohne InApp-Käufe, Abomodell oder Ähnliches.</p>
<h4>Fotoscanner - Betriebssysteme</h4>
<p>Die App ist sowohl für iOS (iPhones) als auch für Android verfügbar.</p>
<h4>Fotoscanner - Workflow</h4>
<p>Der Bedienung der App ist sehr intuitiv, da es auch gar nicht viele Einstellmöglichkeiten gibt. Es gibt nur zwei Optionen:</p>
<ul>
<li>Smartphone Licht: aktivieren / deaktivieren (Blitz Symbol)</li>
<li>Spiegelungen entfernen: aktivieren / deaktivieren (Zauberstab)</li>
</ul>
<p>Mit aktiver "Zauberstab-Funktion" fokussiert man nun das Foto im angezeigten Rahmen und drückt auf den Auslöser. Nun werden vier weiße große Punkte angezeigt, welche man nun jeweils nacheinander abfahren muss. Hat man dies erledigt, versucht die App alle vorhandenen Spiegelungen auf dem Foto zu entfernen und ein perfektes Ergebnis zu berechnen.</p>
<p><img src="https://write.tchncs.de/static/media/A270079D-82A6-3791-91CA-90BC8AE191EF.png" alt="Fotoscanner Verwendung" width="300"> </p><center>(Zauberstab-Funktion)</center><p></p>
<p>Deaktiviert man die "Zauberstab-Funktion", kann man Foto für Foto abfotografieren, ohne, dass man die Punkte abfahren muss. Spiegelungen werden dann jedoch nicht entfernt.</p>
<p>Der Zeitunterschied ist hier immens: Mit Zauberstab braucht man circa 10 - 15 Sekunden pro Foto. Ohne Zauberstab ist das Ganze in einer Sekunde erledigt. Allerdings dann eben auch ohne Korrektur der Spiegelungen.</p>
<p>Die zweite Option, die Verwendung des Kameralichtes, ist zwar in der offiziellen Dokumentation der App empfohlen, ich kann diese Empfehlung jedoch nicht teilen. Aktiviere ich das Licht, sieht man bei vielen Fotos die Körnung des Fotoabzugs. Dies kann die App auch nicht herausrechnen. Also besser: Smartphone-Licht deaktivieren und für eine gute Beleuchtung im Raum sorgen. Auch dies verhindert Spiegelungen, sodass man auch die "Zauberstab-Funktion" nicht braucht und man hat kein Problem mit der Körnung.</p>
<p>Nach dem Abfotografieren kann man unten rechts in die Galerie gehen und sich das Ergebnis ansehen. Neben dem reinen Betrachten gibt es dort auch die Option, das Foto zu rotieren und ggf. die Ecken anzupassen. Die App versucht immer die Ränder eines Fotos korrekt zu erkennen und somit nur das eigentliche Foto darzustellen. Meiner Erfahrung nach funktioniert dies sehr gut. Sollte es mal nicht klappen, da zum Beispiel die Kontraste zwischen Foto und Fotoalbum zu gering sind, kann man entsprechend manuell nachhelfen.</p>
<p>Die Ergebnisse sind anschließend in der Bildergalerie des Smartphones verfügbar.</p>
<h4>Fotoscanner - Ergebnis</h4>
<p>Sehen wir uns das Ergebnis an. Links ist das Referenzfoto, das mit dem Dokumentenscanner Brother ADS-1200 gescannt wurde und sehr nahe an das Original herankommt:</p>
<p><img src="https://write.tchncs.de/static/media/E344ED0A-9A7D-1BE0-7965-E8DE5877F905.png" alt="Dokumentenscanner vs Fotoscanner">
</p><center>(Referenzfoto vs. Fotoscanner)</center><p></p>
<p>Das Ergebnis weicht farblich deutlich vom Original ab. Auch sind einige Farbdetails gar nicht wahrzunehmen, wie beispielsweise das rote Halsband des Kamels. Details sind teilweise gar nicht zu erkennen. z. B. die Finger des Reiters.</p>
<ul>
<li>Dateigröße: 1,5 MB</li>
<li>Auflösung: 2000 x 1333 px</li>
</ul>
<p>Da die Darstellung der Bilder hier im Blog nicht ideal ist, deshalb hier noch die Links zu den Originalen:</p>
<ul>
<li><a href="https://raw.githubusercontent.com/rsmuc/rsmuc.github.io/test/content/Paperless/pictures/Fotoscanner/Referenzfoto.jpg" rel="noopener noreferrer">Link zum Referenzfoto</a></li>
<li><a href="https://raw.githubusercontent.com/rsmuc/rsmuc.github.io/test/content/Paperless/pictures/Fotoscanner/Fotoscanner-Ergebnis.jpg" rel="noopener noreferrer">Link zum Resultat von Google Fotoscanner</a></li>
<li><a href="https://raw.githubusercontent.com/rsmuc/rsmuc.github.io/test/content/Paperless/pictures/Fotoscanner/Dokumentenscanner%20vs%20Google%20Fotoscanner.png" rel="noopener noreferrer">Link zur direkten Gegenüberstellung</a></li>
</ul>
<h3>Smartphone: Photomyne</h3>
<p>Bei meiner Recherche im Google Play Store bin ich dann noch über die App "Photomyne" für Android gestolpert.</p>
<h4>Photomyne - Datenschutz</h4>
<p>Schauen wir uns auch hier das Thema Datenschutz an. Laut Exodus Privacy integriert die App insgesamt 8 Tracker und benötigt 13 Berechtigungen. Unter anderem das Aufnehmen von Audio und das Deaktivieren des Ruhemodus. Wozu auch immer die App diese Berechtigungen braucht: <a href="https://reports.exodus-privacy.eu.org/en/reports/com.photomyne/latest/" rel="noopener noreferrer">Link zum Exodus Report</a></p>
<p>Es gibt keine Option, die Tracker zu deaktivieren.</p>
<p>Zur Verwendung der App benötigt man einen kostenpflichtigen Account. Hat man sich diesen angelegt, werden alle Fotos, die man mit der App erfasst, als Backup und zum Datenaustausch mit dem PC in den Clouddienst von Photmyne hochgeladen. Diese Funktion lässt sich auch nicht deaktivieren. Ein rein lokales Arbeiten ist also nicht möglich. Zudem gibt es auch keine Option, einen Account und seine Daten selbst zu löschen. Dies muss sehr umständlich über ein Support-Ticket erfolgen.</p>
<p>Aus Sicht des Datenschutzes: Durchgefallen mit Note 6.</p>
<h4>Photomyne - Betriebssysteme</h4>
<p>Die App ist für Android und iOS verfügbar.</p>
<h4>Photomyne - Preis</h4>
<p>Die App ist kostenpflichtig. Was erst mal kein Problem ist. Es gibt unterschiedliche Modelle:</p>
<ul>
<li>Monatliche Zahlung für je 9,99 €</li>
<li>Jährliche Zahlung für 38,99 €</li>
<li>2 Jahre für 59,99 € (nur über die Webseite verfügbar)</li>
<li>Einmalige Zahlung für 42,99 €</li>
</ul>
<p>Aber Achtung: Bei der angeblichen einmaligen Zahlung gilt das Abo nur für 5 Jahre und für bis zu 20.000 Fotos. Alles etwas undurchsichtig.</p>
<p>Die kostenpflichtige Version kann 3 Tage kostenlos getestet werden. (Achtung: Kündigung nicht vergessen!)</p>
<h4>Photomyne - Workflow</h4>
<p>Der Workflow unterscheidet sich leicht von der Fotoscanner App. Photomyne kann selbst Alben verwalten. Man hat also nach der Aufnahme alle Fotos sauber sortiert in einzelnen Alben.</p>
<p>Zum Fotografieren der Bilder geht man ähnlich vor. Der Blitz/Smartphone-Licht wird bei der App nie verwendet. Auch sonst gibt es erst mal keine weiteren Optionen.</p>
<p>Praktisch an der App: Man kann eine komplette Seite eines Albums mit mehreren Fotos gleichzeitig fotografieren. Die App erkennt die unterschiedlichen Fotos und schneidet diese entsprechend zurecht. Allerdings sinkt dadurch natürlich auch die Auflösung pro Foto.</p>
<p>Bei jedem Foto erfolgt automatisch eine Nachbearbeitung und Korrektur der Aufnahme durch die App. Auch bei Photomyne ist eine manuelle Korrektur der Kanten über die Galerie möglich.</p>
<p>Anschließend können die Fotos auf das Smartphone exportiert werden oder eben über die Cloud von Photomyne abgerufen werden.</p>
<p><img src="
https://write.tchncs.de/static/media/3C9E76CC-9ED9-7817-F94F-C07570B15E3B.png" alt="Photomyne Verwendung" width="300"></p>
<h3>Photomyne - Ergebnis</h3>
<p>Auch hier ein Vergleich mit dem Referenzfoto:</p>
<p><img src="https://write.tchncs.de/static/media/8BF575E0-BB2F-109D-CD62-30A022223534.png" alt="Dokumentenscanner vs Photomyne">
(Referenzfoto vs. Photomyne)</p>
<p>Die Ergebnisse sind ähnlich zum Google Fotoscanner. Deutliche Farbabweichungen und wenig Details. Von den Farben jedoch etwas besser als bei Google und die Auflösung ist höher. Dafür gibt es zusätzlich eine deutlichen Verzerrung im Vergleich zum Referenzbild.</p>
<ul>
<li>Dateigröße: 1,1 MB</li>
<li>Auflösung: 3400 x 2300 px</li>
</ul>
<ul>
<li><a href="https://raw.githubusercontent.com/rsmuc/rsmuc.github.io/test/content/Paperless/pictures/Fotoscanner/Referenzfoto.jpg" rel="noopener noreferrer">Link zum Referenzfoto</a></li>
<li><a href="https://raw.githubusercontent.com/rsmuc/rsmuc.github.io/test/content/Paperless/pictures/Fotoscanner/Photomyne%20Ergebnis.png" rel="noopener noreferrer">Link zum Resultat von Photomyne</a></li>
<li><a href="https://raw.githubusercontent.com/rsmuc/rsmuc.github.io/test/content/Paperless/pictures/Fotoscanner/Dokumentenscanner%20vs%20Photomyne.png" rel="noopener noreferrer">Link zur direkten Gegenüberstellung</a></li>
</ul>
<h3>Smartphone: CamScanner</h3>
<p>Als dritte Smartphone-App kommt noch CamScanner in Frage. CamScanner möchte viel mehr sein als eine reine "Scan-App" für Fotos, sondern möchte auch das Scannen von Dokumenten inkl. OCR übernehmen.</p>
<p>Link zur Herstellerseite: <a href="https://www.camscanner.com/" rel="noopener noreferrer">https://www.camscanner.com/</a></p>
<h4>CamScanner - Datenschutz</h4>
<p>CamScanner glänzt mit insgesamt 12 Trackern in der App. Alles was Rang und Namen ist mit an Board:</p>
<p><a href="https://reports.exodus-privacy.eu.org/en/reports/com.intsig.camscanner/latest/" rel="noopener noreferrer">Link zum Exodus Report</a></p>
<p>Es gibt auch hier keine Option, die Tracker zu deaktivieren. Dafür gibt es immerhin keinen ungewollten Cloud-Upload, sondern die Fotos bleiben erst mal lokal gespeichert.</p>
<p>Trotzdem nicht unbedenklich.</p>
<h4>CamScanner - Betriebssysteme</h4>
<p>Die App ist sowohl für iOS (iPhones) als auch für Android verfügbar.</p>
<h4>CamScanner - Preis</h4>
<p>CamScanner ist eine Lösung, die deutlich mehr kann als nur Fotos "scannen". CamScanner hat auch eine OCR-Funktion und vieles Weiteres mit dabei.</p>
<p>Zum einfachen Digitalisieren von Fotos reicht die kostenlose Version. Soll es dann etwas mehr sein bzw. wird die höchste Auflösung gebraucht, wird die Premium-Version für 49,99 € pro Jahr fällig. Die Preisstruktur ist deutlich übersichtlicher als bei Photomyne.</p>
<h4>CamScanner - Workflow</h4>
<p>Der Workflow ist sehr ähnlich zu den anderen beiden Apps. CamScanner sortiert die Fotos nach dem Aufnehmen in automatisch generierte interne Alben.
Nachdem man ein Foto abfotografiert hat, erscheint jedoch sofort die Kantenkorrektur, welche man im Normalfall nur bestätigen muss. Dies ist ein sehr sinnvoller Workflow, denn so bleibt einem das spätere Prüfen und Anpassen des Ergebnisses erspart und man kommt mit deutlich weniger Schritten aus.</p>
<p><img src="
https://write.tchncs.de/static/media/37299C64-31F9-3916-6D3B-5EC2D2AE8482.png" alt="Kantenkorrektur CamScanner" width="300"></p><center>(Kantenkorrektur bei CamScanner direkt nach dem Fotografieren)</center><p></p>
<p>Möchte man nun in der kostenlosen Version die Fotos exportieren, selektiert man einfach alle Fotos und wählt "Teilen" und "in JPG-Format teilen" aus. Anschließend kann man auswählen, wo die Fotos auf dem Smartphone gespeichert werden sollen. Fertig.</p>
<h4>CamScanner - Ergebnis</h4>
<p><img src="https://write.tchncs.de/static/media/6D0CE090-9A1A-8B8B-13D6-60F0AFB08027.png" alt="Dokumentenscanner vs CamScanner">
</p><center>(Referenzfoto vs. CamScanner)</center><p></p>
<p>CamScanner kann, obwohl das gleiche Smartphone verwendet wurde, die besten Ergebnisse erzielen. Farbdetails (Halsband) und auch Feinheiten (Finger) sind deutlicher zu erkennen als bei Google Photoscanner und Photomyne. Die Auflösung ist ähnlich hoch wie bei Photomyne, das Ergebnis jedoch deutlich detailreicher. Interessanterweise hat CamScanner trotz der hohen Auflösung die kleinste Dateigröße. Die Verzerrung hält sich in grenzen. Während es beim Google Fotoscanner eher zu einer leichten horizontalen Streckung gekommen ist, hat CamScanner eher eine leicht vertikale Streckung.</p>
<ul>
<li>Dateigröße: 1,0 MB</li>
<li>Auflösung: 3400 x 2400 px</li>
</ul>
<ul>
<li><a href="https://raw.githubusercontent.com/rsmuc/rsmuc.github.io/test/content/Paperless/pictures/Fotoscanner/Referenzfoto.jpg" rel="noopener noreferrer">Link zum Referenzfoto</a></li>
<li><a href="https://raw.githubusercontent.com/rsmuc/rsmuc.github.io/test/content/Paperless/pictures/Fotoscanner/CamScannerErgebnis.jpg" rel="noopener noreferrer">Link zum Resultat von CamScanner</a></li>
<li><a href="https://raw.githubusercontent.com/rsmuc/rsmuc.github.io/test/content/Paperless/pictures/Fotoscanner/Dokumentenscanner%20vs%20CamScanner.png" rel="noopener noreferrer">Link zur direkten Gegenüberstellung</a></li>
</ul>
<h3>Abfotografieren mit der Spiegelreflex</h3>
<p>Als letzte Option bleibt noch das Abfotografieren der Fotos mit der Spiegelreflex oder einer anderen guten Kamera und das anschließende Nachbearbeiten am PC mit ScannedImageExtractor und Digikam.</p>
<p>Link zur Projektseite von ScannedImageExtractor: <a href="http://www.dominik-ruess.de/scannerExtract/" rel="noopener noreferrer">http://www.dominik-ruess.de/scannerExtract/</a></p>
<h4>Spiegelreflex - Datenschutz und Preis</h4>
<p>ScannedImageExtractor ist Open Source Software und unterliegt der GPLv3. Was das Thema Datenschutz und Preis angeht, sind wir hier also auf der sicheren Seite.</p>
<h3>Spiegelreflex - Workflow</h3>
<p>Der grundlegende Workflow ist einfach:</p>
<p>1.) Foto(s) abfotografieren (ohne Blitz).</p>
<p>2.) Auf den PC übertragen.</p>
<p>3.) scannedImageExtractor starten.</p>
<p>4.) Bild laden, speichern, fertig.</p>
<p>Damit ich die Fotos meiner Spiegelreflex laden konnte, musste ich bei mir allerdings die Bilder von YYY.JPG zu YYY.jpg umbenennen.</p>
<p>Die Erkennung des Fotos erfolgt je nach Hintergrund ähnlich zuverlässig wie bei den Smartphone Apps. Die Smartphone-Apps haben hier aber nie Nase vorn. Auch bei scannedImageExgtractor können, wie auch bei Photomyne, mehrere Fotos auf einmal erfasst werden. Allerdings reduziert sich auch dann natürlich wieder die Qualität.</p>
<p>Der Workflow dauert nicht viel länger als bei den Smartphoneapps, da das Fotografieren mit der Spiegelreflex schnell geht und man in scannedImageExtractor über die Pfeil-Buttons von einem Foto zum nächsten springen kann. Da scannedImageExtractor, wie der Name schon sagt allerdings die Arbeit mit einem Scanner im Fokus hat, versucht die Applikation auch gar nicht erst Verzerrungen durch die Aufnahme auszugleichen. Hier muss man also besonders darauf achten, dass die Fotos gerade und ohne Krümmung fotografiert werden.</p>
<p><img src="https://write.tchncs.de/static/media/A1036AD7-E176-DB27-D062-91B497C2D5D5.png" alt="scannedImageExtracor"></p>
<p>Je nach Ergebnis kann es noch sinnvoll sein, die Farben in Digikam korrigieren zu lassen.</p>
<hr>
<p><strong><em>Hinweis:</em></strong></p>
<p>Die Installation von scannedImageExtractor war bei mir unter Manjaro ein wenig hakelig. Es ist zwar im AUR verfügbar, allerdings scheiterte der Download von Sourceforge. Ich haben dann den Download-Pfad im Build-Script angepasst und konnte es so erfolgreich installieren.</p>
<p>Die letzte Entwicklung an der Software ist 2015 passiert.</p>
<hr>
<h3>Spiegelreflex - Ergebnis</h3>
<p><img src="https://write.tchncs.de/static/media/6F412633-DB84-CB43-83EA-7A34CC065AFA.jpg" alt="scannedImageExtractor Ergebnis">
(vor der Digikam Autokorrektur)</p>
<p><img src="https://write.tchncs.de/static/media/62083092-A99B-4779-50BA-574B1864266D.jpg" alt="Autocorrect Digikam">
(nach der Digikam Autokorrektur)</p>
<p><img src="https://write.tchncs.de/static/media/5383A1F9-0868-4D6F-E6BC-A2380F537D14.png" alt="Dokumentenscanner vs Spiegelreflex">
(Referenzfoto vs. Spiegelreflex)</p>
<p>Dateigröße: 2,4 MB
Auflösung: 3500 x 2300 px</p>
<p>Nach der Autokorrektur mit Digikam, sind die Farben und auch die Farbdetails (Halsband) am besten. Von der Qualität bei den Details (Finger) kann das Abfotografieren mit der Spiegelreflex mit CamScanner erstaunlicherweise nicht ganz mithalten. Allerdings kann hier man hier mit der "Schärfen"-Funktion von Digikam noch ein wenig korrigieren und sieht dann ähnlich viele Details. Vermutlich arbeitet hier auch CamScanner einfach mit einer stärkeren digitalen Nachbearbeitung.</p>
<ul>
<li><a href="https://raw.githubusercontent.com/rsmuc/rsmuc.github.io/test/content/Paperless/pictures/Fotoscanner/Referenzfoto.jpg" rel="noopener noreferrer">Link zum Referenzfoto</a></li>
<li><a href="https://raw.githubusercontent.com/rsmuc/rsmuc.github.io/test/content/Paperless/pictures/Fotoscanner/ImageExtractor_Result_Autocorrection.jpg" rel="noopener noreferrer">Link zum Resultat der Spiegelreflex - nach Digikam Autokorrektur der Farben</a></li>
<li><a href="https://raw.githubusercontent.com/rsmuc/rsmuc.github.io/test/content/Paperless/pictures/Fotoscanner/ImageExtractor_Result_v2.jpg" rel="noopener noreferrer">Link zum Resultat der Spiegelreflex - nach Digikam Schärfung</a></li>
<li><a href="https://raw.githubusercontent.com/rsmuc/rsmuc.github.io/test/content/Paperless/pictures/Fotoscanner/Dokumentenscanner%20vs%20Spiegelreflex.png" rel="noopener noreferrer">Link zur direkten Gegenüberstellung</a></li>
</ul>
<h2>Fazit</h2>
<p>Wer hätte schon gedacht, dass Google die datenschutzfreundlichste Android-App ins Rennen schickt? Aus Datenschutzsicht ist nur der Google Fotoscanner und das Fotografieren mit der Spiegelreflex mit anschließender Nachbearbeitung unter Linux unbedenklich.</p>
<p>Die besten und schnellsten Ergebnisse erhält man mit der CamScanner App, allerdings muss man hier mit den integrierten Trackern leben.</p>
<p>Photomyne fällt wegen der Datenschutzbedenken und auch der Foto-Ergebnisse komplett raus.</p>
<p>Der Unterschied zum Dokumentenscanner ist bei allen Varianten erheblich. Wenn möglich, sollte man also immer die Fotos entnehmen und mit einem ordentlichen Scanner einscannen oder auf die Negative zurückgreifen. Somit entfällt dann auch das Problem von Verzerrungen. Wenn sich nur komplette Seiten aus dem Album entnehmen lassen, dann kann man auch mit einem Flachbettscanner und anschließend scannedImageExtractor arbeiten.</p>
<p>Der Aufwand ist für alle Varianten ähnlich hoch und alle Varianten liefern halbwegs brauchbare Ergebnisse. Fest eingeklebte Fotos machen aber trotzdem einfach keinen Spaß.</p>
<p>Ich persönlich werde wohl, wo es gar nicht anders geht, die CamScanner App in Kombination mit Blokada nutzen.</p>
<hr>
<p><strong><em>Hinweise:</em></strong></p>
<ul>
<li>Vielen Dank an <a href="//write.tchncs.de/@/dadosch@social.tchncs.de/" title="dadosch@social.tchncs.de" rel="noopener noreferrer">@dadosch@social.tchncs.de</a> für den Hinweis bzgl. scannedImageExtractor.</li>
</ul>
<hr>
]]><![CDATA[Fotos digitalisieren - Negative]]>https://write.tchncs.de/~/Paperless/fotos-digitalisieren-negative/2020-11-03T09:02:48.663827+00:00rsmuchttps://write.tchncs.de/@/rsmuc/2020-11-03T09:02:48.663827+00:00<![CDATA[<h2>Negative digitalisieren</h2>
<p>Durchwühlt man seine analoge Fotosammlung, stößt man unweigerlich auch auf Negative. Bei mir waren nicht für alle Fotos noch die Negative und nicht für alle Negative noch die Fotoabzüge verfügbar. Fotos digitalisieren können wir mit dem Dokumentenscanner, wie ich schon im letzten Artikel beschrieben habe. Für Negative ist dies nicht möglich.</p>
<h3>Scanner</h3>
<p>Für relativ kleines Geld (~80 €) sind Dia- und Negativ-Scanner zu haben. Ich habe mich für ein Gerät von der Firma DIGITNOW! verfügbar. Der Scanner selbst ist auch ohne PC verwendbar und somit komplett Betriebssystem unabhängig. Es gibt auch deutlich höherpreisige Geräte, bei mir war allerdings mit 80 € die Schmerzgrenze erreicht. Auch mit einem Flachbettscanner mit Durchlichtungseinheit wäre ein Scannen von Negativen möglich. Allerdings war dies zu teuer, zu langsam und zu groß.</p>
<p><img src="https://write.tchncs.de/static/media/AB6CBAE1-E5D5-F575-9456-DA3E2A80480E.jpg" alt="Negativ Scanner"></p>
<p>Die Fotos beim Negativ-Scanner werden auf einer SD-Karte oder dem internen Speicher des Scanners abgelegt. Der interne Speicher ist 128 MB und damit erst mal ausreichend. Die Stromversorgung des Scanners erfolgt per USB über das mitgelieferte Netzteil oder man verwendet einen USB-Port eines PCs oder Notebooks. Zum Übertragen der Daten kann man dann vom Scan-Modus in den USB-Modus des Geräts wechseln. Der Scanner wird dann als "USB-Stick" erkannt und die fertigen JPEGs können vom Gerät kopiert werden.</p>
<h3>Workflow</h3>
<p>Zum eigentlichen Scannen schiebt man einfach das Negativ durch den passenden beiliegenden Adapter, richtet das Negativ aus und drückt den Scan-Knopf. Anschließend das Negativ um ein Foto weiter schieben und wieder den Scan-Knopf drücken. Damit lässt sich ein Film relativ schnell digitalisieren. Pro Foto braucht man nur wenige Sekunden und ist somit auch nicht langsamer als bei Fotos mit dem Dokumentenscanner.</p>
<p>Problematisch ist allerdings Staub und sonstige Verschmutzungen. Man sollte drauf achten, dass die Negative von Anfang an möglichst staubfrei sind. Ansonsten hat man auf dem Foto hinterher die entsprechenden Artefakte. Noch unangenehmer: Der Staub setzt sich auch im Gerät fest und entsprechend hat man dann die Artefakte auf jedem Foto. Man sollte also immer wieder prüfen, dass keine Verschmutzungen auf den Fotos sind und das Gerät regelmäßig reinigen. Die beigelegte Reinigungsbürste halte ich für ziemlich ungeeignet. Etwas besser hat es mit einem Brillenputztuch, welches ich um einen dünnen Stift gewickelt habe, funktioniert. Richtig schön ist dies jedoch nicht. Schade, dass man das Gerät zum Reinigen nicht einfach öffnen kann.</p>
<h3>Weitere Einstellungen</h3>
<p>Neben dem Scan-Modus, gibt es noch weitere Modi und Einstellungen für den Scanner. Diese erreicht man mittels der Pfeiltasten. So kann man die erfassten Fotos im Betrachtungsmodus ansehen oder, wie bereits beschrieben, im USB-Modus vom Scanner direkt auf einen Rechner kopieren. Auch ein direktes Spiegeln oder Rotieren des erfassten Bildes ist möglich. Dies mache ich jedoch nicht auf dem Gerät, sondern später in Digikam.</p>
<p>Im Menü "Film", kann man die Art des Films auswählen. Also ob man ein Negativ erfassen will oder ein Dia. Zudem kann dort das Format des jeweiligen Films (z.B. 135mm) angegeben werden.</p>
<p>Im Menü "Resolution", kann die Auflösung eingestellt werden: 14 oder 22 Megapixel. Da der Scanner allerdings nur einen 14 Megapixel Sensor hat, wird bei 22 Megapixel interpoliert. Dies führt also zu keiner besseren Bildqualität, sondern nur zu einer größeren Datei. Die Angaben bei dem ein oder anderen großen Internethändler sind hier etwas schwammig. Mal ist von 22 Megapixeln, mal von 16 und dann wieder von 14 Megapixeln die Rede. Hier also bei der Bestellung aufpassen, dass man keine böse Überraschung erlebt.</p>
<h3>Nacharbeit</h3>
<p>Im Vergleich zwischen einem eingescannten Bild und einem eingescannten Negativ zeigen sich farblich einige Unterschiede, wie der Vergleich zeigt.</p>
<p><img src="https://write.tchncs.de/static/media/889E714D-AE29-AFEF-AC35-F5C16FE1607A.png" alt="Negativ vs Fotoscan">
<em>(links Foto-Scan - rechts Negativ-Scan)</em></p>
<p>Der deutlich zu sehende Blaustich lässt sich per Software jedoch sehr leicht korrigieren. Ich verwende zum Verwalten und auch Bearbeiten meiner Fotosammlung "<a href="https://www.digikam.org/" rel="noopener noreferrer">Digikam</a>", welches in jeder Distribution enthalten sein sollte. Alternativ kann man die aktuelle Version auch als AppImage von der Webseite des Projektes herunterladen oder als Flatpak beziehen: <a href="https://flathub.org/apps/details/org.kde.digikam" rel="noopener noreferrer">Flathub</a>.</p>
<p>Zum Korrigieren des Blaustichs:</p>
<pre><code>DigiKam --> Image Editor --> Auto-Correction --> Equalize
</code></pre>
<p>Schon sieht das Ergebnis deutlich besser aus. Zu Digikam selbst, gibt es später noch einen eigenen Artikel.</p>
<p><img src="https://write.tchncs.de/static/media/544888BC-D517-9BC0-9C4B-513798D710E4.png" alt="Autocorrection - Equalize">
<em>(links vorher - rechts hinterher)</em></p>
<p>Das Endergebnis zwischen eingescanntem entwickelten analogen Foto und eingescanntem Negativ ist am Ende sehr ähnlich.</p>
<p>Alles im allem erreicht man schnelle und akzeptable Ergebnisse für relativ kleines Geld. Zum Konservieren von Erinnerungen ist es allemal ausreichend. Man digitalisiert ja keine Kunstwerke, sondern Erinnerungen an die Kindheit, die Eltern und die Großeltern. Wer fehlerfreie Scans und eine bessere Qualität will, muss entsprechend mehr in einen höherwertigen Scanner investieren oder gleich einen Dienstleister beauftragen.</p>
<hr>
<p><strong><em>Hinweis:</em></strong></p>
<p>Beim Scannen von Negativen muss das Fotos häufig hinterher gespiegelt werden.</p>
<p>Auch dies ist in DigiKam möglich:</p>
<pre><code>Image Editor --> Toolbar --> Transform --> Flip Horizontal
</code></pre>
<hr>
]]><![CDATA[Fotos unter Linux digitalisieren]]>https://write.tchncs.de/~/Paperless/fotos-unter-linux-digitalisieren/2020-10-30T10:29:44.195266+00:00rsmuchttps://write.tchncs.de/@/rsmuc/2020-10-30T10:29:44.195266+00:00<![CDATA[<h2>Fotos digitalisieren</h2>
<p>In nicht allzuferner Vergangenheit hat man bekanntermaßen noch analog fotografiert. In meinem Fall trifft dies auf alle Fotos vor 2003 zu. Nun haben entwickelte Fotos die Angewohnheit, dass sie mit der Zeit ausbleichen, zerkratzen und knicken, sich Beschichtungen auflösen oder auch gerne einfach mal verloren gehen. Also ist es auch hier sinnvoll zu digitalisieren.</p>
<p>Es gibt spezielle Fotoscanner, welche jedoch nicht ganz günstig sind. Zudem ist dies, anders als beim Scannen von Dokumenten, nur eine Einmalaktion. Die Anschaffung eines eigenen Scanners hierfür ist also nicht sinnvoll.</p>
<p>Auch Dienstleister, welche Fotos digitalisieren, sind eine Option. Mit 20 - 50 Cent pro Foto ist aber auch dies bei einer größeren Sammlung kein Schnäppchen.</p>
<p>Also warum nicht einfach den Dokumentenscanner verwenden, den wir bereits haben? Dank dem automatische Dokumenteneinzug hält sich der Zeitaufwand für das Scannen in Grenzen und die Auflösung von alten Fotos ist meist sowieso nicht besonders hoch. Hierfür reicht auch ein Dokumentenscanner.</p>
<p>Die Voraussetzung jedoch: Die Fotos sind nicht in einem Album eingeklebt.</p>
<h3>Das Scannen</h3>
<p>Zum Scannen setzen wir wieder auf den Gnome Document Scanner (aka. Simple Scan). Als Auflösung behalten wir die voreingestellten 600 DPI für Fotos bei. Anders als bei den Dokumenten brauchen wir allerdings nur die Vorderseite. In den Einstellungen aktivieren wir also bei "Scan Sides" nur "Front".</p>
<p>Zum eigentlichen Scannen wählen wir in Document Scanner nun aus, dass Fotos gescannt werden und wir alle Dokumente auf dem "Feeder" erfassen wollen.</p>
<p><img src="https://write.tchncs.de/static/media/24FFBE18-C700-5C92-7D03-454D153F2442.png" alt="Document Scanner Settings"></p>
<p>Vor dem Scannen und auch nach jedem Durchgang sollte man immer wieder die Scaneinheit von Staub und sonstigen Rückständen befreien. Kleine Scan-Artefakte mögen bei Dokumenten nicht stören, bei Fotos sind sie aber äußerst unschön und schon kleine Verschmutzungen hinterlassen einen durchgehenden Streifen auf dem Scan. Zum Reinigen hat sich bei mir ein Brillenputztuch und ein wenig Glasreiniger (Frosch) bewährt.</p>
<p>Schon nach dem ersten Durchgang ist ein großer Nachteil zu erkennen: Die Papiergröße des Fotos wird nicht automatisch erkannt. Wir haben also große leere Flächen im JPEG.</p>
<p><img src="https://write.tchncs.de/static/media/ED038EB0-FCB5-8A7F-4AC7-3FCB8951231B.png" alt="Document Scanner Rand"></p>
<p>Leider kann "Document Scanner" dies nicht ausgleichen und auch die anderen bekannten Programme zum Scannen haben keine Funktion, dass die Fotos automatisch zugeschnitten werden (auto-cropping). Mit Windows oder Mac hätten wir es hier etwas einfacher.</p>
<p>Aber dies ignorieren wir nun erst mal und kümmern uns im nächsten Kapitel um das Problem. Zunächst speichern wir die Fotos als JPEG ab. Bei einem PDF erzeugt "Document Scanner" ein mehrseitiges PDF. Bekanntermaßen ist dies bei JPEGs nicht möglich ... und auch nicht sinnvoll. "Document Scanner" nummeriert also die Fotos beim Speichern einfach durch. Geben wir also z.B. <code>1995-Berlin.jpg</code> als Dateinamen an, macht "Document Scanner" daraus: <code>1995-Berlin-1.jpg, 1995-Berlin-2.jpg, 1995-Berlin-3.jpg</code>.</p>
<h3>Fotos zuschneiden (Crop / Trim)</h3>
<p>Nun aber zu dem unschönen Problem, dass wir große weiße Flächen haben. Wir könnten nun jedes Foto einzeln zuschneiden, dies ist jedoch ein enormer Aufwand. Einige Hundert bis Tausend Fotos händisch bearbeiten ... Nein, danke.</p>
<p>Da alle Fotos gleich groß sind, könnten wie nun auch mittels imagemagick diese auf die gleiche Größe zuschneiden:</p>
<pre><code>convert foto1.jpg -crop 300x260+3070+2065 cropped-foto1.jpg
</code></pre>
<p>Aber sind wirklich alle Fotos gleich groß? Leider nein. Wir haben schließlich immer mal wieder andere Formate. Für jedes Format, die Werte einzeln ermitteln, ist machbar, aber mühsam.</p>
<p>Aber "convert" hat zum Glück auch eine "-trim" Option. Es ermittelt also selbst wo das Foto aufhört und schneidet dieses zurecht.</p>
<pre><code>convert foto1.jpg -trim +repage cropped-foto1.jpg
</code></pre>
<p>Leider wird nun noch immer nicht alles Unnötige weggeschnitten. Wir müssen also einen Schwellwert angeben. Dies geht mit der Option "-fuzz":</p>
<pre><code>convert foto1.jpg -fuzz 35% -trim cropped-foto1.jpg
</code></pre>
<p>Je nach Scanner muss man ein wenig mit dem Wert von "-fuzz" experimentieren. Bei meinen Fotos hatte ich mit 35% sehr gute Ergebnisse. Es wurde nicht zu viel und nicht zu wenig weggeschnitten. Ab und zu passiert es mal, dass ein grauer Himmel oder ähnliches abgeschnitten wird.</p>
<p>Kippen wir dies nun noch in ein kleine Shell-Script und schon können wir mit einem einzigen Aufruf alle eingescannten Fotos automatisch zuschneiden:</p>
<pre><code>find . -type f -name '*.jpg' -not -path '*cropped*' -print0 | while IFS= read -r -d '' file;
do
echo "$file"
mkdir -p "cropped" && convert $file -fuzz 35% -trim +repage cropped/$file
echo Done
done
</code></pre>
<p>Und schon haben wir beinahe perfekt zugeschnittene Fotos.</p>
<p><img src="https://write.tchncs.de/static/media/92E9AE67-2CA2-115E-5B31-C6BECC1151FD.png" alt="Fotos ohne Rand"></p>
]]><![CDATA[Tools - 5 -: Dateien automatisch sortieren mit Organize]]>https://write.tchncs.de/~/Paperless/tools-5-dateien-automatisch-sortieren-mit-organize/2020-09-30T14:10:48.898420+00:00rsmuchttps://write.tchncs.de/@/rsmuc/2020-09-30T14:10:48.898420+00:00<![CDATA[<p>Sein wir mal ehrlich. Das Thema papierloses Büro ist schon ein wenig lästig. Ist eben doch Papierkram. Ob dieser nun digital bei uns aufschlägt oder analog ... Das Ganze muss mindestens überflogen und sortiert werden.</p>
<p>Das einsortieren in die Ordnerstruktur ist zwar praktisch, wenn es um das Wiederfinden geht, aber einer der aufwändigsten Schritte. Allerdings können wir dies auch dies automatisieren. So müssen wir dann gar nichts mehr machen.</p>
<p>Mein erster Ansatz war: Anhand des Dateinamens verschiebe ich die Dokumente in den richtigen Ordner. Dies setzt voraus, dass die Dateinamen eindeutig sind, funktioniert aber erst mal ganz gut ...</p>
<pre><code>mv "*kontoauszug*.pdf" /home/ich/Dokumente/01_Bank/HVB/2020/Kontoauszüge/
...
</code></pre>
<p>Nun gibt es aber immer wieder Dokumente, die nicht ganz so einfach zu identifizieren sind. Was, wenn wir nicht nur Kontoauszüge von der HVB haben, sondern auch noch von der comdirect Bank oder der Deutschen Bank und die Dateien dort sehr ähnlich heißen? Oder wir haben mehrere Konten bei einer einzelnen Bank?</p>
<p>Dann hilft uns der Dateiname nicht mehr weiter.</p>
<p>Nun hätten wir noch die Dateiinhalte, anhand derer wir sortieren können. Die Idee ist einfach. Kommt das Schlagwort IBAN 12345678957445 und Kontoauszug im Dokument vor, dann wird es wohl ein Kontoauszug von unserem Konto mit der Nummer 12345678957445 sein. Aber mit einem Shell-Script kommen wir nicht einfach an die Inhalte des PDFs ran.</p>
<p>Ich hatte nun schon begonnen, mir wieder mittels Python ein Script zu schreiben, welches die Aufgabe übernimmt, da bin ich auf Organize gestoßen: <a href="https://github.com/tfeldmann/organize" rel="noopener noreferrer">https://github.com/tfeldmann/organize</a></p>
<h2>Organize</h2>
<p>Organize kann mittels unterschiedlichster Kriterien Dateien sortieren. Dies kann der Dateinamen, der Inhalt, die Meta-Daten, die Größe und einiges mehr sein. Für uns ist vor allem der Dateiname und der Inhalt interessant. Anhand dieser Kriterien können dann Dateien weiterverarbeitet werden, also z. B. umbenannt, verschoben oder kopiert. Genau das was wir brauchen, um uns das Leben in Zukunft einfach zu machen.</p>
<h3>Installation</h3>
<p>Die Installation ist schnell erledigt. Entweder es ist in den Repositorys oder AUR der Distribution enthalten oder man kann es mittels pip nachinstallieren:</p>
<pre><code>pip install organize-tool
</code></pre>
<hr>
<p><strong><em>Randnotiz:</em></strong></p>
<p>Verwendet man Firejail auf seinem System, sollte man ggf. das Profil für pdftotext unter /etc/firejail/pdftotext.profile anpassen bzw. mittels einer pdftotext.local erweitern. pdftotext darf ansonsten nur im "Downloads"- und "Documents"-Ordner arbeiten.</p>
<hr>
<p>Ob die Installation erfolgreich war, können wir so testen:</p>
<pre><code>organize --help
</code></pre>
<h3>Konfiguration von Organize</h3>
<p>Eine ausführliche Dokumentation ist hier zu finden: <a href="https://organize.readthedocs.io" rel="noopener noreferrer">https://organize.readthedocs.io</a></p>
<p>Alle Aktionen, die Organize durchführen soll, werden über eine einzelne Konfigurationsdatei festgelegt.</p>
<p>Wo diese Datei liegt, können wir uns so anzeigen lassen:</p>
<pre><code>$ organize config --path
/home/ich/.config/organize/config.yaml
</code></pre>
<p>Mittels <code>organize config</code> wird Konfigurationsdatei direkt im Standardeditor geöffnet.</p>
<p>Wie schon an der Dateiendung zu erkennen, handelt es sich um eine YAML-Datei, welche einen sehr einfachen Aufbau hat.</p>
<p>Es werden einfach die einzelnen Regeln nacheinander aufgelistet. Also z. B.:</p>
<pre><code>rules:
- folders: ~/Downloads
subfolders: false
filters:
- filename:
contains: 'PapierlosesBuero'
actions:
- move: "/home/ich/Dokumente/1 Blog/"
- folders: ~/Downloads
subfolders: false
filters:
- filename:
contains: 'Linux'
actions:
- move: "/home/ich/Dokumente/2 Linux/"
</code></pre>
<p>Hat man alle Regeln definiert und die Datei gespeichert, einfach nur <code>organize run</code> ausführen und schon sollte organize die Regeln abarbeiten. Werden nun keine Dateien gefunden, welche ein Filter passt, sieht es so aus:</p>
<pre><code>$ organize run
Nothing to do.
</code></pre>
<p>Trifft ein Filter zu, werden die definierten Aktionen ausgeführt:</p>
<pre><code>$organize run
Folder /home/ich/Dokumente/Inbox/:
File 2020-09-21 Rechnung Nutzerwechselgebühren [Steuer2020].pdf:
- [Copy] Copy to "/home/ich/Dokumente/4 Steuer/Einkommensteuer 2020/2020-09-21 Rechnung Nutzerwechselgebühren [Steuer2020].pdf.pdf"
- [Move] Move to "/home/ich/Dokumente/8 Wohnung/2020-09-21 Rechnung Nutzerwechselgebühren [Steuer2020].pdf [Steuer2020].pdf"
</code></pre>
<h4>Kommentare einfügen</h4>
<p>Damit man die Übersicht in der Konfiguration behält, kann man im YAML-File auch Kommentare einfügen. Alles, was mit einem <code>#</code> beginnt, wird ignoriert.</p>
<h4>Arbeitsverzeichnisse definieren:</h4>
<p>Möchte man nun, dass eine Regeln nicht für einen einzelnen Ordner gilt, sondern für mehrere, lässt sich folgendes Konstrukt anwenden:</p>
<pre><code>document_folders: &docs
- ~/Dokumente/Inbox
- ~/Downloads/Inbox
rules:
- folders: *docs
subfolders: false
filters:
- filename:
contains: 'Linux'
actions:
- move: "/home/ich/Dokumente/2 Linux/"
</code></pre>
<p>Die Regel wird also auf alle definierten Verzeichnisse angewendet.</p>
<h4>Filter kombinieren</h4>
<p>Es lassen sich natürlich auch mehrere Filter miteinander kombinieren:</p>
<pre><code> - folders: ~/Downloads/Inbox
subfolders: false
filters:
- filecontent: '123456789'
- filecontent: 'comdirect'
- filename:
contains: 'Kontoauszug'
- filename:
startswith: '2020-'
actions:
- move: "/home/ich/Dokumente/33 Bank/2020/Kontoauszüge/"
</code></pre>
<h4>Actions</h4>
<p>Organize hat diverse "Actions" zur Auswahl. Das vermutlich am häufigsten Verwendete: move</p>
<p>Man sollte bei der Move Action immer drauf achten, dass man das abschließende <code>/</code> nicht vergisst.</p>
<p>Richtig:</p>
<pre><code> - move: "/home/ich/Dokumente/2 Linux/"
</code></pre>
<p>Falsch:</p>
<pre><code> - move: "/home/ich/Dokumente/2 Linux"
</code></pre>
<p>Bei der ersten Variante wird die Datei korrekt in das gewünschte Verzeichnis verschoben.</p>
<p>Vergisst man das <code>/</code> am Ende, werden unsere Dateien als <code>/home/ich/Dokumente/2 Linux2</code>, <code>/home/ich/Dokumente/2 Linux3</code>, <code>/home/ich/Dokumente/2 Linux4</code> benannt. Das wäre unschön.</p>
<p>Es ist aber noch mehr möglich, so können Dateien mittels der "rename"-Action umbenannt werden:</p>
<pre><code> - rename: "{path.stem}.pdf"
</code></pre>
<p>Oder es können auch Aktionen auf der Shell ausgeführt werden. z. B.:</p>
<pre><code> - shell: 'docker run --rm -v {basedir}:/data -i jbarlow83/ocrmypdf "/data/{path.name}" "/data/{path.name}" -l deu --force-ocr'
</code></pre>
<p>Und auch Actions können mehrere miteinander in einer Regel kombiniert angewendet werden.</p>
<h2>Fazit</h2>
<p>Hat man sich einmal seinen Regelsatz aufgebaut, hat man mit dem Sortieren der Dokumente keine Arbeit mehr. Der größte Teil der Dokumente ist immer wiederkehrend. Somit lohnt es sich, die Regeln einmalig anzulegen und ggf. immer mal wieder zu erweitern.</p>
<p>Für das papierlose private Büro ist Organize eine erhebliche Erleichterung.</p>
]]><![CDATA[Tools - 4 -: Dateiname automatisch mit Datum versehen]]>https://write.tchncs.de/~/Paperless/tools-4-dateiname-automatisch-mit-datum-versehen/2020-09-24T07:44:29.171415+00:00rsmuchttps://write.tchncs.de/@/rsmuc/2020-09-24T07:44:29.171415+00:00<![CDATA[<p>Gerade bei Dokumenten, die wir aus den Online-Postfächern von Banken und Versicherungen herunterladen, kann die Weiterverarbeitung manchmal lästig sein. Jedes Dokument händisch umbenennen, damit das Datum im ISO-Format vorangestellt wird?</p>
<p>Das lässt sich auch zu einem gewissen Grad automatisieren. Das Erstellungsdatum, also das Datum, wann es gespeichert wurde, zu verwenden wäre einfach. Allerdings ist dies auch wenig sinnvoll. Denn das Datum des Downloads oder das Datum des Scans kann vom eigentlichen Datum des Dokuments deutlich abweichen. Interessant ist ja das aufgedruckte Datum. Aber auch an dieses kommen wir dank OCR ran.</p>
<p>Gehen wir davon aus, dass das erste Datum, welches in einem Dokument vorkommt, das gewünschte Datum ist. Also können wir einfach die komplette Textebene nach dem ersten Datum durchsuchen und dann die Datei automatisch benennen.</p>
<p>Um sicherzustellen, dass wir eine Datei nicht komplett unsinnig benennen, machen wir dies nur, wenn das aktuelle Datum vom gefundenen Datum nicht mehr als -30 oder +1 Tag abweicht. Post aus der Zukunft? Dann würde wohl etwas nicht passen. Ein Dokument, das angeblich älter als 30 Tage ist, aber wir jetzt erst heruntergeladen haben? Auch das ist verdächtig. Da schauen wir dann lieber selbst nach.</p>
<p>Genau diese Aufgabe übernimmt das hier verlinkte Python Script: <a href="https://github.com/rsmuc/paperless/blob/master/setdate.py" rel="noopener noreferrer">https://github.com/rsmuc/paperless/blob/master/setdate.py</a></p>
<pre><code>$ python setdate.py
------------------------------------------------------
Guessing the date for file in content./ocr_beispiel.pdf
FOUND DATE: 2020-09-13
Difference to today: 11 days, 9:33:15.593419
OK
Rename to '2020-09-13 ocr_beispiel.pdf'
------------------------------------------------------
Done
</code></pre>
<p>Vor der Ausführung müssen nur die Abhängigkeiten installiert werden:</p>
<pre><code>pip install pdfminer
pip install python-dateutil
</code></pre>
<p>Anschließend einfach ausführen und alle PDFs im aktuellen Verzeichnis werden mit dem richtigen Datum versehen. Dies kann uns schon Einiges an Arbeit abnehmen ...</p>
]]><![CDATA[Tools - 3 -: Leerseiten entfernen]]>https://write.tchncs.de/~/Paperless/tools-3-leerseiten-entfernen/2020-09-18T10:35:47.571691+00:00rsmuchttps://write.tchncs.de/@/rsmuc/2020-09-18T10:35:47.571691+00:00<![CDATA[<p>Unser Dokumentenscanner erfasst immer die Vor- und die Rückseite eines Blattes in einem Durchgang. Nun gibt es aber natürlich immer wieder Dokumente, die nur einseitig bedruckt sind. Das Ergebnis: Eine weiße Seite im PDF.</p>
<p>Je nach Scanner und verwendeter Software lässt sich einstellen, dass diese Seiten gleich übersprungen werden. Bei meiner Kombination, dem Brother ADS-1200 und Simple Scan, ist dies nicht möglich.</p>
<p>Nun könnten wir in Simple Scan händisch jede leere Seite löschen, bevor wir das Dokument als PDF abspeichert. Oder wir ignorieren einfach, dass dort leere Seiten erfasst wurden und speichern diese mit. Leere Seiten belegen nur sehr wenig Speicherplatz. Das einzig unschöne: Beim Lesen von Dokumenten stören diese ein wenig.</p>
<p>Dass eine leere Seite wenig Speicherplatz benötigt, können wir uns mittels eines kleinen Python-Scripts zunutze machen und somit leere PDF-Seiten finden und entfernen:</p>
<p><a href="https://github.com/rsmuc/paperless/blob/master/blank3.py" rel="noopener noreferrer">https://github.com/rsmuc/paperless/blob/master/blank3.py</a></p>
<p>Zunächst müssen die Abhängigkeiten installiert werden:</p>
<pre><code>pip install PyMuPDF
pip install PyPDF2
</code></pre>
<p>Führen wir nun mittels <code>python blank3.py</code> das Script aus, werden alle PDFs im Verzeichnis nach leeren Seiten durchsucht. Werden leere Seiten gefunden, wird:</p>
<ul>
<li>Eine Kopie der Originaldatei angefertigt mit der Endung: <em>ORIGINAL</em></li>
<li>Eine Datei mit allen leeren Seiten angelegt mit der Endung: <em>EMPTYPAGES</em></li>
<li>Ein neues Dokument mit dem ursprünglichen Namen, welches keine Leerseiten mehr enthält</li>
</ul>
<p>Nach dem Ausführen sollte man immer prüfen, ob auch wirklich nur komplett leere Seiten entfernt wurden.</p>
<p>Im Script wird die Größe jeder Seite geprüft. Ist diese kleiner als der im Script eingestellte Threshold (7000 Bytes), wird die Seite als leer erkannt.</p>
<p>Somit können wir nun also nach dem Scannen bequem alle leere Seiten entfernen und haben ein wenig mehr Ordnung in unseren Dateien.</p>
<pre><code>$ python blank3.py
./2020-08-17 Testdatei.pdf
Size page 1: 122145
Size page 2: 119844
Size page 3: 6298
below threshold
...
create a copy of the ./2020-08-17 Testdatei.pdf
Empty pages: [3, 5, 9, 13, 15, 17]
Generate file with empty pages
Generate clean file
</code></pre>
<p>Das Entfernen der Leerseiten sollte man immer vor OCRmyPDF durchführen. Macht man dies bei einem PDF/A-File, wird dieses im Anschluss von veraPDF als nicht-valide eingestuft.</p>
<hr>
<p><strong><em>Randnotiz:</em></strong></p>
<p>Man könnte mittels Ghostscript auch die Farbabdeckung auf de rSeite ermitteln und anhand dieser die leeren Seiten erkennen. Oder man könnte erst das OCR durchführen und prüfen, ob ein Text erkannt wurde. (Wenn eine Seite allerdings nur ein Bild enthält, hat man ein Problem)</p>
<hr>
]]><![CDATA[Tools -2-: Dokumente finden mit Recoll]]>https://write.tchncs.de/~/Paperless/tools-2-dokumente-finden-mit-recoll/2020-09-16T07:55:09.108531+00:00rsmuchttps://write.tchncs.de/@/rsmuc/2020-09-16T07:55:09.108531+00:00<![CDATA[<h2>Finden statt suchen</h2>
<p>Alles digitalisiert ... Schön ... Endlich Platz ... Aber ... wie finden wir nun unsere Dokumente wieder, wenn wir sie suchen?</p>
<p>Ich muss sagen, dass ich zu 95 % meine Dokumente nicht suchen muss. Durch die einfache Ordnerstruktur und Dateibenennung ist meistens einfach klar, wo ein Dokument zu finden ist. Ich navigierte dort also einfach mit einem beliebigen Dateimanager (bei mir ist es Nemo) hin und fertig.</p>
<p>Manchmal ist es aber nicht ganz so einfach. Entweder weil die Zuordnung nicht eindeutig ist. Wo liegt jetzt noch mal die Jahressteuerbescheinigung? Im Ordner "Sonstiges"?</p>
<p>Oder wir haben eine Abbuchung auf unserem Konto, die wir nicht zuordnen können ... Jetzt wäre es ja praktisch, wenn man einfach nach der abbuchenden IBAN in allen Dokumenten suchen könnte.</p>
<h2>Inhalte durchsuchen mit Recoll</h2>
<h3>Grundlagen</h3>
<p>Mit <a href="https://www.lesbonscomptes.com/recoll/" rel="noopener noreferrer">Recoll</a> können wir genau dies erreichen. Recoll indexiert alle Dokumente, und zwar nicht nur die Namen, sondern auch die Inhalte.</p>
<p>Der Vorteil der Indexierung: Die Suche geht sehr schnell. Innerhalb eines Bruchteils einer Sekunde haben wir die Ergebnisse.</p>
<p>Der Nachteil der Indexierung: Der Index benötigt Platz auf unserer Festplatte. Bei mir immerhin knapp 1 GB.</p>
<p>Auch Recoll ist in den Repositories aller Distributionen enthalten. Einfach installieren und fertig. Recoll selbst kann auch über die Commandline bedient werden. Allerdings bevorzuge ich hier die GUI.</p>
<p>Nach dem Start sollte man unter "Preferences" --> "Index Configuration" festlegen, welche Verzeichnisse indexiert werden sollen. Ich habe hier nur das Verzeichnis mit meinen Dokumenten angegeben.</p>
<p><img src="https://write.tchncs.de/static/media/C3FCBF37-B469-20F4-D3EA-BBEA6E5645F9.png" alt="Recoll Index Settings"></p>
<p>Mehr sollte nicht notwendig sein. Über "File" --> "Update Index" kann die Indexierung manuell gestartet werden. Beim ersten Durchlauf wird dies ein wenig dauern. In Zukunft wird der Index dann immer im Hintergrund aktualisiert.</p>
<h3>Richtig suchen</h3>
<p>Die Suche mit Recoll ist tatsächlich sehr einfach.</p>
<p><img src="https://write.tchncs.de/static/media/4A2524E5-1177-8AF5-FB76-321F6D2DCEC2.png" alt="Recoll Suche"></p>
<p>Im einfachsten Fall reihen wir nur unsere Schlagworte, die in einem Dokument vorkommen sollen, aneinander. Also z. B. <code>Auto 2020</code>.</p>
<p>Zudem unterstützt Recoll die üblichen Wildcards. Die Suche oben wir nur Ergebnisse liefern, wenn das Schlagwort Auto und 2020 alleine stehen. Kommt im Dokument Automobil vor oder 01.01.2020, wird Recoll kein Ergebnis liefern. Hier muss die Suche also <code>Auto* *2020</code> heißen.</p>
<p>Möchten wir nun noch einschränken, dass nur PDF-Dokumente angezeigt werden, können wir noch den Dateityp übergeben: <code>mime:application/pdf</code></p>
<p>Möchten wir noch einzelne Ergebnisse ausschließen, können wir dies mittels einem "-" machen. Also z. B. <code>-automatisch</code>.</p>
<p>Der gesamte Term ist also in diesem Beispiel <code>Auto* *2020 -automatisch -autorisier* mime:application/pdf</code></p>
<p>Dies sollte absolut ausreichend sein, damit wir unsere Dokumente finden. Wer noch mehr Suchparameter benötigt, wird in der <a href="https://www.lesbonscomptes.com/recoll/usermanual/webhelp/docs/RCL.INTRODUCTION.html" rel="noopener noreferrer">Dokumentation</a> von Recoll fündig.</p>
<p>Das Schöne an Recoll ist zudem, dass wir im Suchfenster auch eine Vorschau des PDF-Inhaltes sehen. So lässt sich relativ schnell beurteilen, ob wir das richtige Dokument gefunden haben, ohne dass es geöffnet werden muss.</p>
]]><![CDATA[Schritt 7: Papierloses Büro ohne Scanner]]>https://write.tchncs.de/~/Paperless/schritt-7-papierloses-büro-ohne-scanner/2020-09-15T11:46:17.181359+00:00rsmuchttps://write.tchncs.de/@/rsmuc/2020-09-15T11:46:17.181359+00:00<![CDATA[<h2>Umstellung auf Digital</h2>
<p>Eigentlich logisch: Alles, was wir schon als PDF erhalten, müssen wir nicht einscannen. Digitale Dokumente machen immer noch genug Arbeit, da wir diese ja trotzdem sichten und sortieren müssen, aber immerhin fällt der lästige Schritt des Scannens und Vernichtens weg. Weitere Vorteile: Weniger Müll und Schutz der Umwelt.</p>
<p>Mittlerweile bieten fast alle Dienstleister, Banken & Co. an, dass Rechnungen und sonstige Dokumente direkt als PDF zugestellt werden bzw. dass diese in einem Online-Postfach heruntergeladen werden können. Nicht immer ist dies auf den ersten Blick möglich - manchmal muss persönlich nachgefragt werden. Aber meist geht dies. Also einfach bei jedem Brief, den wir erhalten, prüfen, ob dies nicht auch digital möglich gewesen wäre.</p>
<h2>PDF zu PDF/A wandeln</h2>
<p>Hört sich ja erst mal super an. Einen Nachteil hat dies jedoch. Viele PDF-Generatoren, die zur Erstellung von Rechnungen, Kontoauszügen & Co verwendet werden, erstellen keine PDF/A-Dokumente. Viele der PDFs sind sogar in einem eher fraglichen Zustand. Bei mir haben einzig die Dokumente der comdirect Bank einer Prüfung mittels veraPDF standgehalten.</p>
<p>Für eine Langzeitarchivierung sind beschädigte Dokumente bzw. Dokumente, die keinerlei Standard folgen eher ungeeignet. Nur weil unser PDF-Reader diese aktuell lesen kann, heißt es nicht, dass diese auch in 5 oder 10 Jahren noch problemlos gelesen werden können.</p>
<p>Was also tun?</p>
<p>Wir wandeln die Dokumente einfach in ein valides PDF/A. Man sollte hier immer einen Vorher-Nachher-Vergleich des Dokuments machen. Da in PDF/A nicht alle Elemente unterstützt werden, könnte es passieren, dass uns Informationen verloren gehen. Dies wäre natürlich fatal!</p>
<p>OCRmyPDF hilft uns hier wieder weiter. Wir können damit nämlich auch einfach PDFs zu PDF/A-Dokumenten wandeln: <a href="https://ocrmypdf.readthedocs.io/en/latest/cookbook.html#don-t-actually-ocr-my-pdf" rel="noopener noreferrer">Link zur Dokumentation</a></p>
<pre><code>--tesseract-timeout=0 --skip-text
</code></pre>
<p>Mit dieser Option wird einfach kein OCR durchgeführt, sondern die Datei nur konvertiert.</p>
<p>Nun haben wir jedoch auch PDF-Dateien, die dem PDF/A-Standard folgen. Diese möchten wir nicht unnötig bearbeiten. Jedoch jede Datei händisch mit veraPDF zu prüfen, ist zu aufwändig.</p>
<p>Also schnell wieder ein kleines Python Script schreiben:</p>
<p>Es wird also jedes PDF im Verzeichnis mit veraPDF geprüft und wenn es dem PDF/A-Standard nicht folgt, wird es durch OCRmyPDF in ein PDF/A umgewandelt und somit für die Zukunft "konserviert".</p>
<p><a href="https://github.com/rsmuc/paperless/blob/master/repair.py" rel="noopener noreferrer">https://github.com/rsmuc/paperless/blob/master/repair.py</a></p>
<hr>
<p><strong><em>Warnung:</em></strong></p>
<p>Nochmal die Warnung: PDFs vorher und hinterher bitte händisch prüfen. Durch die Konvertierung können Informationen verloren gehen.</p>
<hr>
<hr>
<p><strong><em>Randnotiz:</em></strong></p>
<p>Es kann sein, dass sich OCRmyPDF mit folgender Meldung beendet:</p>
<pre><code>Output file is okay but is not PDF/A (seems to be No PDF/A metadata in XMP)
</code></pre>
<p>Dies passiert, wenn die Schriftarten im PDF nicht eingebettet sind. Näheres hierzu findet man auch in diesem Github Issue: <a href="https://github.com/jbarlow83/OCRmyPDF/issues/490" rel="noopener noreferrer">Link</a></p>
<p>Um das Problem zu lösen, können wir das gleiche machen, wie im nächsten Punkt "Defekte Textebene reparieren" beschrieben.</p>
<hr>
<h2>Defekte Textebene reparieren</h2>
<p>Nun gibt es leider auch immer wieder PDFs, die nicht nur nicht als PDF/A geliefert werden, sondern auch auch noch eine defekte Textebene haben. Dies ist vor allem ein Problem, da somit eine Suche nach dem Inhalt nicht möglich ist und sich Informationen (z.B. IBANs) nicht aus dem Dokument heraus kopieren lassen.</p>
<p>Besonders die HypoVereinsbank hat seit Anfang 2020 ein ziemliches Problem mit ihrem PDF-Generator. Sämtliche Kontoauszüge kommen mit einer kaputten Textebene und beim Versuch Inhalte zu kopieren, kommt nur Kauderwelsch heraus.</p>
<p>Aber auch hier hilft und OCRmyPDF:</p>
<pre><code>-l deu --force-ocr
</code></pre>
<p>Normalerweise überspringt OCRmyPDF alle PDFs, welche bereits einen Text haben. Aber mittels des "--force-ocr"-Parameters wird eine Durchführen der Texterkennung erzwungen.</p>
<p>Hinterher haben wir also ein PDF/A mit ordentlichem Text. Dies ist natürlich nicht perfekt. Aber besser als nichts.</p>
<hr>
<p><strong><em>Randnotiz:</em></strong></p>
<p>Je nach Dokument gehe ich hier unterschiedlich vor. Ist es ein Kontoauszug, hebe ich das fehlerhafte Original nicht auf. Ist es ein Vertragsdokument, hebe ich sowohl das Original, als auch das PDF/A auf.</p>
<hr>
<h2>Werbung und unnötige Dokumente abbestellen</h2>
<p>Als letzte Optimierung, um das allgemeine Papieraufkommen zu reduzieren, können wir noch Werbung und Dokumente, die wir überhaupt nicht benötigen, abbestellen. Dies klappt meiner Erfahrung nach sehr zuverlässig. Eine kurze Mail reicht hier üblicherweise aus und schon ist der Briefkasten deutlich leerer.</p>
]]><![CDATA[Tools - 1 -: PDF-Seiten zählen]]>https://write.tchncs.de/~/Paperless/tools-1-pdf-seiten-zählen/2020-09-13T10:41:19.498910+00:00rsmuchttps://write.tchncs.de/@/rsmuc/2020-09-13T10:41:19.498910+00:00<![CDATA[<h2>PDF-Seiten zählen</h2>
<p>Das ganze Büro ist nun also digitalisiert und papierlos. Aus reiner Neugier wollte ich nun wissen: Wie viele Seiten PDFs habe ich jetzt eigentlich.</p>
<p>Dateien zu zählen ist einfach:</p>
<pre><code>$ find . -type f -iname '*.pdf' | wc -l
3214
</code></pre>
<p>Wir suchen also nach allen Dateien mit Dateiendung PDF und zählen diese. 3214 Dateien. Das ist ja schon mal interessant.</p>
<p>Aber ich habe PDFs, die nur eine Seite umfassen und auch PDFs, die 50 Seiten und mehr umfassen. Also möchte ich auch noch die Seiten zählen. Dies ist nicht mehr ganz so einfach. OK, auch nicht sonderlich schwer.</p>
<p>Ich habe dazu ein kleines Python Script geschrieben. Sorry, der Code ist nicht sehr schön ... Aber es funktioniert :). Das Script setzt eine Installation von "pdfinfo" voraus.</p>
<p>Herunterladen könnt ihr das Script "count.py" hier: <a href="https://github.com/rsmuc/paperless/blob/master/count.py" rel="noopener noreferrer">Github Link</a></p>
<p>Einfach in das Dokumentenverzeichnis kopieren und ausführen:</p>
<pre><code>python count.py
...
...
./11 Sonstiges/2018/DokumentXY.pdf: 5 pages; in total: 16357
...
...
ALL PAGES: 16465
</code></pre>
<p>Also knapp 16500 Seiten. In einen normalen Aktenordner passen circa 500 Seiten. Dies entspricht also 33 Aktenordnern. In ein Kallax-Regal von Ikea mit 8 Fächern (150 x 75 cm) würden insgesamt 32 Ordner passen. Ich denke, das Digitalisieren hat sich also gelohnt.</p>
<hr>
<p><strong><em>Randnotiz:</em></strong>
Ich habe hier auch die Dateien mitgezählt, die ich bereits als PDF bekommen habe.</p>
<hr>
]]><![CDATA[Schritt 6: Vernichten]]>https://write.tchncs.de/~/Paperless/schritt-6-vernichten/2020-09-11T14:17:15.397271+00:00rsmuchttps://write.tchncs.de/@/rsmuc/2020-09-11T14:17:15.397271+00:00<![CDATA[<p>Der grundlegende Workflow zum Digitalisieren der Dokumente haben wir nun also beisammen. Aber aus dem Scanner kommt das Original ja wieder unten raus :)</p>
<p>Was machen wir damit? Ziel ist es ja, dass unser Aktenschrank hinterher möglichst leer ist.</p>
<hr>
<p><strong><em>Warnung:</em></strong></p>
<p>Hier noch mal der explizite Hinweis, dass ich hier für alle Angaben keine Garantien geben kann und alles auf eigene Verantwortung erfolgt.</p>
<hr>
<h2>Aufbewahrungsfristen</h2>
<p>Schauen wir uns zunächst die rechtliche Seite an. Im geschäftlichen Bereich gelten strenge Aufbewahrungsfristen von mehreren Jahren. Besonders wenn es um das Thema Steuern geht. Aber hier geht es explizit um unser privates Büro. Wer selbstständig oder irgendwie anderweitig unternehmerisch tätig ist, muss sich hier gesondert informieren.</p>
<p><a href="https://www.zdf.de/verbraucher/wiso/aufbewahrungsfristen-fuer-wichtige-dokumente-100.html" rel="noopener noreferrer">ZDF WISO</a> hat das Thema gut zusammen gefasst.</p>
<p>Für Privatpersonen gibt es so gut wie keine Aufbewahrungspflichten:</p>
<p>Nur Handwerkerrechnungen müssen mindestens 3 Jahre lang im Original aufgehoben werden. Ob das Scannen des Dokuments und das Vernichten des Originals hier in Ordnung ist, dazu lassen sich mehrere unterschiedliche Aussagen im Internet finden. Meine Empfehlung: Einfach aufheben.</p>
<p>Wichtige Dokumente wie Geburtsurkunden, Zeugnisse, Arbeitsverträge und Versicherungsverträge, Notarurkunden ... All dies wird digitalisiert, aber im Original aufgehoben.</p>
<p>Rechnungen, Steuerunterlagen (wenn die Einspruchsfrist abgelaufen ist), Quittungen, Kontoauszüge und sämtliche andere Briefkommunikation wird bei mir digitalisiert und das Original vernichtet.</p>
<hr>
<p><strong><em>Randnotiz:</em></strong></p>
<p>Spannend sind die technischen Richtlinien des BSI für das sogenannte "Ersetzende Scannen": <a href="https://www.bsi.bund.de/DE/Publikationen/TechnischeRichtlinien/tr03138/tr03138_node.html" rel="noopener noreferrer">Link</a>. Zum Glück ist dies als Privatperson, wenn man sich an die Aufbewahrungsfristen der Handwerkerrechnungen hält, nicht relevant.</p>
<hr>
<p>Es lässt sich also tatsächlich fast alles Digitalisieren und Aussortieren.</p>
<h2>Der Aktenvernichter</h2>
<p>Nun kommen wir zum spannenden Punkt. Meine Empfehlung: Alle Dokumente, die eingescannt wurden, sollten im Anschluss (nach einem Backup der Daten) vernichtet werden. Dies fühlt sich erst mal sehr ungewohnt an. Aber es macht keinen Sinn alle Dokumente zu digitalisieren, diese wieder in die Ordner einzuheften und sie dann wieder in den Schrank zu stellen. Dann würden sie dort auch in 10 Jahren noch stehen und weiter einstauben.</p>
<p>Also: Nach dem Scannen, ab in den Aktenvernichter damit.</p>
<p>Wer das konsequent macht, wird bald eine ziemlicher Erleichterung verspüren, wenn er feststellt, dass sich der Aktenschrank Schritt für Schritt leert.</p>
<p>Als Aktenvernichter reicht ein einfaches Modell. Beim Kauf sollte man darauf achten, dass dieses einen Kreuzschnitt und keinen Streifenschnitt hat. Beim Kreuzschnitt kommen am Ende nur kleine Schnipsel raus. Beim Streifenschnitt, wie der Name schon sagt, hat man hinterher Papierstreifen. Preislich macht dies keinen großen Unterschied. Die Schnipsel kann aber definitiv niemand mehr zusammensetzen. Zudem ist es ganz praktisch, wenn der Aktenvernichter auch Plastikkarten (Kreditkarten) und CDs vernichten kann.</p>
<p>Ein Qualitätskriterium beim Aktenvernichter: Wie lang kann er am Stück arbeiten. Mein 50 €-Gerät kann laut Datenblatt nur 3 Minuten am Stück betrieben werden. In der Praxis dürfte es etwas länger sein, aber dann überhitzt der Vernichter und muss erst wieder für 30 - 60 Minuten abkühlen. Für den Alltag ist dies absolut ausreichend. Aber digitalisiert man an einem verregneten Novembertag seinen halben Aktenschrank, kann dies durchaus nervig sein.</p>
<p>Alternativ kann man die Akten auch durch einen Dienstleister vernichten lassen. Als preisliche Größenordnung: Bei Selbstanlieferung kostet dies pro PKW-Ladung mit 75 Ordnern circa 50 €.</p>
<p>Ich habe bei mir immer Schritt für Schritt alle paar Tage einen Ordner digitalisiert und mit dem eigenen Aktenvernichter geschreddert. Heute habe ich insgesamt noch 4 Ordner, welche allerdings alle nur zu einem Bruchteil gefüllt sind. Mein Ziel des papierlosen Büros habe ich also erreicht.</p>
]]><![CDATA[Schritt 5: Das Backup]]>https://write.tchncs.de/~/Paperless/schritt-5-das-backup/2020-09-10T12:38:23.830416+00:00rsmuchttps://write.tchncs.de/@/rsmuc/2020-09-10T12:38:23.830416+00:00<![CDATA[<p>In Schritt 4 haben wir uns nun also Gedanken gemacht, wie wir unsere Dokumente strukturiert ablegen. Es fehlt also kaum noch etwas, um mit der Arbeit wirklich loszulegen.</p>
<p>Zwei wichtige Punkte sollten nicht unter den Tisch fallen: Backup und Versionierung.</p>
<p>Wir digitalisieren alle unsere Papierdokumente mit dem Ziel, dass wir die Originale vernichten können und somit Platz und Ordnung im Büro haben. Ein passendes Dateiformat und eine passende Struktur sind ein guter Startpunkt. Aber wo liegen die Daten physikalisch? Erst einmal nur auf dem eigenen Notebook oder PC. Dies ist auch gut so. Aber was passiert, wenn wir eine Datei versehentlich löschen? Wenn wir eine Datei versehentlich verändern? Ein Virus (ok ... mit Linux eher unwahrscheinlich) unsere Daten verschlüsselt? Die SSD kaputt geht oder gar das ganze Büro inkl. unserem Rechner abbrennt?</p>
<h2>Backup</h2>
<p>Für all diese Fälle brauchen wir ein Backup. Mit einem Backup wollen wir sicherstellen, dass wir jederzeit zu einem definierten Stand unserer Dokumente zurückkehren können. Es gibt ganze Bücher über Backup-Konzepte und je nach Anforderung können diese ganz unterschiedlich aussehen.</p>
<p>Das Backup für mein privates papierloses Büro hat zwei Ebenen. Das automatische Backup und das Offline-Backup.</p>
<h3>Das automatische Backup</h3>
<p>Mit dem automatischen Backup möchte ich mich vor allem gegen ein versehentliches Löschen von Dateien absichern. Schnell hat man irgendeinen Blödsinn gemacht und plötzlich einen Ordner gelöscht.</p>
<p>Wie kommen wir nun also wieder zu unserem eingescannten Dokument zurück?</p>
<p>Backup-Tools gibt es viele. Aus meinen Mac-Zeiten kannte ich die Apple Timemachine, welche alle paar Minuten ein Backup des Macbooks angefertigt hat. Alte Backups wurden automatisch nach einiger Zeit aufgeräumt.</p>
<p>Unter Linux wurde ich mit "Back In Time" fündig. Das Prinzip ist das gleiche. Es werden alle paar Minuten Snapshots angelegt und man kann Schritt für Schritt in die Vergangenheit zurückgehen. Hat man dann seine Datei wieder gefunden, kann man auch nur diese einzelne Datei selektieren und wieder herstellen oder auch vollständige Verzeichnisse. Also alles sehr komfortabel und übersichtlich.</p>
<p>"Back In Time" ist in so ziemlich allen Distributionen enthalten, kann also einfach über den jeweiligen Paketmanager installiert werden.</p>
<p><img src="https://write.tchncs.de/static/media/11D04C28-83AE-7111-0C61-5CBCC48FF2E8.png" alt="BackInTime"></p>
<p>Nach dem Start sollte man in den "Settings" festlegen, wie oft ein Snapshot erstellt werden soll. Alle 30 Minuten ist ein Wert mit dem ich nun seit mehreren Jahren gut zurechtkomme.</p>
<p>Unter "Include" wird nun noch ausgewählt, welches Verzeichnis bzw. welche Verzeichnisse gesichert werden sollen. Ich habe bei mir das komplett Home-Verzeichnis gewählt. Bei "Exclude" habe ich vor allem das Verzeichnis mit meinen virtuellen Maschinen angegeben. Hier macht ein Backup keinen Sinn.</p>
<p>Meine Settings für "Autoremove", also das entfernen von alten Backups könnt ihr auf dem folgenden Screenshot sehen:</p>
<p><img src="https://write.tchncs.de/static/media/DEDC8B5E-0DBB-210F-454F-4F07537CD2A7.png" alt="BackinTime Autoremove"></p>
<p>In den "Expert Options" sollte eingestellt sein, dass Back In Time als Cron-Job läuft. Dies ist aber sowieso der Standard.</p>
<p>Nun sollte sich alle 30 Minuten Back In Time kurz zu Wort melden und in der Notification-Bar anzeigen, dass es gerade ein Backup ausführt.</p>
<p>Das erste Backup kann natürlich ein wenig länger dauern. Von da an sollte alles ziemlich flott gehen.</p>
<p>Neben dem lokalen Modus, wie von mir verwendet, könnte man Back In Time auch so einstellen, dass es auf ein NAS oder Ähnliches sichert. Da ich jedoch kein NAS habe (und auch keines will), reicht mir der lokale Modus aus.</p>
<p>Nun sollte man unbedingt ein Backup-Konzept testen. Das beste Konzept und Tool hilft nicht, wenn es nicht funktioniert oder man es nicht bedienen kann. Also im Home-Verzeichnis eine Test-PDF ablegen, warten bis ein Snapshot erstellt wurde, das PDF löschen und schauen, ob die Wiederherstellung klappt.</p>
<h3>Das Offline- / Offsite-Backup</h3>
<p>Das lokale Backup von "Back in Time" beschützt mich zwar vor einem ungewollten Löschen von Dateien, aber vor einem Festplatten-Schaden oder gar Schlimmeren nicht. Denn die Daten liegen alle trotzdem nur auf meinem Notebook mit einer einzigen SSD.</p>
<p>Hier muss also noch eine andere Lösung her. Zunächst müssen wir also kurz die Anforderungen abstecken:</p>
<p>Das Offline-Backup sollte folgende Eigenschaften haben:</p>
<ul>
<li>Unabhängig von Betriebssystem, spezieller Hardware oder einer speziellen Applikation</li>
<li>Kostengünstig</li>
<li>Keine Cloud-Lösung</li>
<li>Sicher</li>
<li>Auch von Dritten lesbar. Dieser Punkt braucht ein wenig mehr Erläuterung: Ich will natürlich nicht, dass irgendjemand auf meine Dokumente zugreifen kann. Mein Notebook ist deshalb auch mit einer Festplattenverschlüsselung geschützt. Allerdings muss es möglich sein, dass im Falle meines Todes oder wenn ich anderweitig nicht mehr in der Lage bin, mich um meine Angelegenheiten zu kümmern, jemand Zugriff auf meiner Unterlagen erlangt.</li>
<li>Maximaler Verlust von Daten der letzten 30 Tage</li>
<li>Unveränderbar</li>
</ul>
<p>Es gibt hier viele Möglichkeiten. Auch hier habe ich mich wieder für das Einfachste entschieden. Obwohl ich mittlerweile alle meine Dokumente digitalisiert habe, ist mein Dokumentenordner nur ~ 3 GB groß. Dies passt also wunderbar auf eine DVD.</p>
<p>Ich brenne also einfach am Ende eines jeden Monats eine DVD mit allen meinen Dokumenten. Diese DVDs werden gesammelt und bei Gelegenheit in einem Bankschließfach deponiert. Somit sind auch im Falle eines Brandes nicht alle Dokumente verloren. Ich mag zwar nur alle 6 Monate die DVDs ins Schließfach stecken, aber die Dokumente von 6 Monaten zu verlieren ist in einem solchen Fall verschmerzbar ... Nach einem Brand gibt es Schlimmeres.</p>
<p>Die gebrannten DVDs sind zudem unveränderbar. Ein Virus und Ähnliches kann einen USB-Stick oder eine Festplatte als Backupmedium im Zweifelsfall beschädigen. Bei einer DVD kann dies nicht passieren.</p>
<p>Zudem habe ich schon zu viele defekte Festplatten und USB-Sticks gesehen. Defekte DVDs? Ja auch das kommt vor. Aber wenn eine Sicherung mal ausfallen sollte, habe ich ja für jedes Monat ein vollständiges Backup.</p>
<p>Wer ganz auf Nummer sicher gehen möchte, kann auch <a href="https://www.verbatim.de/de/cat/mdisc-archival-media/" rel="noopener noreferrer">M-Discs</a> verwenden. Diese sind ein wenig teuer als normale DVD- oder Blueray-Rohlinge, sollen aber angeblich bis zu 1000 Jahre halten und sind unempfindlich gegen Sonneneinstrahlung und andere Umwelteinflüsse. Es gibt auch noch mehrere andere Standards für Rohlinge, welche eine sehr lange Lebensdauer garantieren sollen. Mir reichen normale DVD-Rohlinge. Was durchaus Sinn macht: Zwei unterschiedliche Hersteller oder Chargen verwenden. Dass die Rohlinge einer einzelnen Spindel aufgrund von chemischen Alterungsprozessen gleichzeitig nicht mehr lesbar werden, ist somit ausgeschlossen.</p>
<p>Viele Notebooks und auch Workstations kommen heute jedoch ohne optisches Laufwerk, da die meisten Anwendungen über App-Stores oder Downloads vertrieben werden. DVD- und Blueray-Brenner mit USB-Anschluss gibt es jedoch in einer großen Auswahl für wenig Geld. Ich würde gleich zu einem Blueray-Brenner raten, dann kann man auch seine Bildersammlungen etc. sichern und dieser kostet nur ein paar wenige Euro mehr. Ich selbst nutze einen Verbatim Slimline Blue-Ray Brenner (ca. 85 €).</p>
<p>Zum Brennen der DVDs verwende ich "Brasero".</p>
<p><img src="https://write.tchncs.de/static/media/8FD17B92-7BAC-F14C-9B03-43016F81FAA2.png" alt="Brasero"></p>
<p>Meine Backups werden unverschlüsselt durchgeführt. Auch über diesen Punkt kann man streiten. Da die Backup-DVDs nur in meinem privaten Büro und meinem Bankschließfach gelagert werden, sind diese genauso gut geschützt, wie es ein Papierdokument wäre. Gegen eine Verschlüsselung spricht meiner Meinung nach die Unsicherheit, dass im Worst-Case die Daten noch zugreifbar sind. Was ist, wenn die Erben auf die Dokumente zugreifen möchten? Was ist, wenn man das Passwort vergessen hat? Oder die Verschlüsselungssoftware nicht mehr funktioniert? Dass die Medien weggeschlossen sind, reicht mir als Sicherheit aus.</p>
<h2>Versionierung und Änderungsverfolgung</h2>
<p>Ein Problem ist noch nicht ganz gelöst. Es kann schnell passieren, dass man ein Dokument oder einen ganzen Ordner löscht und es gar nicht bemerkt. Ein falsches Kommando in der Kommandozeile oder einmal unaufmerksam die "Entf"-Taste gedrückt und schon ist es passiert. Jetzt haben wir zwar ein Backup der Dateien ... Aber wir merken ggf. gar nicht, dass wir dieses bräuchten. Wir können uns ja nicht jede einzelne Datei merken. Aus Versehen einen Ordner aus dem Jahr 2018 gelöscht. Das fällt uns sicherlich nicht auf.</p>
<p>Die Lösung ist hier einfach: Die Versionsverwaltung Git. Git ist nicht gerade ideal geeignet um Binärdateien zu verwalten, da dies mit der Zeit sehr viel Platz benötigt. Da sich unsere PDFs aber nicht ändern sollten, ist dies auch für Git kein Problem.</p>
<p>Mittels Git haben wir eine Änderungsverfolgung für unser komplettes Dokumentenverzeichnis. Löschen wir einen Ordner aus Versehen, sehen wir dies in Git und können entweder über das Backup oder über Git selbst den Ordner wieder herstellen. Wir haben somit also eine weitere Sicherungsstufe eingebaut.</p>
<p>Git wird für meine Dokumente nur lokal verwendet. Also ohne einen Server. Immer wenn ich wieder einen Schwung an Dokumenten digitalisiert und abgelegt habe, schaue ich mittels <a href="https://www.syntevo.com/smartgit/" rel="noopener noreferrer">SmartGit</a> oder Git auf der Commandline (<code>git status</code>), welche Änderungen in meinem Dokumentenverzeichnis passiert sind. Sehe ich nur neu hinzugekommene Dateien ist alles gut. Sehe ich, dass Dateien gelöscht, umbenannt oder geändert wurden, schaue ich noch mal genau hin.</p>
<pre><code>[Dokumente]$ git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: 1 Bank und Rente/xyz/2020/Steuermitteilungen/2020-08-14 Steuermitteilung_vom_14.08.2020.pdf
modified: "1 Bank und Rente/abc.ods"
Untracked files:
(use "git add <file>..." to include in what will be committed)
1 Bank und Rente/xyzhh/2020-09-03 Dokument1.pdf
....
no changes added to commit (use "git add" and/or "git commit -a")
</code></pre>
<p>Die Verwendung von Git würde ich als optional einstufen. Kennt man es bereits, weil man Software-Entwickler ist, dann ist es ein gutes Hilfsmittel. Hatte man mit Git noch keine Berührungspunkte, ist es etwas zu viel des Guten, sich nur für das Thema Dokumentenverwaltung in Git einzuarbeiten.</p>
<pre><code>git add *
git commit -m "Neue Dokumente hinzugefügt"
git status
</code></pre>
<p>Mehr Kommandos braucht es nicht, um eine saubere Versionsverwaltung zu haben.</p>
<hr>
<p><strong><em>Randnotiz:</em></strong> Git sollte nur lokal verwendet werden. Keinesfalls die Dokumente nach Github, Codeberg & Co pushen. Aber das sollte sowieso klar sein ...</p>
<hr>
<h2>Fazit</h2>
<p>Dies war der letzte wichtige Schritt, den man sicher beherrschen sollte, bevor man mit der Digitalisierung seiner Dokumente beginnt:</p>
<ol>
<li>Scannen.</li>
<li>OCR.</li>
<li>Speichern.</li>
<li>Ablegen.</li>
<li>Backup.</li>
</ol>
<p>Fertig.</p>
<p>Fast... :)</p>
]]>