Journal [PUB] sortie d'un logiciel de gestion de document électronique

Posté par (page perso) .
24
3
août
2010
Nouveau venu sur linuxfr, je me présente : david guez (que dire d'autre).
Voila ceci est une annonce pour de la mise a disposition d'un nouveau logiciel créé par moi même MALODOS en version alpha et sous licence libre.
Le logiciel devrait déjà être utilisable, mais il manque encore certaines fonctionnalités non essentielles et n'a quasiment pas été testé à ce jours.
L'idée de base du programme était en fait de me permettre de scanner au fur et à mesure les factures, reçus, impôts, documents, etc...et d'avoir un logiciel me permettant, lors du scan, d'attribuer des mots clefs et de classe les fichiers crées pour pouvoir y faire des recherches ultérieures.
A priori c'est très basique, mais je n'ai rien trouvé qui soit simple, gratuit (je ne compte pas payer pour quelque chose d'aussi basique, surtout si je me sens capable de le faire) et sûr. Par sûr, j'entends quelque chose avec lequel
1) je sais où sont mes données
2) je ne soit pas soumis à une éventuelle incompatibilité du logiciel avec une version future de mon ordninateur / OS. Autrement dit, que les bases de données et les formats des fichiers d'images soient standards et clairement indiqués. L'absence de ce critère m'a finalement fait abandonner le logiciel "paperarchiver" qui, à part ça, me convenait parfaitement.

J'ai donc développé ma propre version sous wxpython, que je vous présente ici.

Le logiciel fonctionne sous windows/linux (mac os ? à vérifier j'en ai pas) mais requière pas mal de dépendances (cf fichier INSTALL)
Il est déjà capable de scanner un document puis de lui attribuer un titre/description/auteur/date de création/date de scan et de faire une recherche simple (pas de regexp ou d'opération booléenne) sur les titres/description.

Il est également capable d'ajouter un fichier d'image déjà existant à la base de données et d'afficher les pages dans un mini-viewer intégré. Il peut également, sous linux et windows, lancer le viewer système associé à chaque fichier.


Ce n'est pas mon premier logiciel, mais c'est le premier qui n'est pas seulement destiné à être utilisé par moi et trois collègues.

J'ai donc opté pour une licence libre (GPL) et c'est la raison pour laquelle je fait mon annonce ici.

Comme c'est mon premier logiciel 'grand publique' il y a certaines règles que je ne suis pas certain de respecter dans le code (style de la documentation et de la programmation, règles de sécurité, etc...) et les bonnes âmes prêtes à regarder le code et à commenter sont les bienvenues.

Ceux qui veulent me dire qu'utiliser python c'est pourri, je leur répondrais qu'il s'agit également de ma première tentative dans ce langage et que je suis d'accord, c'est pourri (j'exagère un peu mais POURQUOI on doit ré-écrire self 10000 fois, pourquoi utiliser un langage typé dynamiquement qui n'a donc aucun moyen de me dire les 5 erreur par lignes que je commet avant le run time, en espérant que je sois passé dessus durant mes tests... c'est ça qu'on appel un troll? oui je suis jeune et innocent)

Il y a un certain nombre d'améliorations à apporter dont j'ai conscience et que je ferais plus tard :

1) localisation
2) documentation un peu sérieuse
3) packaging
4) d'autres trucs écrits dans le TODO.txt
5) possibilité de créer un zip des documents pour les transporter
6) recherche plain text

d'autres trucs me chiffonnent parce que je ne vois pas pour l'instant de moyens pour les résoudre (bonnes âmes?)
1) lecture de pdf via swftools lourd; écriture pdf via gfx; lecture tiff via wxwidgets le reste des formats d'images via PIL c'est pas top. Existe-t-il un moyen un peu plus unifié de lire tif/pdf/png/jpg sous python?

2) pour la création des pdf je suis obligé d'en passer par un fichier temporaire et donc j'utilise tmpname ou un truc dans le genre qui me produit warning de sécurité. Ok mais comment s'en passer ?

Enfin, toute remarque sur la façon dont le logiciel est mis sous licence GPL, sur les moyens de partager et annoncer un nouveau venu, etc.... sont aussi les bienvenues

Pour télécharger le logiciel et son code source: [http://code.google.com/p/malodos/]


Voilà voilà merci et bonne plage
  • # Nom

    Posté par (page perso) . Évalué à 8.

    MALODOS est-il basé sur la bibliothèque Lumbago ? Non, sérieusement, d'où vient ce nom, programmer te donne des douleurs lombaires alors tu te venges sur le nom de ton logiciel ? ;-)
    • [^] # Re: Nom

      Posté par (page perso) . Évalué à 10.

      non, enfin oui, mais surtout rechercher dans mon placard la facture de septembre 2008 dont j'ai justement besoin aujourd'hui m'oblige à me pencher des heures,sans aucun égard pour ma chère colonne vertébrale, qui jusqu'à présent ne m'a pourtant rien fait de méchant.
      Mais je le reconnais volontiers le nom du logiciel est pourri, au moins si le logiciel ne vaut pas un clou personne ne pourra prétendre qu'il n'était pas prévenu

      Ceci n'est pas une signature

  • # Fichier temporaire

    Posté par . Évalué à 4.

    > j'utilise tmpname ou un truc dans le genre qui me produit warning de sécurité

    En C, c'est 'mkstemp'.

    En feuilletant le code de Mercurial l'autre jour, je suis aussi tombé dessus: 'tempfile.mkstemp'.
    Je ne sais pas s'il te faut importer quelque chose, mais bon, c'est déjàa un point de départ...
    • [^] # Re: Fichier temporaire

      Posté par . Évalué à 5.

      $> python
      >>> import tempfile
      >>> help(tempfile)
      • [^] # Re: Fichier temporaire

        Posté par (page perso) . Évalué à 1.

        En fait j'avais bien vu ces fonctions, mais il me semble que la façon "sécurisée" de les créer consiste en fait, non seulement à donner un nom de fichier temporaire, mais également de l'ouvrir automatiquement sans possibilité pour d'autres processus d'intervenir entre l'appel de la fonction et le retour du fichier (et donc d'y injecter des choses dangereuses).
        J'avais un peu peur que le fait pour le fichier d'être déjà ouvert avant que je n'y transfert mon image me poserait un problème.Mais en même temps je n'ai pas essayé, c'est idiot.
        Donc je tente ma chance ce soir et qui vivra verra...
        by

        Ceci n'est pas une signature

        • [^] # Re: Fichier temporaire

          Posté par . Évalué à 2.

          La fontion 'mkstemp' est sûre. Il n'y a pas de "race condition", au contraire de 'mktemp' qui est depuis longtemps dépréciée en faveur de 'mkstemp'.
          • [^] # Re: Fichier temporaire

            Posté par . Évalué à 2.

            cela ne change rien si le programme ne fait que renvoyer le nom du fichier. utiliser NamedTemporaryFile().name ne changera rien (c'est equivalent a faire un close sur le fd de mkstemp et de garder que le nom). dans son cas il faudrait utiliser la version de DIBToBMFile sans son deuxieme argument, et recuperer le contenu en tant que grosse chaine :). mais de toute facon ce code est que pour windows.
      • [^] # Re: Fichier temporaire

        Posté par (page perso) . Évalué à 2.

        regarde cet exemple

        http://www.vmspython.org/ProcessIOExample

        , les lignes 3, 4, 5, 6 et 67 vont t'intéresser

        (c'est du Python sous VMS, ça reste du Python)

        If you choose open source because you don't have to pay, but depend on it anyway, you're part of the problem.evloper) February 17, 2014

        • [^] # Re: Fichier temporaire

          Posté par (page perso) . Évalué à 1.

          Merci.... mais plutôt que de supprimer le warning, j'ai testé la méthode avec tempname.mkstemp qui semble marcher...merci ymorin d'ailleurs...

          Ceci n'est pas une signature

  • # pap'rass

    Posté par (page perso) . Évalué à 7.

    En cherchant un peu j'ai trouvé pap'rass en python

    http://bipede.info/bipede/index.php?classez-et-retrouvez-vos(...)

    téléchargement direct : http://bipede.info/downloads/
  • # Un système de fichiers...

    Posté par . Évalué à 4.

    Un système de fichier tag-based, avec des métadonnées pour la description et les diverses dates (de scan, du document) résoudrait peut être la problématique ?

    Comme ça on pourrait utiliser ses propres outils pour scanner,lire les fichiers, rechercher, sauvegarder, synchroniser ou générer des miniatures, sans avoir à tout réécrire.

    Du moins moi j'aimerai bien. (mais bon, aux dernières nouvelles, y'a rien de bien fonctionnel et portable)
    • [^] # Re: Un système de fichiers...

      Posté par . Évalué à 6.

      Bonsoir,

      Le système Nepomuk n'est il pas non plus une réponse à cette problématique ?
    • [^] # Re: Un système de fichiers...

      Posté par (page perso) . Évalué à 5.

      Certes...
      mais d'un autre côté, ça me fait toujours un peu peur les fonctionnalités ajoutées comme ça au coeur du système.Ca alourdis quand même les opérations de bases non? A la limite, je pense que pas plus de 10%de mes fichiers sont à indexer, et si le système prend ça en charge tout seul, comme google-desktop ça rajoute encore un processus au dessus de l'antivirus, de l'antispam de l'antirootkit... mon PC n'est plus tout jeune et je suis toujours surpris par le nombre de choses lourdes et encombrantes qui sont installées par défaut dans les distributions modernes (KDE4 par exemple, je ne suis toujours pas arrivé à l'utiliser sur mon 'vieux' AMD64 XP quelque chose, même en enlevant toute les fioritures graphiques).

      Mais je suis d'accord, un tel système pourrait tout à fait être utile, par exemple sur un parc bureautique (trouver une doc dans un PC du réseau en moins d'une journée de travail est une aspiration tout a fait raisonnable quand on y pense).

      Ceci n'est pas une signature

  • # je sais que bon...

    Posté par (page perso) . Évalué à 6.

    A la problématique multiplateforme :
    ""Existe-t-il un moyen un peu plus unifié de lire tif/pdf/png/jpg sous python""
    --> oui : Qt

    Je ne pense pas que passer ton appli sous pyqt te prenne plus d'une 1/2 journée.
    L'avantage c'est qu'il n'y a plus de problème pour les images.
    http://doc.qt.nokia.com/4.6/qimagereader.html#supportedImage(...)

    pour le pdf, il y a possibilité avec ghostscript (dispo sous win) qui va te transformer ton pdf en image.
    • [^] # Re: je sais que bon...

      Posté par (page perso) . Évalué à 1.

      A vrai dire j'avais vu que pyQT permettait ça, mais j'ai un peu peur que ce soit trop lourd pyQT. Il faut installer QT aussi c'est quand même un gros paquet... choix difficile...


      ghostscript j'y avais pas pensé. En fait si j'utilise ça il ne me reste 'que' le problème des tiff compressé G4... éventuellement ça vaut peut-être le coup d'essayer de patcher PIL pour ça... En fait un patch existe déjà mais j'aimerais éviter d'obliger un éventuel utilisateur à télécharger une version patché de PIL rien que pour utiliser ce programme. Mais récupérer juste la fonction de chargement du TIF modifié et utiliser PIL standard pour le reste doit être possible (j'ai le droit d'inclure du code PIL modifié avec le programme n'est-ce pas?)

      en tout cas merci pour le conseil...

      Ceci n'est pas une signature

      • [^] # Re: je sais que bon...

        Posté par (page perso) . Évalué à 3.

        tu te rends compte de la difficulté ?

        Avec Qt tu enlèves toute dépendances à PIL. (à moins que tu fasses vraiment des trucs bizarres...)

        Mais si c'est pour tourner, peindre dessus... tu enlèves PIL.

        puis pyqt sous windows, ça s'installe assez bien... (y'a un gros binaires qui contient python et pyqt)

        L'avantage d'utiliser pyqt, c'est que tu peux aussi en profiter pour archiver des sons... (je pense à la dictée d'une lettre par exemple) très simplement.

        M'enfin, j'arrête là la pub... c'est ton choix :)

        NB: si tu veux un peu d'aide pour démarrer, tu peux m'écrire. Je suis assez libre pendant 10 j
        • [^] # Re: je sais que bon...

          Posté par (page perso) . Évalué à 2.

          Ha ça oui, je m'imagine très bien les maux de têtes à venir si je décide de patcher PIL.... à vrai dire je pourrais bien te prendre au mot pour QT.
          Ce qui est certain, c'est que pour l'instant, le 'plus pressé' pour moi c'est d'avoir quelque chose de fonctionnel et donc d'ajouter les trucs utiles genre surveillance d'un répertoire (j'ai déjà beaucoup de documents déjà scannés avec paperarchiver puis avec office scan). Donc dans les 10 jours suivants, non, mais si dans un avenir plus lointain (genre quelques mois) tu restes disponible.... A voir!

          En tout cas merci...

          Ceci n'est pas une signature

  • # Pour ma part

    Posté par (page perso) . Évalué à 3.

    J'ai opté pour une solution très simple :

    je scanne mes documents en mode PDF (grace à ma brother DCP-750W) afin d'avoir dans le même PDF les feuilles allant ensemble.

    Puis je copie ce pdf dans mon arborescence dédiée /num après avoir pris soin de le renommer ("facture_avril_2010.pdf") et de le placer dans le sous dossier qui va bien.

    Les sous dossiers étant /num/edf, /num/sfr, /num/eau, etc.

    Voilà, quand je veux retrouver quelque chose, ca ne prend pas beaucoup de temps, et mon système marche partout et sur tous les système :D

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.