Paperless-ngx: Dubletten erkennen – Praxistest mit Fuzzy Duplicate Detection
Veröffentlicht am 20. August 2026 · zuletzt aktualisiert am 1. September 2026 / in Digitale Archive
Inhaltsübersicht
- Zwei verschiedene Arten von Dublettenerkennung
- Sicherheitsregel: Der Benutzer ist der letzte Entscheider
- Test 1: 90 Prozent
- Test 2: 99 Prozent
- Test 3: 100 Prozent
- Dokumentnummern mit dem Tag „Duplicates“ als Arbeitsliste übernehmen
- Was mit geprüften Fehlalarmen geschieht
- Echte Dubletten kontrolliert bereinigen
- Warum 100 Prozent für diesen Bestand sinnvoll sind
- Praxistipp: Viele Treffer übersichtlich abarbeiten
- Mein Prüfablauf
- Häufige Fragen
- Fazit
- Weiterführende Paperless-Praxis
Kurz gesagt
Paperless-ngx unterscheidet technisch identische Dubletten von lediglich ähnlichen Dokumenten. In meinem gewachsenen privaten Archiv erzeugten 99 Prozent Fuzzy-Ähnlichkeit noch 106 Trefferpaare; erst 100 Prozent reduzierten die Liste auf 15 Paare. Auch diese Treffer waren nur Prüfkandidaten und keine automatische Löschentscheidung.
Zwei verschiedene Arten von Dublettenerkennung
Seit Paperless-ngx 3 werden Dokumente mit bereits bekanntem Inhalt standardmäßig importiert und als Dubletten gekennzeichnet, sofern die Konfiguration sie nicht wieder abweist. In meiner Installation ist das automatische Verwerfen erkannter Dubletten deaktiviert.
Damit bleibt die Entscheidung bei mir. In der Dokumentansicht kann ich über Dubletten / Duplicates technisch gleiche Inhalte vergleichen. Mit true würde ein Dokument mit bereits bekanntem Inhalt wieder beim Konsumieren verworfen.
Davon zu unterscheiden ist document_fuzzy_match. Dieser Verwaltungsbefehl vergleicht den erkannten Dokumentinhalt auf Ähnlichkeit. Ein neuer Scan derselben Papierseite besitzt wegen Auflösung, Ausrichtung, Komprimierung, OCR oder PDF/A-Konvertierung meist eine andere Datei-Prüfsumme. Die inhaltliche Ähnlichkeit kann solche Kandidaten trotzdem sichtbar machen.
Im am 22. August 2026 geprüften Quelltext des Verwaltungsbefehls wird dafür der in Paperless gespeicherte Dokumenttext zunächst vereinheitlicht und anschließend mit rapidfuzz.fuzz.ratio() verglichen. Es geht also um die Ähnlichkeit des extrahierten Textes, nicht um einen visuellen Vergleich der PDF-Seiten. Metadaten wie Korrespondent, Dokumenttyp und Tags fließen ebenfalls nicht in diesen Wert ein.
| Verfahren | Erkennt | Typischer Einsatz |
|---|---|---|
| Paperless-Dublettenerkennung | technisch gleicher Dokumentinhalt | versehentlich erneut importierte Datei |
document_fuzzy_match |
sehr ähnlicher erkannter Inhalt | neuer Scan oder anders erzeugte Fassung |
| manuelle Sichtprüfung | fachliche Identität und Archivwert | endgültige Entscheidung über Behalten oder Löschen |
Die allgemeine unscharfe Dokumentsuche ist wiederum etwas anderes. PAPERLESS_ADVANCED_FUZZY_SEARCH_THRESHOLD beeinflusst die Suche; document_fuzzy_match erzeugt Kandidatenpaare für die Dublettenprüfung.
Sicherheitsregel: Der Benutzer ist der letzte Entscheider
Im gesamten Test habe ich bewusst nicht --delete verwendet. Ähnlichkeit ersetzt weder Sichtprüfung noch Backup. Unterschiedliche Dokumente können fast denselben Text enthalten, während Datum, Person, Abrechnungszeitraum oder rechtliche Bedeutung voneinander abweichen.
In meiner aktuellen Konfiguration werden Dubletten deshalb regulär importiert und von Paperless gekennzeichnet. Es gibt kein separates duplicates-Verzeichnis und keine eigene Verschiebe- oder Löschroutine mehr. Die spätere Bereinigung erfolgt manuell über die Ansicht Dubletten.
Paperless liefert das technische Signal. Der Benutzer ist der letzte Entscheider und löscht erst nach der Sichtprüfung in der Ansicht „Dubletten“.
Test 1: 90 Prozent
Der erste Lauf mit 90 Prozent erzeugte eine sehr große Kandidatenliste. Besonders häufig erschienen serielle Dokumente: Kontoauszüge, Monatsrechnungen, Lohnabrechnungen, Versicherungsleistungen, Bescheide und wiederkehrende Formulare.
Diese Unterlagen verwenden oft dieselbe Vorlage und enthalten große identische Textblöcke. Wenige geänderte Zahlen oder Datumsangaben reichen fachlich für ein eigenständiges Dokument, verändern den Gesamttext aber nur gering.
Für meinen konkreten Bestand war 90 Prozent deshalb als Arbeitswert unbrauchbar. Daraus folgt keine allgemeine Empfehlung gegen diesen Wert; andere Archive können anders zusammengesetzt sein.
Test 2: 99 Prozent
Dieser Lauf lieferte 106 Trefferpaare. Die Liste war deutlich kürzer, enthielt aber weiterhin viele fachlich verschiedene Dokumente.
Wiederkehrende Jahresdokumente aus den Jahren 2022 bis 2025 erreichten untereinander ungefähr 99,6 Prozent. Kontoauszüge verschiedener Monate und Jahre lagen ebenfalls oberhalb von 99 Prozent. Hinzu kamen Festnetz- und Mobilfunkrechnungen verschiedener Abrechnungszeiträume sowie mehrere Serienbriefe.
Der Versuch zeigte: Selbst 99 Prozent bedeuteten in diesem Archiv noch lange nicht „dasselbe Dokument“.
Test 3: 100 Prozent
Nun blieben 15 Trefferpaare. Diese Größenordnung war erstmals praktisch überschaubar. Darunter waren beispielsweise zwei Fassungen eines Energieberatungsberichts, zwei Stromabrechnungen aus demselben Jahr, mehrere gleich bezeichnete Belege, ein Testament und seine gerichtliche Eröffnung sowie zwei unterschiedlich zuzuordnende Erbausschlagungen.
Mehrere Paare sahen nach echten Dubletten aus. Das stärkste Gegenbeispiel waren jedoch zwei Erbausschlagungen verschiedener Personen: Paperless meldete 100 Prozent, während bereits die unterschiedlichen Personen eine fachliche Prüfung verlangten.
Auch „Testament einer Person“ und „Testament einer Person – gerichtliche Eröffnung“ dürfen nicht allein wegen des Ähnlichkeitswerts zusammengeführt werden. Denkbar sind dieselben Seiten in unterschiedlichen Dateien, ein Ausschnitt, eine weitere Ausfertigung oder zwei archivisch verschieden zu bewertende Unterlagen.
Hier liegt die 100-Prozent-Falle: Stimmen die vereinheitlichten, gespeicherten Texte überein, kann der Textvergleich 100 Prozent ergeben. Ob ein Scan schief aufgenommen wurde, Flecken besitzt oder visuell anders angeordnet ist, entscheidet dieser Wert nicht. Umgekehrt können schon OCR-Abweichungen den Wert senken, obwohl dieselbe Papierseite erneut gescannt wurde. Deshalb bleibt auch bei 100 Prozent die Sichtprüfung notwendig.
Dokumentnummern mit dem Tag „Duplicates“ als Arbeitsliste übernehmen
document_fuzzy_match nennt die Paperless-Dokumentnummern der gefundenen Paare. Damit diese Nummernliste nicht bei jeder Sichtprüfung erneut geöffnet werden muss, verwende ich den Tag Duplicates als vorläufige Arbeitsmarkierung. Eine gespeicherte Ansicht mit der Regel „Tag ist Duplicates“ zeigt anschließend alle noch zu prüfenden Dokumente in der Seitenleiste und nennt gleichzeitig ihre Anzahl.
Der einfache Ablauf in der Paperless-Oberfläche lautet:
- Den Tag Duplicates einmalig anlegen und eine gespeicherte Ansicht erstellen, die nach diesem Tag filtert.
- Jede vom Fuzzy-Lauf genannte Dokumentnummer in Paperless öffnen. Die Nummer ist die interne Dokument-ID und nicht die Archivseriennummer.
- Im Dokument den Tag Duplicates zusätzlich zu den vorhandenen Tags eintragen und speichern. Fachliche Tags werden dabei nicht entfernt oder ersetzt.
- Die gespeicherte Ansicht Duplicates öffnen und die Treffer paarweise in zwei Browser-Tabs prüfen.
- Nach der Entscheidung den Arbeitstag entfernen: Bei einer echten Dublette erst die führende Fassung vervollständigen und die entbehrliche Fassung kontrolliert in den Papierkorb verschieben. Bei einem bestätigten Fehlalarm beide Dokumente behalten und stattdessen den Status Dublettenprüfung: geprüft – keine Dublette setzen.
Bei einer längeren ID-Liste kann derselbe Schritt kontrolliert über die Paperless-API erfolgen. Dabei wird jedes Dokument zunächst gelesen, die ID des Tags Duplicates zur vorhandenen Tag-Liste hinzugefügt und anschließend die vollständige Vereinigungsmenge zurückgeschrieben. Ein Schreibzugriff, der nur den neuen Tag sendet, wäre ungeeignet, weil er je nach API-Verwendung vorhandene fachliche Tags ersetzen könnte. Fehlende Dokument-IDs werden protokolliert und nicht durch ähnlich wirkende Titel ersetzt.
Der Tag Duplicates dokumentiert ausschließlich den offenen Prüfstatus. Er beweist keine Dublette und verändert weder den OCR-Inhalt noch das Ergebnis eines späteren Fuzzy-Laufs.
Was mit geprüften Fehlalarmen geschieht
Im geprüften Stand vom 22. August 2026 ließ sich ein fachlich bewertetes Dokumentpaar mit document_fuzzy_match nicht dauerhaft als „keine Dublette“ vom nächsten Lauf ausschließen. Der damals geprüfte Befehl verglich den OCR-Inhalt; Korrespondent, Dokumenttyp und Tags gehörten nicht zu diesem Vergleich. Deshalb erschienen bestätigte Fehlalarme bei einem späteren Lauf mit demselben Grenzwert erneut.
Paperless-ngx wird weiterentwickelt. Für den aktuellen Funktionsumfang sind deshalb nicht diese zeitgebundenen Sätze, sondern die laufend gepflegte Administration-Dokumentation, der aktuelle Quelltext von document_fuzzy_match und die Befehlshilfe der eigenen Installation maßgeblich. Die frühere Diskussion über eine Tag-Unterstützung dokumentiert den damaligen Bedarf, nicht den Funktionsumfang künftiger Versionen.
Für meinen Bestand gilt deshalb folgende Regel:
100-Prozent-Fuzzy-Treffer, die fachlich als unterschiedliche Dokumente bestätigt wurden, werden nicht verändert oder gelöscht. Sie erhalten den Status „Dublettenprüfung: geprüft – keine Dublette“ und werden bei künftigen Auswertungen aus der Arbeitsliste ausgeblendet.
Ein Paperless-Tag mit dieser Bezeichnung dokumentiert die Sichtkontrolle, beeinflusst den Fuzzy-Befehl aber nicht. Für eine spätere technische Nachfilterung ist eine kleine Liste der tatsächlich geprüften ID-Paare eindeutiger: Das Paar aus der kleineren und der größeren Dokument-ID wird gespeichert und nach dem Fuzzy-Lauf aus der neuen Arbeitsliste entfernt. Der Fuzzy-Algorithmus und die Dokumente selbst bleiben dabei unverändert.
Nicht sinnvoll wäre es, OCR-Inhalte, Dateinamen oder Dokumente künstlich zu verändern, nur damit der Ähnlichkeitswert unter 100 Prozent fällt. Das würde die Archivqualität verschlechtern, ohne den fachlichen Unterschied sauber zu dokumentieren.
Echte Dubletten kontrolliert bereinigen
Bei einer bestätigten Dublette ist kein technisches Zusammenführen der beiden PDF-Dateien erforderlich. Die Dublettenansicht von Paperless-ngx verlinkt gleiche Dokumente für die Prüfung, vereinigt deren Metadaten aber nicht automatisch. Die vorhandene PDF-Aktion Dokumente zusammenführen erstellt dagegen ein kombiniertes PDF. Das ist für zwei Fassungen desselben Dokuments nicht das Ziel.
Mein Ablauf verwendet deshalb zwei Browser-Tabs:
- A als führende Fassung festlegen. Maßgeblich sind beispielsweise Scanqualität, Vollständigkeit, OCR und archivische Eignung.
- B als Vergleichsfassung öffnen. Titel, Korrespondent, Dokumenttyp, Datum, Tags, benutzerdefinierte Felder sowie gegebenenfalls Eigentümer und Berechtigungen prüfen.
- A in einem zweiten Tab ergänzen. Nur fehlende oder fachlich bessere Werte aus B übernehmen. B überschreibt A nicht pauschal; bei Tags wird die sinnvolle Vereinigungsmenge gebildet.
- A abschließend kontrollieren. Erst wenn Datei und Metadaten vollständig sind, ist die Bereinigung freigegeben.
- B in den nativen Paperless-Papierkorb verschieben. Dort bleiben Datei und Daten zunächst wiederherstellbar. Die automatische endgültige Entfernung richtet sich nach
PAPERLESS_EMPTY_TRASH_DELAY, standardmäßig 30 Tage. Wird zusätzlichPAPERLESS_EMPTY_TRASH_DIRverwendet, legt Paperless beim Leeren des Papierkorbs nur die Originaldatei in diesem Verzeichnis ab; Archivdatei und Datenbankinformationen werden dabei nicht erhalten. Die frühere Bezeichnung dieser Einstellung warPAPERLESS_TRASH_DIR. Maßgeblich bleibt die aktuelle Paperless-Dokumentation zum Papierkorb.
Bei selektiv aus einem ELO-Altbestand übernommenen Dokumenten können die Tags einer Dublette fachlichen Kontext aus der früheren Ablagestruktur enthalten. Solche Informationen werden vor dem Löschen der Vergleichsfassung auf die führende Fassung übertragen.
Die Governance-Regel lautet:
A ist die führende Fassung. B ist die Vergleichsfassung. Fehlende oder bessere Metadaten aus B werden vor dem Löschen manuell nach A übernommen. Erst danach wird B gelöscht.
Bei 15 Trefferpaaren ist diese Zwei-Tab-Methode schneller nachvollziehbar und sicherer als eine Automatisierung. Erst bei einer wesentlich größeren Zahl bestätigter Dubletten wäre ein kontrolliertes API-Werkzeug sinnvoll. Auch dann müssten mehrwertige Felder wie Tags und benutzerdefinierte Felder gelesen, vereinigt und vor dem Schreiben geprüft werden.
document_fuzzy_match --delete ist für diese Auswahl ungeeignet. Der Befehl entscheidet nicht anhand von Scanqualität, Vollständigkeit oder Metadaten, welche Fassung archivisch führend sein soll. Diese Entscheidung muss vor jeder Löschung durch die Sichtprüfung fallen.
Warum 100 Prozent für diesen Bestand sinnvoll sind
Mein Archiv enthält viele seriell erzeugte Dokumente. Bei Kontoauszügen, Rechnungen, Lohnabrechnungen, Versicherungsunterlagen und Standardformularen ändern sich oft nur wenige Datenfelder. Der übrige OCR-Text bleibt nahezu gleich.
Für diesen Bestand hat sich 100 Prozent deshalb als sinnvoller Startpunkt für eine manuelle Prüfung erwiesen. Das ist kein allgemeingültiger Grenzwert. Wer anders zusammengesetzte Dokumente verwaltet, muss einen eigenen Wert mit nicht löschenden Testläufen ermitteln.
Praxistipp: Viele Treffer übersichtlich abarbeiten
Versionsstand des Praxistipps: 22. August 2026. Der Praxistest bezieht sich auf eine Installation aus der Paperless-ngx-3-Reihe. Da sich Befehlsoptionen und Bedienoberfläche weiterentwickeln, sind für die heutige Nutzung immer die aktuelle Paperless-ngx-Dokumentation, der aktuelle Befehlsquelltext und die lokal angezeigte Hilfe der eigenen Installation maßgeblich.
Technischer Stand von Paperless-ngx
Bei wenigen Paaren genügt die Terminalausgabe. Fehlt in der jeweils installierten Version eine Oberfläche mit Paaransicht, Entscheidung und dauerhaftem Prüfstatus, wird die Bearbeitung bei 100 oder 500 Treffern jedoch unübersichtlich. Eine historische Diskussion zur Bedienoberfläche dokumentiert diesen Bedarf, ist aber keine aktuelle Funktionsdokumentation.
Ob die installierte Paperless-Version bereits direkte Dokumentlinks oder weitere Hilfen ausgeben kann, zeigt die lokal aufgerufene Hilfe von document_fuzzy_match. Der ursprüngliche Pull-Request zur URL-Ausgabe erklärt Zweck und Entstehung dieser Erweiterung; für ihre heutige Verfügbarkeit bleibt die aktuelle Dokumentation beziehungsweise die eigene Installation maßgeblich.
Meine Idee für eine übersichtliche Arbeitsliste
Die Treffer sollen nicht nur im Terminalverlauf stehen, sondern als Arbeitskopie erhalten bleiben. Als einfachste Zwischenlösung lässt sich die Ausgabe auf dem Docker-Host in eine Textdatei umleiten. Die genaue Syntax hängt von der eigenen Docker-Compose-Installation und den dort verwendeten Pfaden ab; deshalb wird sie hier nicht als kopierfertiger Befehl veröffentlicht. Maßgeblich sind die Paperless-ngx-Administration und die lokal angezeigte Befehlshilfe.
Für eine längere Prüfung ist eine CSV- oder HTML-Arbeitsliste übersichtlicher. Sinnvolle Spalten sind Dokument A, Dokument B, Ähnlichkeit, Link A, Link B, Status und Entscheidung. Direkte Links erleichtern den Vergleich der beiden Dokumente.
Meine Umsetzung in diesem Bestand
Für meinen geprüften Stand ist eine kleine, außerhalb von Paperless arbeitende Auswertung die passende Ausbaustufe. Sie übernimmt die Treffer, erzeugt CSV und optional HTML, ergänzt die Links und bewahrt die manuelle Entscheidung je ID-Paar.
Der logische Ablauf bleibt bewusst einfach:
- Die Ausgabe des nicht löschenden Fuzzy-Laufs wird in einer Arbeitsdatei festgehalten.
- Eine kleine lokale Auswertung liest daraus die Dokument-IDs und vergleicht jedes normalisierte ID-Paar mit der Liste bereits geprüfter Paare.
- In der neuen CSV- oder HTML-Arbeitsliste erscheinen nur noch unbekannte Paare; die Entscheidung des Benutzers wird anschließend wieder zur Prüfliste hinzugefügt.
Als Status verwende ich wenige feste Werte: offen, echte Dublette, keine Dublette, Metadaten übertragen und B gelöscht. Bereits bewertete ID-Paare lassen sich damit aus der neuen Arbeitsliste ausblenden. Paperless selbst, OCR-Inhalte und Dokumentdateien bleiben unverändert.
Eine historische Diskussion zur Optimierung von document_fuzzy_match zeigt die damaligen Anforderungen großer Bestände; neuere Funktionen sind in den Originalquellen zu prüfen.
Mein Prüfablauf
- Exakte Dubletten mit
PAPERLESS_CONSUMER_DELETE_DUPLICATES=falseregulär importieren und kennzeichnen lassen. - In der Ansicht Dubletten / Duplicates paarweise prüfen.
- Ergänzend einen Fuzzy-Lauf ohne
--deleteausführen. - Treffer paarweise nach Datum, Personen, Korrespondent, Dokumenttyp, Seitenzahl und sichtbarem Inhalt vergleichen.
- Archivische oder rechtliche Bedeutung, Scanqualität, OCR und vorhandene Metadaten berücksichtigen.
- Bei einem Fehlalarm beide Dokumente behalten, den Prüfstatus kennzeichnen und das geprüfte ID-Paar dokumentieren.
- Als letzter Entscheider nur bei bestätigter Dublette die vollständigere und besser erschlossene Fassung behalten.
Die Methode passt zu meinem allgemeinen Paperless-ngx-Arbeitsablauf: starke technische Signale dürfen Kandidaten markieren, die fachliche Entscheidung bleibt bei der Sichtkontrolle.
Häufige Fragen
Wie erkennt Paperless-ngx Dubletten?
Technisch gleiche Inhalte werden über die normale Dublettenerkennung gekennzeichnet. Ähnliche OCR-Inhalte lassen sich ergänzend mit document_fuzzy_match untersuchen.
Welcher Ratio-Wert ist sinnvoll?
Er hängt vom Bestand ab. Bei meinen vielen seriellen Dokumenten waren 90 und 99 Prozent zu breit; 100 Prozent ergaben eine bearbeitbare Kandidatenliste.
Bedeutet 100 Prozent Similarity, dass ich löschen darf?
Nein. Der Wert beschreibt das Ergebnis des Textvergleichs, nicht die fachliche oder archivische Identität.
Darf ich --delete verwenden?
Der Befehl bietet diese Option, doch ich verwende sie nicht. Vor jeder Löschung brauche ich Sichtprüfung und eine verlässliche Sicherung.
Verhindert ein Tag erneute Fuzzy-Treffer?
Nein. Ein Tag kann die fachliche Prüfung dokumentieren, wird von document_fuzzy_match aber nicht als Ausschlusskriterium ausgewertet. Wiederkehrende Fehlalarme lassen sich erst in einer nachgelagerten Arbeitsliste anhand der dokumentierten ID-Paare ausblenden.
Wie bereinige ich eine bestätigte Dublette?
Die bessere Fassung wird als A festgelegt. Fehlende oder bessere Metadaten aus B werden gezielt nach A übernommen. Nach der Abschlusskontrolle wird B in den Papierkorb verschoben. Ein automatisches „B überschreibt A“ findet nicht statt.
Warum erscheinen verschiedene Rechnungen als ähnlich?
Seriendokumente besitzen dieselbe Vorlage und viele gleiche Textblöcke. Wenige veränderte Daten können fachlich entscheidend sein, obwohl der Gesamttext fast gleich bleibt.
Fazit
Fuzzy Duplicate Detection ist kein automatischer Dublettenvernichter, sondern ein leistungsfähiges Prüfwerkzeug. In meinem Test führte der Weg von einer kaum nutzbaren Liste bei 90 Prozent über 106 Paare bei 99 Prozent zu 15 Paaren bei 100 Prozent.
Das überraschende Ergebnis bleibt: Auch 100 Prozent sind kein Freibrief zum Löschen. Der technische Treffer eröffnet die Prüfung; über den Archivwert entscheidet erst der Vergleich der Dokumente.
Weiterführende Paperless-Praxis
- Paperless-ngx 3 kontrolliert aktualisieren – Major-Upgrade mit Sicherung, Rückweg und End-to-End-Test
- Wartungsupdates innerhalb der 3.x-Reihe – Patch- und Minor-Updates nachvollziehbar vorbereiten und prüfen
- Paperless-ngx-Arbeitsabläufe aus der Praxis – Regeln, Posteingang und menschliche Sichtkontrolle
- Paperless-ngx zuverlässig sichern – Backup, Prüfung und Wiederherstellbarkeit
Weitere Einordnung bieten Paperless-ngx im privaten Dokumentenarchiv und das Mini-DMS-Projekt.
Persönliche Unterstützung
Dieser Artikel vermittelt die fachlichen Grundlagen. Wenn Sie die beschriebenen Methoden auf einen konkreten Bestand oder ein bestehendes System übertragen möchten, finden Sie ergänzende Informationen unter Dienstleistungen.