DocBucket, version 0.1

Je ne m'attendais pas à un tel engouement suite à l'annonce dans mon précédant billet, DocBucket, où la gestion facile de son joyeux bordel. Je dois dire que je suis assez content que ce développement puisse intéresser d'autres personnes que moi.

Je me suis donc attelé au packaging de l'application afin de rendre sa mise en place un peu moins acrobatique. Pour le moment, je ne me suis occupé que des packages Python, mais des packages pour au moins Debian devraient arriver assez vite. Au passage, si un mainteneur ou développeur Debian passe par ici est souhaite me donner un coup de main pour rendre disponible le package sur les dépôts officiels, ce serait avec plaisir :-).

Une documentation, localisation en français et l'ajout de fonctionnalités arriveront eux aussi très bientôt. En attendant, voici un petit tutoriel d'installation sur Debian Squeeze, les utilisateurs des autres distributions pourront, je pense, aisément l'adapter pour leurs distributions.

Installation des dépendances

Les dépendances sont assez nombreuses, heureusement, elles sont pratiquement toutes packagées par Debian :

# aptitude install python-django python-imaging python-whoosh python-pymongo cuneiform ghostscript exactimage

Malheureusement, mongoengine n'est pas disponible sur Debian, il faut donc l'installer depuis le package python, vous pouvez utiliser easy_install (package Debian python-setuptools) ou pip (package python-pip) pour l'installer :

Il vous faudra aussi un serveur faisant tourner mongodb, ça peut être la même machine ou une autre :

# aptitude install mongodb

Installation de DocBucket

Vous avez normalement déjà installé easy_install ou pip pour l'étape d'installation de mongoengine, il vous suffit donc de les utiliser pour installer DocBucket à son tour :

# easy_install docbucket

ou

# pip install docbucket

Création de la base de données

Commençons par créer une base de données et un utilisateur sur le mongodb que nous venons d'installer.

# mongo
MongoDB shell version: 1.6.3
connecting to: test
> use docbucket
switched to db docbucket
> db.addUser('docbucket', 'secret')
{
	"user" : "docbucket",
	"readOnly" : false,
	"pwd" : "2aed2908ebee85906effb373b061d354"
}

C'est tout !

Création du projet Django

Placez vous dans le répertoire que vous voulez utiliser pour stocker la configuration de votre instance de DocBucket. Vous pouvez par exemple créer un nouvel utilisateur et la mettre dans sa homedir.

Exécutez la commande suivante

$ django-admin startproject mydocbucket

(il est important que le nom du projet ne soit pas “docbucket”, l'application Django portant déjà ce nom)

Le script va vous créer un répertoire mydocbucket contenant l'arborescence standard des projets Django :

.
|-- __init__.py 
|-- manage.py
|-- settings.py
`-- urls.py

Ce qui nous intéresse ici, ce sont les fichiers settings.py et urls.py. Le premier contient la configuration du projet Django, le second, le mapping d'urls. Si vous n'êtes pas familier avec Django, copiez simplement les exemples contenus dans le répertoire example de l'archive source.

Les options importantes à éditer dans le settings.py sont :

  • MONGO_* : configuration de la connexion à MongoDB.
  • MEDIA_ROOT : chemin absolu vers le répertoire contenant les médias. Celui-ci dépend de votre installation, le fichier d'exemple contient le chemin vers le répertoire media lors de mon installation pour vous aider à le trouver.
  • INCOMING_DIRECTORY : le chemin absolu vers le dossier où stocker les .tiff en sortie de votre scanner.
  • WHOOSH_INDEX : chemin absolu vers le dossier stockant les indexes de la base de recherche, vous pouvez le mettre dans le dossier courant par exemple.

Le reste ne devrait pas avoir à être changé.

Exécutez ensuite la commande python manage.py create_index pour créer l'index de la base de recherche.

À ce stade, DocBucket est installé et vous pouvez le tester en utilisant la commande python manage.py runserver avant d'ouvrir http://127.0.0.1:8000 dans votre navigateur. L'utilisation du serveur web embarqué à Django n'est pas recommandé pour la production, toutefois, si vous êtes le seul utilisateur de l'application, ça ne devrait pas poser de problème. Si vous souhaitez continuer par une installation en passant par un serveur web, je vous redirige vers les multiples documentations à ce sujet.

Pour terminer, les contributions sont évidemment ouvertes : la licence finalement choisie est la GPL3, j'ai aussi mis en place une forge pour ce projet, vous pouvez donc voir les sources, les modifier, m'envoyer des patchs ou même écrire sur le dépôt Git (moyennant un petit mail), mais aussi utiliser le bugtracker pour soumettre bugs et autres idées.

Commentaires

Avatar de Gardouille
Gardouille
le 15 décembre 2010 12:16

Je n'avais pas vu ton post précédent, mais ça donne vraiment envie en tout cas!
Merci pour le partage et bon courage pour la suite. Je risque de te faire des petits retours quand j'aurais eu le temps de l'installer et le tester =)

Avatar de mysix
mysix
le 16 décembre 2010 23:32

Alors j'ai suivi a la lettre ton déploiement.
La première question, c'est comment on utilise easy_install docbucket ? Avec quel fichier ? Il n'y a pas de lien de téléchargement...

Et la seconde, celui qui me pause le plus de souci. J'ai installé Debian squeeze comme pour la base de ce déploiement. Mais j'ai l'impression que python ne reconnait pas django. Même après avoir fait un "import django"
Il me donne ce message d'erreur :

Traceback (most recent call last):
File "/usr/bin/django-admin", line 2, in <module>
from django.core import management
ImportError: No module named core

Merci =)

Avatar de mysix
mysix
le 17 décembre 2010 15:44

C'est tout bon =) J'ai réglé mon problème =D
Mais je me demandais, comment on fait si on veut supprimer des pdf et des dossiers ?

Avatar de Antoine
Antoine inaps.org
le 18 décembre 2010 10:27

C'est pas encore possible pour le moment (sauf manuellement dans la base de données).

Heureux que tu aies réussi à l'installer :). Si tu trouve des bugs ou a des idées de fonctionnalités, n'hésite pas à créer des tickets ! (http://idevelop.org/p/docbucket/issues/)

Avatar de sebokie
sebokie
le 03 janvier 2011 23:51

Bonjour,

Merci pour ce soft tout d'abord.

J'ai tenté d'installer docbucket et ses dépendances sous Archlinux. Je pense qu'il est installé mais ne veut pas se lancer. J'arrive à installer toutes les dépendances, à lancer MongoDB, mais quand je lance "python2 manage.py runserver" cela me donne:

Error: Can't find the file 'settings.py' in the directory containing 'manage.py'. It appears you've customized things.
You'll have to run django-admin.py, passing it your settings module.
(If the file settings.py does indeed exist, it's causing an ImportError somehow.)

Je pense que le problème provient du fichier settings.py que je ne dois pas avoir édité correctement. (car il existe)

Je n'y connais rien à MongoDB et à Django. C'est certainement pour ça que je n'arrive pas à configurer correctement.

J'ai mis mon settings.py sur: http://pastebin.com/DucXYnhk

Si vous voyez une erreur flagrante...

Avatar de Antoine
Antoine inaps.org
le 04 janvier 2011 08:40

Salut sebokie,

Es-tu sûr d'avoir installé mongoengine ? Tu peux le vérifier en ouvrant un shell python et en executant "import mongoengine", ça ne devrait pas lever d'erreur.

Si tu ne vois pas de problème de ce coté, tu peux simplement exécuter le fichier settings.py (python2 settings.py) pour voir si ça te remonte une erreur...

Avatar de sebokie
sebokie
le 05 janvier 2011 00:40

Bonjour, merci pour ton aide. J'ai fait "pip install mongoengine" et maintenant j'ai accès à la page web sur http://127.0.0.1:8000. Je pense donc que tout est correctement installé.

Je vais donc scanner tous mes documents et je te tiendrai au courant si j'ai des remarques.

A propos, quelle est la valeur DPI recommandée pour scanner les documents?

Avatar de Antoine
Antoine inaps.org
le 05 janvier 2011 08:40

Perso j'utilise une résolution de 300DPI en mode "lineart" avec sane. C'est la résolution minimum a partir de laquelle l'OCR travaille correctement.

Avatar de sly
sly
le 08 mai 2011 08:01

salut!

déjà merci pour la mise à dispo de docbucket que je viens de découvrir et qui va je pense me rendre de grands services en tant que geek à tendance bordélique (euphémisme)

j'ai juste une remarque concernant le packaging: tu devrais mettre le dossier example à l'intérieur de celui de docbucket, car là il est ignoré par pip, et du coup on perd les fichiers de conf d'exemple!

mais sinon, ça poutre!!
A+

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 
!