Unterstützung benötigt: Export von Paperless-ngx Daten nach Excel

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Krabtus

Benutzer
Registriert
05. Dez. 2022
Beiträge
121
Reaktionspunkte
17
Punkte
24
Hallo zusammen,

ich nutze Paperless-ngx auf meiner Synology NAS und bin sehr zufrieden damit. Jetzt möchte ich die Metadaten meiner Dokumente (z. B. Titel, Tags, Datum) gerne in Excel weiterverarbeiten. Leider habe ich bisher keine Möglichkeit gefunden, diese Daten direkt als CSV oder in einem anderen Excel-kompatiblen Format zu exportieren.

Meine Fragen sind:

1. Gibt es eine integrierte Funktion in Paperless-ngx, um die Dokumenten-Metadaten zu exportieren?
2. Falls nicht, hat jemand Erfahrung damit, wie man die Daten eventuell über die API oder direkt aus der Datenbank extrahieren kann?
3. Gibt es vielleicht schon vorhandene Skripte oder Tools, die diesen Export erleichtern?

Vielen Dank im Voraus!
 
Ich wüsste nicht, dass es sowas gibt. Ich bin der Meinung, dass die ganzen Metadaten beim Export in der manifest.json stehen. Die könnte man per Script einlesen und zu CSV umwandeln.
 
Ich hab mir das gerade nochmal angeguckt. In der manifest.json steht wirklich alles drin was du gerne hättest und noch mehr....
Man müsste sich nur einen kleinen Mapper schreiben, der die Datei einliest und alles auswertet und anschließend wieder alles in eine andere Datei schreibt.
Andere Möglichkeit, die aber wahrscheinlich komplizierter ist, einfach die Daten aus der DB direkt holen. Ich weiß jetzt nicht wie deine Kenntnisse sind und was für dich in Frage kommt.
 
Solange Daten strukturiert sind, reicht es meistens, sie Excel zum Import anzubieten.

Dann entweder feste Spaltenbreiten setzen, oder das verwendete Trennzeichen angeben. Und schon steht alles hübsch in einer Tabelle.
 
Solange Daten strukturiert sind, reicht es meistens, sie Excel zum Import anzubieten.
Ich habe keine extremen Excel Kenntnissen, aber ich glaube bei der Struktur wird das nichts. In der Datei sind verweise auf die Daten. Es handelt sich um eine JSON Datei wo die komplette DB abgebildet wird.

Da ich gerade am Rechner bin habe ich mal was probiert. Ich habe es mit Node probiert, weil Shell Scripting ist nicht meine Stärke
Eine Datei erstellen z.B. exportToCsv.js und folgenden Inhalt einfügen:
Javascript:
const fs = require('fs');
const paperlessData = require('./manifest.json');

const tags = {};
const documents = [];
paperlessData.forEach(f => {
  if (f.model === 'documents.tag') {
    tags[f.pk] = f.fields.name;
  }
  if (f.model === 'documents.document') {
    documents.push({
      titel: f.fields.title,
      filename: f.fields.original_filename,
      date: f.fields.added,
      modified: f.fields.modified,
      tags: f.fields.tags
    });
  }
})

const content = ['"Titel";"Dateiname";"hinzugefügt am";"Geändert am";"Tags"'];
documents.forEach(d => {
  const tmp = {...d};
  tmp.tags = d.tags.map(t => tags[t]).join(', ');
  const entry = Object.keys(tmp).map(i => `"${tmp[i]}"`).join(';')
  content.push(entry);
})


fs.writeFile("paperless.csv", content.join("\r\n"), (err) => {
  if (err)
    console.log(err);
  else {
    console.log("paperless.csv erstellt");
  }
});

Diese Datei im selben Ordner wie die manifest.json ablegen oder den Pfad relativ von der js Datei aus anpassen.
Und dann einfach node exportToCsv.js aufrufen. Es wird dann im selben Ordner eine paperless.csv erstellt. Wenn man weitere Felder hinzufügen will, dann einfach das Objekt bei documents.push erweitern und natürlich die Überschriften bei const content... erweitern.
Bei einem kurzen Test von mir lief das soweit. Aber ich übernehme keine Haftung. Dies dient eher als grobe Orientierung.
 
  • Like
Reaktionen: Rudi2111 und Krabtus
Konntest du es schon ausprobieren? Feedback wäre ganz nett, ob es das ist was du wolltest.
 
Danke @Hellraiser123 für den Script. Ich habe das leider noch nicht testen können, werde es aber bei Gelegenheit. Schade das Paperless-ngx keine direkte Export-Funktion eingebaut hat.
 
Konntest du es schon ausprobieren? Feedback wäre ganz nett, ob es das ist was du wolltest.
Dein Script funktioniert perfekt, genau was ich auf die schnelle gebrauchen konnte, vielen Dank für die Mühe.
Wer sich fragt warum man sowas braucht, auf diese Weise kann man per Excel eine sortierte Liste erstellen und mit einem Blick sehr schnell Fehler in der Namensgebung der Files / Metadaten finden.
 
Da geht noch viel mehr: man kann die exportierten Daten auch direkt für die Steuererklärung oder Nebenkostenabrechnung nutzen (wenn man bspw. per KI Rechnungsbeträge in einem CustomField hinterlegt und Quittungen automatisch mit Werbungskosten/Nebenkosten, automatisch erzeugtem Dokumenttitel und weiteren Zuordnungen Taggen lässt).
 
Wie legst du denn per KI Rechnungsbeträge in einem Custom Feld ab?

Custom Fields habe ich hinzugefügt, aber ich habe noch nichts gefunden womit ich die zB regelbasiert füllen könnte?

Ich benutze jetzt aktuell 2.16.2 pngx
 
Benutzt du dazu eine api oder hast du local / im Heimnetz ein LLM zur Verfügung gestellt? Das klingt grundsätzlich total cool, ich habe nur etwas scheu davor, meine ganzen Dokumente hochzuladen und mit einem der KI Anbieter zu "teilen".
 
Das läuft mit einer lokal laufenden LLM oder auch mit einer Cloud Lösung.
Lokal sollte bevorzugt werden, hab da aber bisher keine Lust drauf gehabt das zu testen.
Wenn du mit deiner Paperless Version zufrieden bist, bleib dabei, oder mach ein Backup und teste die AI Variante.
 
Ich habe keine extremen Excel Kenntnissen, aber ich glaube bei der Struktur wird das nichts. In der Datei sind verweise auf die Daten. Es handelt sich um eine JSON Datei wo die komplette DB abgebildet wird.

Da ich gerade am Rechner bin habe ich mal was probiert. Ich habe es mit Node probiert, weil Shell Scripting ist nicht meine Stärke
Eine Datei erstellen z.B. exportToCsv.js und folgenden Inhalt einfügen:
Javascript:
const fs = require('fs');
const paperlessData = require('./manifest.json');

const tags = {};
const documents = [];
paperlessData.forEach(f => {
  if (f.model === 'documents.tag') {
    tags[f.pk] = f.fields.name;
  }
  if (f.model === 'documents.document') {
    documents.push({
      titel: f.fields.title,
      filename: f.fields.original_filename,
      date: f.fields.added,
      modified: f.fields.modified,
      tags: f.fields.tags
    });
  }
})

const content = ['"Titel";"Dateiname";"hinzugefügt am";"Geändert am";"Tags"'];
documents.forEach(d => {
  const tmp = {...d};
  tmp.tags = d.tags.map(t => tags[t]).join(', ');
  const entry = Object.keys(tmp).map(i => `"${tmp[i]}"`).join(';')
  content.push(entry);
})


fs.writeFile("paperless.csv", content.join("\r\n"), (err) => {
  if (err)
    console.log(err);
  else {
    console.log("paperless.csv erstellt");
  }
});

Diese Datei im selben Ordner wie die manifest.json ablegen oder den Pfad relativ von der js Datei aus anpassen.
Und dann einfach node exportToCsv.js aufrufen. Es wird dann im selben Ordner eine paperless.csv erstellt. Wenn man weitere Felder hinzufügen will, dann einfach das Objekt bei documents.push erweitern und natürlich die Überschriften bei const content... erweitern.
Bei einem kurzen Test von mir lief das soweit. Aber ich übernehme keine Haftung. Dies dient eher als grobe Orientierung.
Herzlichen Dank! Auch ich habe nach so einer Möglichkeit gesucht!
 

Additional post fields

 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat