Fiouf, ça faisait plus d’un an que je n’avais pas écrit ici. C’est pourtant pas les idées de billet qui me manquaient, mais vous savez, la flemme… Bref, je vais aujourd’hui présenter un petit outil perso : DocBucket. Ce nom cache en fait un outil de GED orienté paperasse personnelle.

le logo de docbucket

Je sais pas comment vous vous en sortez, mais moi, la paperasse, ça me gonfle pas mal et la trier, c’est encore pire. Ma méthode actuelle consiste à faire un tas qui grandit doucement sur mon bureau et de le fourrer dans une boite quand il m’emmerde, puis de recommencer avec un nouveau tas. C’est une méthode assez efficace en écriture, mais en lecture et particulièrement en recherche, c’est juste l’horreur.

Me mettre au tri n’était pas une solution, d’autant plus que la recherche n’aurait pas vraiment été plus facile. Je me suis alors mis à imaginer une solution informatique de gestion de mes papiers. Dématérialiser sa paperasse apporte vraiment beaucoup davantage, la recherche rapide et par mot clés, sans avoir à fouiller dans des gros cartons, le fait de pouvoir y accéder de partout, mais surtout, la sauvegarde facile de ses documents.

Tout le problème est de faire en sorte que la tâche ne soit pas trop pénible, j’ai donc simplifié au maximum le “workflow” d’ingestion d’un document :

  1. La première phase consiste à scanner le document, pour ça, rien d’excentrique, j’utilise SANE et scanbuttond qui me permettent de scanner et post-processer un document en appuyant juste sur un bouton de mon scanner. Le document ainsi scanné est déposé au format .tiff dans un dossier d’importation.
  2. La seconde étape consiste à ingérer le document dans la base de données. Pour ça, je passe par une interface web (la même que pour la consultation des documents en fait) et je choisis un titre pour le document, une catégorie et les fichiers .tiff qui feront partie du document. A ce moment, il est possible de re-trier l’ordre des pages du document facilement par drag’n drop.
  3. À la validation, le document est traité par l’OCR, les mots clés sont enregistrés en base de recherche, les .tiff sont agrégés dans un PDF et au passage, le texte est rendu “selectionnable”. Enfin, le PDF est enregistré par le serveur.
Création d'un nouveau document

L’ingestion d’un document passe donc par assez peu de manipulations.

Au niveau technique, j’utilise Python comme langage de programmation, Django pour le framework web, JQuery comme framework JavaScript, une base de donnée MongoDB pour stocker les documents (et leurs métadonnées), Woosh pour la base de recherche, PIL pour le traitement des images, Cuneiform pour l’OCR, hocr2pdf pour créer le PDF selectionnable, et GhostScript pour assembler les différentes pages du PDF.

Voici quelques captures supplémentaires :

Listing des documents Recherche d'un mot clé

N’ayant pas prévu à la base de le publier, j’ai naturellement suivi la méthode de la rache pour développer ce projet. Il n’y a donc pas de Git, pas de version, ou de doc d’installation. Voici l’archive du DocBucket tel qu’installé sur mon serveur, modulo les trucs sensibles. Si je vois que ce projet intéresse vraiment quelques personnes, il est probable que je prenne un peu de temps pour le rendre plus facilement utilisable.