DocBucket, où la gestion facile de son joyeux bordel

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.

Commentaires

Avatar de Arakhnide
Arakhnide
le 12 décembre 2010 20:14

Tiens, ça bosse en dehors des horaires de travail ? En tout cas, ça a l'air bien pensé. J'ai aussi pris l'habitude de stacker mes papiers sur mon bureau (une fiche de paye, une couche de poussière, des papiers de la banque, une couche de poussière, des conneries administratives, une couche de poussière...), je pense jeter un coup d’œil à ton DocBucket, sait-on jamais, ça pourrait m'aider.

Par contre, je vois le captcha-like en dessous, 7+5, heureusement que mon téléphone fait calculatrice, j'aurais été baisé pour valider mon post...

Avatar de chaval
chaval
le 12 décembre 2010 21:50

C'est rigolo, on a l'air d'avoir la même méthode de rangement.
Il y a un mois, les impôts m'ont demandé de justifier mes revenus et heures travaillées de l'année 2007. Je me suis rapidement aperçu que ma méthode de classement avait des limites, et je commençais à m'intéresser à la numérisation. Mais numériser et déposer les scan dans un dossier "bordel" ne ferait pas mieux (oui, pourquoi ne pas classer les doc papiers, et bien ranger des doc numérisés ??)
Bref, ce projet me plait bien, et je compte bien l'essayer quand j'aurai un peu de temps libre ;-)
Merci beaucoup !

Avatar de fifou
fifou
le 13 décembre 2010 06:43

Très beau projet ! Félicitations.

Il manque quelques petites choses pour coller à mon besoin mais c'est très bien pensé. Par exemple, il serait utile de créer la notion de dossier (on créé un document en joignant plusieurs tiff, très bien mais on pourrait aussi ajouter directement un pdf ou un fichier LaTeX et j'en passe, le tout à un même dossier ?

Une gestion des tags serait peut-être un plus aussi.

Je vais quand même le tester :) Merci beaucoup.

Avatar de glooobule
glooobule www.debian.org
le 13 décembre 2010 09:19

Super projet !

M'en vais le tester rapidement, car comme vous j'ai quelques petits soucis de classement!

Merci à toi.

Avatar de StandarT
StandarT standartux.fr
le 13 décembre 2010 09:53

Merci pour le rappel de développement "à la rache", ça me permet de faire beaucoup plus de chose en beaucoup moins de temps et me donne la nostalgie de mes années d'étudiant ^^

Avatar de Mysix
Mysix
le 13 décembre 2010 10:51

Waaah super !
Je scanne aussi les documents important et je n'ai jamais eu le courage de commencer a faire un système de classification comme le tient.

Je vais essayer ça de suite !

Avatar de Flink
Flink www.belfalas.org
le 13 décembre 2010 12:00

Très bonne initiative ce projet ! C'est sous quelle licence au fait ?
Ça pourrait être pas mal de s'en inspirer et de proposer une version desktop, bien que ça se discute je pense.

Avatar de Eniotan
Eniotan
le 13 décembre 2010 14:12

Effectivement, ça m'al 'air bien utile.

Je songeais depuis longtemps à une solution similaire, mais je n'ai jamais eu le courage de m'y mettre alors je salue l'effort.

J'imagine que le retour sur investissment (en temps et encombrement) est assez rapide !

Avatar de Mysix
Mysix
le 13 décembre 2010 16:04

Une question, c'est possible de mettre les versions des applications utilisés. Parce-que par exemple pour djangoDB, ton fichier de configuration ne correspond pas au mien par rapport aux variables.

Merci

Avatar de fan2linux
fan2linux
le 13 décembre 2010 20:05

Ce projet semble super.
Le seul problème, c'est de l'installer pour l'essayer car je n'y connais que nibe.
Professionnellement, j'utilise Novaxel pour la GED mais à la maison c'est Ubuntu donc pas de Novaxel.
Alors ton projet est vraiment ce que je cherchais : simple efficace et très utile
Merci de mettre à disposition une méthode d'installation simple pour un néofite.

Avatar de fan2linux
fan2linux
le 13 décembre 2010 20:10

Fonctionnalité indispensable : pour utiliser quotidienne la GED, la clé du succès réside aussi dans la capacité à retrouver les documents originaux.
La date de la numérisation apparait très clairement dans le descriptif du ficher et le document est archivé dans une enveloppe et sur l'enveloppe la date est marquée dessus. Les enveloppes sont stockées par ordre croissant de date. Donc très facile à retrouver en cas de besoin.

Avatar de Antoine
Antoine inaps.org
le 13 décembre 2010 20:20

@Flink: J'avais complètement oublié ce point, je ne sais pas encore sous quelle licence je publierais la prochaine version. En attendant ceux qui veulent l'utiliser peuvent considérer qu'ils le peuvent, et ceux qui souhaitent le modifier doivent attendre un peu pour publier, le temps que je mette ça en place...

@Mysix: DjangoDB ? Tu veux parler de MongoDB ou de Django ? :) Pour Django, il faut la version 1.2 (disponible dans Debian Squeeze), MongoDB, j'ai la version 1.6.3, mais ça devrait fonctionner avec les autres versions.

@fan2linux: Je m'attendais pas à cet enthousiasme. Je vais m'occuper de faciliter l'utilisation du soft, mais il faut me laisser un peu de temps... Je publierais un message ici quand ce sera fait.

@autres: Merci à vous :-).

Avatar de nfk
nfk
le 13 décembre 2010 20:23

Genial ton projet à l'arrache, du coup je me suis empressé de le tester car cela fait un moment que je pense aussi à numeriser et organiser ma paprasse.
Pour l'instant mes fichiers tiff sont bien vus par docbucket mais je tombe sur un "Segmentation fault" de la part de Cuneiform qui est en version 0.7.0. Donc avis a tous quel est votre version de Cuneiform ?

Ma config pour ceux que ça pourrait intéresser.
distrib ubuntu 10.10
>sudo apt-get install mongodb cuneiform exactimage python-whoosh pip
>sudo pip install mongoengine

a+ et encore bravo pour ton taff et ton idée

Avatar de Antoine
Antoine inaps.org
le 13 décembre 2010 20:30

@nfk: Ma version de Cuneiform est la même que la tienne.
Tu peux voir les commandes utilisées pour l'appeler dans le settings.py pour tenter de debugger.

Avatar de batisteo
batisteo
le 13 décembre 2010 22:43

En attendent, la licence utilisée est par défaut celle de la Rache, c'est-à-dire compatible Domaine Public. Faut faire attention ;)
source: http://www.risacher.com/la-rache/index.php?z=3

Et moi aussi ce projet m'intéresse fortement, oh combien bordélique je suis.

Avatar de strider
strider strycore.com
le 14 décembre 2010 10:09

docbucket sur bitbucket !
ça m'a l'air intéressant comme projet, je prends, au moins pour jeter un coup d'oeil aux sources.

Avatar de mysix
mysix
le 14 décembre 2010 14:48

Vu qu'il n'y a pas encore de forum d'aide =) je demande ici :
J'ai un souci et je bite rien :

gentoomysix docbucket # python manage.py runserver
Validating models...
Unhandled exception in thread started by <function inner_run at 0xb6e890d4>
Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/django/core/management/commands/runserver.py", line 48, in inner_run
self.validate(display_num_errors=True)
File "/usr/lib/python2.6/site-packages/django/core/management/base.py", line 249, in validate
num_errors = get_validation_errors(s, app)
File "/usr/lib/python2.6/site-packages/django/core/management/validation.py", line 28, in get_validation_errors
for (app_name, error) in get_app_errors().items():
File "/usr/lib/python2.6/site-packages/django/db/models/loading.py", line 146, in get_app_errors
self._populate()
File "/usr/lib/python2.6/site-packages/django/db/models/loading.py", line 61, in _populate
self.load_app(app_name, True)
File "/usr/lib/python2.6/site-packages/django/db/models/loading.py", line 78, in load_app
models = import_module('.models', app_name)
File "/usr/lib/python2.6/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/mybak/sites/docbucket/docb/models.py", line 15, in <module>
class Thumbnail(me.EmbeddedDocument):
File "/mybak/sites/docbucket/docb/models.py", line 17, in Thumbnail
image = me.FileField()
AttributeError: 'module' object has no attribute 'FileField'

Une petite idée ? J'ai rien modifié dans ton code.
Merci !

Avatar de Antoine
Antoine inaps.org
le 14 décembre 2010 16:28

@mysix: Quelle version de mongoengine as-tu ?

Avatar de mysix
mysix
le 14 décembre 2010 16:59

J'ai la version 0.3
Chez moi c'est des GIT parce-que je suis sous Gentoo n_n

Avatar de Antoine
Antoine inaps.org
le 14 décembre 2010 18:21

Chez moi c'est la 0.4, tu peux essayer avec cette version ? (easy_install mongoengine)

Avatar de mysix
mysix
le 15 décembre 2010 10:20

hum, non j'ai essayé mais apparemment cela me cause des problèmes...
Je vais essayer sur la dernière version de centos.

Avatar de mysix
mysix
le 15 décembre 2010 10:41

Ha oui, je viens de voir dans les logs de changement entre version qu'ils ont ajouté dans la 0.4 le fameux filefield qui me manque ^^

Avatar de Golgo
Golgo
le 15 décembre 2010 16:58

Après quelques recherches cet après midi, je suis tombé sur ces projets qui présentent à peu près les même fonctionnalités. Autant de pas réinventer la roue :)

pap'rasse qui est assez ancien et plus de mise à jour un certain temps mais l'auteur semble actif sur le forum de son site internet.
http://www.technifree.fr/modules/wfdownloads/singlefile.php?cid=2&lid=671

MALODOS qui semble tout jeune
http://linuxfr.org/~davguez/30020.html

Bon scans à tous :D

Laisser un commentaire
:
:

Optionnel.

:

Ne sera pas publiée, elle est utile pour les Gravatars et la modération des commentaires.

:

Vous pouvez utiliser ces marqueurs : a, strong, em, pre, blockquote, abbr, acronym, et code. Les sauts de lignes et les liens sont automatiquement convertis.

:

Ce test permet de vérifier que vous n'êtes pas un (salaud de) robot de spam.


J'utilise Escaline 
!