• LINUX > scanner et archiver tous ses documents avec paperless-ng

      Paperless-ng

       

      D’avantage de screens dans la documentation.

      Le principe est simple : on l’alimente avec des documents et il aide à les trier (OCR, tags…), les archiver et les rend accessible via mots clés/catégories/date/whatever, en format PDF notamment.

      Bien évidemment ça suppose de pouvoir scanner des documents (Cap’tain Obvious!). Du coup on voit vite si on a l’équipement requis, à savoir un modèle précis de scanner ou une application Android/iOS. Notez que pour Android il y a également PaperlessApp & PaperlessShare.

      Pour simplifier l’installation ils proposent notamment plusieurs compose (docker). Je privilégie la version "Tika & PostgreSQL".
      Apache Tika permet d’extraire les métadonnées des documents Office notamment et je pense que Postgre sera plus performant que SQLite dans ce contexte de traitement de gros volumes de données.

      J’adapte les fichiers pour ma configuration

      .env

      COMPOSE_PROJECT_NAME=paperless

      docker-compose.env : clé secrète + TZ + français

      USERMAP_UID=1000
      USERMAP_GID=1000
      
      PAPERLESS_SECRET_KEY=mgp5pwptQo7WIfVBU8BsHyMGXk1LVSN2uNcpX1I1wnNYHDS4kDHFrwRHR5XS3DBEA
      
      PAPERLESS_TIME_ZONE=Europe/Paris
      
      PAPERLESS_OCR_LANGUAGE=fra

      Au niveau des dossiers à monter :

      /var/lib/postgresql/data = données SQL
      /usr/src/paperless/data = données générales (config)
      /usr/src/paperless/media = documents traités (archivés)
      /usr/src/paperless/consume = dossier de réception des documents à traiter

      Attention, pour pouvoir assimiler des fichiers *Office, il faut des versions précises de Gotenberg et Tika (j’ai testé en vain toutes les autres).

      docker-compose.yml

      version: "3.4"
      services:
        broker:
          image: redis:6.0
          container_name : paperlessredis
          restart: always
      
        db:
          image: postgres:13
          container_name : paperlesspostgres
          restart: always
          volumes:
            - /home/toto/docker/paperless/sql:/var/lib/postgresql/data
          environment:
            POSTGRES_DB: xxx
            POSTGRES_USER: xxx
            POSTGRES_PASSWORD: xxx
      
        webserver:
          image: jonaswinkler/paperless-ng:latest
          container_name : paperless
          restart: always
          depends_on:
            - db
            - broker
            - gotenberg
            - tika
          ports:
            - 8024:8000
          healthcheck:
            test: ["CMD", "curl", "-f", "http://localhost:8024"]
            interval: 30s
            timeout: 10s
            retries: 5
          volumes:
            - /home/toto/docker/paperless/data:/usr/src/paperless/data
            - /Data/paperless/media:/usr/src/paperless/media
            - /Data/paperless/consume:/usr/src/paperless/consume
          env_file: docker-compose.env
          environment:
            PAPERLESS_REDIS: redis://broker:6379
            PAPERLESS_DBHOST: db
            PAPERLESS_TIKA_ENABLED: 1
            PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
            PAPERLESS_TIKA_ENDPOINT: http://tika:9998
          labels:
            - com.centurylinklabs.watchtower.enable=true
      
        gotenberg:
          image: thecodingmachine/gotenberg:6
          container_name : paperlessgotenberg
          restart: always
          environment:
            DISABLE_GOOGLE_CHROME: 1
            DEFAULT_WAIT_TIMEOUT: 30
      
        tika:
          image: apache/tika:1.27
          container_name : paperlesstika
          restart: always

      Et me contente de suivre les instructions

      [root@pve docker]$ mkdir paperless
      [root@pve docker]$ cd paperless/
      [root@pve paperless]$ nano .env
      [root@pve paperless]$ nano docker-compose.env
      [root@pve paperless]$ nano docker-compose.yml
      [root@pve paperless]$ nano docker-compose.yml
      
      [root@pve paperless]$ docker-compose pull
      [...]
      
      [root@pve paperless]$ docker-compose run --rm webserver createsuperuser
      Creating paperlessredis     ... done
      Creating paperlessgotenberg ... done
      Creating paperlesspostgres  ... done
      Creating paperlesstika      ... done
      Paperless-ng docker container starting...
      Creating directory /tmp/paperless
      Adjusting permissions of paperless files. This may take a while.
      Waiting for PostgreSQL to start...
      Apply database migrations...
      Operations to perform:
        Apply all migrations: admin, auth, authtoken, contenttypes, django_q, documents, paperless_mail, sessions
      Running migrations:
        Applying contenttypes.0001_initial... OK
        Applying auth.0001_initial... OK
        Applying admin.0001_initial... OK
      [...]
        Applying paperless_mail.0008_auto_20210516_0940... OK
        Applying sessions.0001_initial... OK
      Executing management command createsuperuser
      Username (leave blank to use 'paperless'): aerya
      Email address: blog@upandclear.org
      Password:
      Password (again):
      Superuser created successfully.
      
      [root@pve paperless]$ docker-compose up -d
      paperlessredis is up-to-date
      paperlesspostgres is up-to-date
      paperlessgotenberg is up-to-date
      paperlesstika is up-to-date
      Creating paperless ... done

       

      Bien entendu y’aura un reverse-proxy d’ajouté pour faire propre :)

      Je vais pas détailler tout le fonctionnement, déjà parce que la doc le fera mieux que moi, ensuite parce que je le découvre aussi. Niveau documentation justement, voici des liens importants : les différentes solutions d’ajout de document, comprendre les termes (Correspondant, Tags etc), comprendre la recherche.

      Je vais par exemple ajouter une facture depuis le navigateur

      L’effet négatif c’est mon plugin Night Eye pour assombrir l’affichage de mes navigateurs

      Sur ce 1er onglet on peut voir/modifier/ajouter/créer diverses informations liées au document. Je vais par exemple faire comme si c’était une facture émise par ma société pour le client M. ACHETEUR.

      Paperless-ng "apprend" et gagne en autonomie. Quand j’ajoute mon client M. ACHETEUR comme Correspondant, j’indique à Paperless-ng comment repérer et attribuer ce correspondant au futurs ajouts de documents le concernant

       

      Tout comme j’ajoute également Mon Entreprise. J’ai donc les 2 correspondants. Si j’avais une SARL je pourrais aussi ajouter le comptable par exemple.

      On retrouve tout (ou on peut le créer dans) le panneau d’administration

      Le contenu est OCRisé et pourra aussi être recherché (enfin je crois)

      Et voilà, j’ai mon 1er document d’archivé :)

       

      A la première fois, ça prend du temps d’ajouter tous nos documents et de créer les tags et autres afférents. Mais ensuite ajouter les documents au fil de l’eau, souvent de manière automatique (email + tags/correspondant auto) sera bien moins chronophage !

      Dans leurs docker-compose ils ajoutent le dossier /export dans les montages. Celui-ci sert à exporter tout le contenu de Paperless-ng (données, configs, docs) en vue d’une sauvegarde ou d’une migration. Utilisant Docker ce n’est pas utile. Mon dossier /home/toto/docker est déjà sous dans un cycle de backup et il ne manque que /Data/paperless, que j’ajoute.

      J’ai testé avec des fichiers Excel et Classeur, ils sont bien reconnus et transformés en PDF.

 

Aucun commentaire

 

Laissez un commentaire