176 lines
7.8 KiB
Markdown
176 lines
7.8 KiB
Markdown
---
|
|
title: Papermerge
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, document-management, ged, ocr, python, django, vuejs]
|
|
confidence: high
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=document-management, https://github.com/papermerge/papermerge-core, https://www.papermerge.com/]
|
|
---
|
|
|
|
# Papermerge 📁
|
|
|
|
> GED **moderne et élégante** écrite en Python (Django) avec frontend Vue.js 3 : scan, OCR, tags, arborescence, et une expérience utilisateur qui rivalise avec les solutions SaaS comme Notion ou Google Drive.
|
|
|
|
| Métadonnée | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | https://www.papermerge.com/ |
|
|
| **GitHub** | https://github.com/papermerge/papermerge-core |
|
|
| **License** | Apache-2.0 |
|
|
| **Langage** | Python / Django + Vue.js 3 (TypeScript) |
|
|
| **Étoiles** | ⭐308 |
|
|
| **Dernière MAJ** | 2026-05-25 |
|
|
| **Catégorie** | [[cat-document-management]] |
|
|
|
|
## Description
|
|
|
|
Papermerge est une **GED open source** relativement jeune (1ère release stable v2 en 2022) qui mise tout sur l'**expérience utilisateur**. Le frontend Vue.js 3 + Tailwind offre une UI fluide, type « drive cloud » (drag&drop, preview instantanée, breadcrumb, recherche rapide), là où Paperless-ngx et Mayan restent plus « admin Django » dans l'âme. L'idée : proposer une **alternative crédible à Google Drive + OCR** pour gérer ses documents personnels ou d'équipe.
|
|
|
|
Fonctionnalités principales : **OCR** (Tesseract 5 avec modèles LSTM), **tags hiérarchiques** (tag parent/enfant), **arborescence de dossiers** illimitée, **aperçu** PDF/images natif dans le navigateur, **partage** de documents par lien (avec expiration), **API REST** complète (OpenAPI), **utilisateurs/groupes/permissions**, **OCR auto** à l'upload, **extraction de métadonnées** par regex, **page OCR manuelle** pour corriger les erreurs.
|
|
|
|
L'**architecture** est en microservices Docker : `core` (Django REST), `frontend` (Vue.js), `worker` (Celery pour OCR/tâches lourdes), `db` (Postgres), `broker` (Redis). C'est plus complexe à déployer que Paperless mais bien découplé. La **v3** (en cours, 2024-2025) apporte un éditeur de documents in-app, le support natif des images multi-pages, et un système d'OCR encore plus rapide (GPU optionnel). Le **modèle commercial** Freemium (cloud payant) finance le développement open source, ce qui assure une roadmap active.
|
|
|
|
## Installation
|
|
|
|
### Via Docker Compose (recommandé)
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
services:
|
|
backend:
|
|
image: papermerge/papermerge-core:latest
|
|
container_name: papermerge-backend
|
|
restart: unless-stopped
|
|
expose:
|
|
- "8000"
|
|
environment:
|
|
- DJANGO_SETTINGS_MODULE=papermerge.settings
|
|
- DATABASE_URL=postgres://papermerge:***@db:5432/papermerge
|
|
- REDIS_URL=redis://broker:6379/0
|
|
- PAPERMERGE_SECRET_KEY=***- SECRET_KEY_HERE
|
|
- PAPERMERGE_ALLOWED_HOSTS=*
|
|
- PAPERMERGE_OCR_LANG=fra+eng
|
|
- PAPERMERGE_OCR_DEFAULT_PAGE_SEG_MODE=1
|
|
volumes:
|
|
- papermerge-data:/app/data
|
|
depends_on:
|
|
- db
|
|
- broker
|
|
|
|
frontend:
|
|
image: papermerge/papermerge-frontend:latest
|
|
container_name: papermerge-frontend
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8081:8080"
|
|
environment:
|
|
- PAPERMERGE_API_URL=http://backend:8000
|
|
|
|
worker:
|
|
image: papermerge/papermerge-core:latest
|
|
container_name: papermerge-worker
|
|
restart: unless-stopped
|
|
environment:
|
|
- DJANGO_SETTINGS_MODULE=papermerge.settings
|
|
- DATABASE_URL=postgres://papermerge:ChangeMe@db:5432/papermerge
|
|
- REDIS_URL=redis://broker:6379/0
|
|
- PAPERMERGE_SECRET_KEY=ChangeMeWithOpensslRandHex64
|
|
volumes:
|
|
- papermerge-data:/app/data
|
|
depends_on:
|
|
- db
|
|
- broker
|
|
|
|
db:
|
|
image: postgres:16-alpine
|
|
container_name: papermerge-db
|
|
restart: unless-stopped
|
|
environment:
|
|
- POSTGRES_DB=papermerge
|
|
- POSTGRES_USER=papermerge
|
|
- POSTGRES_PASSWORD=ChangeMeDbPass!
|
|
volumes:
|
|
- papermerge-db:/var/lib/postgresql/data
|
|
|
|
broker:
|
|
image: redis:7-alpine
|
|
container_name: papermerge-redis
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
papermerge-data:
|
|
papermerge-db:
|
|
```
|
|
|
|
> **Note** : pour la v3 (alpha), la stack se simplifie (image unique), cf. [doc d'install v3](https://docs.papermerge.com/).
|
|
|
|
### Installation manuelle
|
|
|
|
1. **Pré-requis** : Python 3.11+, Node.js 18+ (build frontend), PostgreSQL 14+, Redis 6+, Tesseract 5 + modèles `fra` et `eng`, ImageMagick.
|
|
2. **Backend** : `pip install papermerge-core`, `python manage.py migrate`, `python manage.py createsuperuser`.
|
|
3. **Frontend** : `git clone https://github.com/papermerge/papermerge.js && cd papermerge.js && npm install && npm run build` (sert sur :8080).
|
|
4. **Worker** : `celery -A papermerge worker` (process séparé).
|
|
5. **Prod** : gunicorn derrière Nginx, worker en systemd.
|
|
|
|
## Configuration
|
|
|
|
- **Premier admin** : créé via `createsuperuser`, se connecter sur le frontend pour configurer.
|
|
- **OCR** : `PAPERMERGE_OCR_LANG=fra+eng` permet d'extraire le texte français et anglais. Ajouter `deu`, `spa` selon les besoins.
|
|
- **Tessdata** : monter `/usr/share/tesseract-ocr/4.00/tessdata/` du host (ou installer les `.traineddata` dans l'image custom).
|
|
- **Tags** : créer une taxonomie **avant** l'import (ex: Énergie, Banque, Santé, Administratif, Auto, Travail).
|
|
- **Partage** : activer le partage par lien dans Settings → Sharing, définir une expiration par défaut.
|
|
- **Backups** : `pg_dump` quotidien + rsync du dossier `data/`.
|
|
- **HTTPS** : obligatoire via reverse proxy.
|
|
- **Reverse proxy** : configurer `client_max_body_size` (uploads jusqu'à 200 Mo pour les scans HD).
|
|
|
|
## Alternatives
|
|
|
|
### Open Source
|
|
- [[app-paperless-ngx]] — GED plus mature, plus grande communauté (Python/Django)
|
|
- [[app-mayan-edms]] — EDMS enterprise avec workflows (Python)
|
|
- [[app-papra]] — alternative TypeScript minimaliste
|
|
- [[app-docspell]] — EDMS Scala axé OCR
|
|
- [[app-stirling-pdf]] — outil PDF, complémentaire (post-traitement)
|
|
- **Teedy** (Sismics Docs) — GED Java simple
|
|
- **Alfresco** — GED enterprise Java
|
|
|
|
### Propriétaires
|
|
- **Google Drive + Docs** — cloud Google, OCR limité
|
|
- **Notion** — notes + docs, pas vraiment GED
|
|
- **Dropbox** — cloud freemium
|
|
- **OneDrive** — Microsoft, intégré Office
|
|
- **Box** — cloud enterprise
|
|
- **DEVONthink** — GED Mac/iOS, très bonne réputation
|
|
- **Evernote** — freemium, OCR de qualité
|
|
|
|
## Sécurité
|
|
|
|
- **HTTPS obligatoire** + HSTS via reverse proxy.
|
|
- **2FA** : supporté via `django-otp` (TOTP, WebAuthn en option).
|
|
- **SSO OIDC/SAML** : intégrable via plugins tiers (`django-allauth`).
|
|
- **Permissions par groupe** : créer des groupes (Famille, Pro, Archives) avec ACL différentes.
|
|
- **Chiffrement at-rest** : monter les volumes sur stockage chiffré.
|
|
- **Partage par lien** : tokens signés avec expiration, révocables, traçables (logs).
|
|
- **Audit** : logs d'accès aux documents, actions utilisateurs.
|
|
- **Mises à jour** : suivre les releases (régulières), les CVE Django sont corrigées rapidement.
|
|
- **Backups testés** : tester la restauration complète (DB + fichiers), critique pour une GED.
|
|
- **Isolation** : Papermerge ne doit pas être exposé directement sur Internet sans auth.
|
|
|
|
## Ressources
|
|
- Site officiel : https://www.papermerge.com/
|
|
- Documentation : https://docs.papermerge.com/
|
|
- GitHub (core) : https://github.com/papermerge/papermerge-core
|
|
- GitHub (frontend) : https://github.com/papermerge/papermerge.js
|
|
- Discord communautaire : https://discord.gg/8K6XuC9T5S
|
|
- selfh.st : https://selfh.st/apps/?tag=document-management
|
|
|
|
## Pages Liées
|
|
- [[cat-document-management]] — catégorie parente
|
|
- [[app-paperless-ngx]] — concurrent principal
|
|
- [[app-mayan-edms]] — alternative enterprise
|
|
- [[app-papra]] — alternative TS minimaliste
|
|
- [[app-stirling-pdf]] — outil PDF complémentaire
|
|
- [[recettes-docker-compose]] — templates de déploiement
|
|
- [[securisation-home-lab]] — bonnes pratiques sécurité
|