Affichage des articles dont le libellé est médoc. Afficher tous les articles
Affichage des articles dont le libellé est médoc. Afficher tous les articles

samedi 30 août 2014

Grosse mise à jour Debian

Ça occupe! Tout d'abord, Debian est passé à Postgresql 9.4. Depuis 9.0, Postgresql fait tout ce que je veux, je n'attendais pas particulièrement cette dernière version, mais ça fait toujours plaisir d'être à jour. La mise à jour est toujours aussi triviale, et mes vieilles notes toujours d'actualité. Il faut juste ne pas se tromper de cluster.

Ensuite, quelques changements mineurs dans Médoc, avec Eliom qui passe en 4.0, et change quelques noms de module, et une en-tête manquante dans le client C++. Le commit est donc trivial.

Étrangement, sur ma machine virtuelle au boulot, la mise à jour a voulu passer à systemd, mais pas à la maison. Le passage à systemd semble s'être bien passé, mais un souci avec les "Guest Additions" de VirtualBox m'empêche d'en profiter. Je continuerai donc à utiliser notre bon vieux sysV pour un moment.

mercredi 12 février 2014

Médoc de retour parmis les vivants!

Enfin! Il a fallu batailler pour comprendre les changements apportés à Eliom (la documentation mériterait quelques exemples supplémentaires), mais cette mise à jour est vraiment utile et rend le framework un petit peu plus facile à utiliser, une fois qu'on a compris le principe. J'ai pris quelques raccourcis pour réparer mon code, et il n'est donc pas d'une propreté à toute épreuve, mais l'ensemble du site fonctionne. Étrangement, les CSS ont eu l'air de souffrir un petit peu: en particulier, la liste des tags se déroule jusqu'à la fin de l'écran au lieu de passer à la ligne au bout du div. Également, ma section de login n'a pas l'air de prendre le style arrondi que les autres sections ont bien l'air de traiter.

Mais ce sont des détails. L'important est que Médoc soit enfin utilisable. Ouf!

Médoc dans les choux

Ces petits coquins de chez Ocsigen/Eliom, le framework de developpement Web basé sur Ocaml et qui fait fonctionner Médoc, ont fait de sérieuses mises à jour, que je n'ai pas suivies aussi assidument que je l'aurais dû... Résultat des courses, mon Médoc est par terre, et je ne peux plus accéder à mes documents, ce qui est plutôt ennuyeux pour une application qui se targue de gérer lesdits documents. C'est d'autant plus rageant que mon idée initiale, qui était de protéger les documents en les collant directement dans la base sous forme chiffrée plutôt qu'en vrac dans un dossier, protège maintenant trop bien.

J'ai découvert (un peu tard, et après m'être fait pas mal de cheveux) la page du changelog, et je suis en train de m'atteler à porter tout ça.

vendredi 24 février 2012

C'était trivial...

Et Médoc utilise maintenant Tesseract 3.

Il faudra peut-être penser à paralléliser tout ça, parce que pour l'instant, le moins que l'on puisse dire est que l'analyse n'est pas particulièrement fulgurante. Mais les résultats sont là.

Tesseract 3.02 dans les bacs!

Yay, enfin, Tesseract 3 est disponible dans Wheezy!

Comme prévu, c'est le jour et la nuit en comparaison avec l'interface précédente. En plus des points exposés dans le précédent post sur le sujet, il est bon de rappeler également que Tesseract 3 renvoie un résultat en UTF8. J'ai bien l'intention de faire quelques tests avec le mode Mandarin et le mode équations, que je me ferai un plaisir de partager ici.

mardi 14 février 2012

Tesseract 3.02 se rapproche de Wheezy

Voilà un paquet que j'attends avec impatience. Tesseract 3.0 a atterri dans Sid il y a 8 jours, et si tout va bien, devrait débarquer dans Wheezy très bientôt.

Au menu:
- Une API plus propre, et thread safe, ce qui permettra l'analyse des pages en parallèle (à 30 secondes par page, c'est plutôt utile!)
- Et surtout, une meilleure gestion des erreurs, qui permettra de renvoyer un joli message plutôt que de crasher et laisser le développeur découvrir où il s'est trompé. De plus, certains crashs "incompréhensibles" devraient être résolus.

J'ai hâte d'intégrer tout cela à Médoc.

dimanche 29 janvier 2012

L'oeil extérieur

Depuis que quelques bonnes âmes essayent Médoc, je retrouve nombre de petites limitations, ou de cas particuliers que j'avais ignoré un peu rapidement. Le résultat, c'est que le logiciel s'améliore lentement, mais sûrement.

Ce sont des choses bêtes: la localisation, par exemple, qui envoyait des dates en français à la base de données. Ou le support multi-devices: Sane ne reconnait que mon scanner HP, j'ai donc paresseusement simplifié Médoc en prenant le premier device disponible. Mais une simple webcam, par exemple, est considéré comme étant un device supplémentaire, et tout d'un coup, l'hypothèse ne tient plus.

La morale de cette histoire, c'est:
- Eat your own dog food
- Mais faites tester par d'autres!

vendredi 13 janvier 2012

Peaufinage

Quelques améliorations de Médoc: tout d'abord, je rends l'OCR optionnel, puisque la version 2 de Tesseract, empaquetée sous Debian, est assez buggée et crashe régulièrement. Si un document ne passe pas, allez donc désactiver l'option.

Ensuite, j'ai tenté d'améliorer le look de la boite de dialogue du scan: la bibliothèque Sane contient déjà la notion de groupe, il suffisait donc de recoller les morceaux. Une boite de dialogue typique ressemble à ça:

Notez également que la barre de progression est maintenant intégrée, ce qui l'évite de surgir sur le bureau alors que l'on est en train de faire autre chose pendant un long scan.

Un gros morceau sera de revoir en détail l'ordre des contrôles dans chaque boite de dialogue, afin de simplifier la navigation par la touche Tab.

vendredi 23 décembre 2011

C'est maintenant que ça commence

De très bons retours de ma présentation de Médoc sur LinuxFr (ici et ). Merci à tous les commentateurs! J'en retire plus particulièrement ces quelques points:

  • Tout d'abord, faire fonctionner Médoc sur la machine de quelqu'un d'autre est un sacré défi. L'on a découvert des soucis liés aux locales, et je soupçonne peut-être certains problèmes 32/64 bits. Enfin, les autres scanners ont des options spécifiques que je n'avais pas implémentées

  • Ensuite, utiliser du JPG pour mes images n'est probablement pas l'idée du siècle: en effet, un format comme DjVu semble bien plus approprié. J'espère pouvoir réduire significativement la taille de la base, qui devient de plus en plus difficile à sauvegarder.

  • Enfin, il semble pertinent de réintégrer la reconnaissance de caractères, d'autant plus que Debian fournit maintenant la bibliothèque ocrad. Les autres solutions de reconnaissance de caractères ne fournissaient pas de bibliothèque C, ce qui m'avait refroidi.

Pas mal de boulot devant moi, donc. Tout d'abord, je vais, ou plutôt, je suis en train d'installer une Ubuntu 32 bits avec une locale française dans une machine virtuelle, pour tenter de reproduire certains bugs qui m'ont été signalés. Ensuite, je vais m'attaquer à l'amélioration du logiciel, ajout de fonctionnalités, et simplification du processus d'installation.

samedi 17 décembre 2011

Médoc v1.0

Voilà, la dernière fonctionnalité de base vient d'être implémentée. La galerie étant maintenant munie de fonctions de sélection et de ré-ordonnancement, j'annonce que Médoc est pleinement utilisable, et tague donc cette version 1.0. Un peu de documentation sur l'installation est disponible sur le wiki du dépôt chez Github.

dimanche 4 décembre 2011

Une gallerie en wxWidgets

C'est basique, mais ça fait le boulot. Je viens de merger la branche gallerie dans la branche principale, maintenant que mon contrôle de galerie d'images est suffisamment fonctionnel. Voici la bête:



Vu que je n'avais rien modifié dans ma branche principale, le merge a été particulièrement simple:


git branch master <= hop, de retour sur la branche princpale
git merge gallery <= on merge la gallerie, de fait un simple fast forward
git branch -d gallery <= et on détruit la branche devenue inutile

Il reste encore à permettre le réarrangement des pages, et on devrait être fonctionnellement complet.

dimanche 13 novembre 2011

OCaml détecté

Yay, Github a manifestement refait tourner les statistiques, et détecte bien maintenant que Médoc est fait à 45% d'OCaml.

mercredi 2 novembre 2011

Médoc - C'est utilisable

Mon dernier commit complète la phase initiale du client lourd Médoc: il est maintenant possible d'importer un document via le scanner, puis de le sauver dans la base de données. Il aura fallu ajouter quelques boites de dialogues pour entrer la configuration de la base, et pour définir les détails du document.




Il va falloir travailler sur bon nombre de détails pour rendre le client vraiment efficace, comme par exemple pouvoir effacer ou réordonner les pages, ou sauver les paramètres de la session précédente pour ne pas avoir à tout redéfinir à chaque fois.

Le problème principal, pour l'instant, est d'arriver à trouver enfin la configuration du scanner qui fonctionne correctement. Pour mon scanner HP, SANE me sort la liste d'options suivante:



Déjà, pour "Length measurement", il faut absolument changer l'option de "Padded" à "Approximate", sinon le scanner ajoute de lui même une horrible bande blanche en dessus des documents. Ensuite, vient le souci du batch: mon scanner peut scanner une pile de documents d'un coup, dans lequel cas il faut à la fin de chaque page boucler et tester si le scanner est prêt. Si l'on a bien mis l'option "Batch", le scanner répond après la dernière page qu'il n'y a plus de documents, et tout s'arrête. Tout va bien. Si l'on oublie l'option "Batch", par contre, le scanner tourne indéfiniment.

Pire, lors du scan à plat: dans ce cas, le scanner indique toujours un document comme étant disponible. Dans ce cas, il ne faut simplement pas boucler. Il semblerait donc que je sois obligé de demander à l'utilisateur son intention. J'aurais préféré que le scan soit plus intelligent, et me retourne une condition d'arrêt dans tous les cas.

Bien entendu, ce n'est valide que pour mon modèle de scanner. À partir de là, si quiconque veut tenter l'aventure, hic sunt dracones.

mardi 18 octobre 2011

Médoc - Dernières nouvelles

Belles améliorations ce week-end de la partie import. J'ai découvert que je m'étais planté sur le nombre d'options disponibles, et qu'il y en avait de fait bien plus. Deux options en particulier:

  • La length-measurement: mon scanner HP considère (et renvoie via l'API) que la longueur de la page est environ deux fois plus grande que la largeur. Par défaut (l'option Padded), il ajoute donc une grande bande blanche en dessous de la page standard 210x297. Mais en mode Approximate, il me renvoie un signal de fin de données lorsqu'il arrive à la vraie fin de la page.

  • Le batch-scan: sans cette option, le scan à plat fonctionne normalement, mais le scan déroulant pour plusieurs documents s'y perd, et après la dernière page se met à scanner des pages vides jusqu'à ce que l'on termine le job manuellement. Avec l'option, il s'arrête à la dernière page, mais c'est alors le scan à plat qui refuse d'avancer! Il n'est pas sûr que j'arrive à trouver la combinaison d'options qui marche tout le temps, donc il va peut-être falloir que l'utilisateur indique s'il compte scanner une seule ou plusieurs pages.

Ceci dit, et pour peu que l'on fasse attention aux options, l'import est parfaitement fonctionnel. Quelques options supplémentaires, comme le réarrangement des pages, ou la rotation d'une image, seront utiles, bien sûr. Mais maintenant, le minimum nécessaire pour rendre l'outil utile est d'implémenter les fonctions d'export, vers une base de données Médoc, ou vers un pdf.

samedi 8 octobre 2011

Médoc et wxWidgets

Il est tentant de vouloir adapter les bibliothèques, au passé souvent chargé, aux concepts et techniques du C++ moderne. Et pourtant, principalement pour les projets assez indépendants, il vaut mieux s'asseoir un peu sur ses principes, et utiliser la bibliothèque de la manière qu'elle a été pensée.

Prenons la bonne vieille wxWidgets, avec laquelle je suis en train de créer mon client lourd Médoc. Elle utilise sa propre classe de chaines de caractères, afin de supporter plusieurs types d'encodage, ses propres tableaux dynamiques en place du bon vieux std::vector, et utilise des macros un peu partout.

J'ai tendance à importer immédiatement quelques utilitaires de base que je garde dans un coin, du genre conversion entre wxString et std::string. Mais pour Médoc, je crois bien pouvoir m'en passer: mes entrées comme mes sorties passant soit par wxWidgets elle-même, soit par des bibliothèques en C pur, il est plus cohérent de simplement utiliser des wxString partout.

Voilà donc, en 300 lignes, un programme qui permet de charger des images dans une liste, et de les afficher en cliquant dessus:



C'est maintenant que ça se gâte: remplacer la liste d'images par une vraie galerie, permettant d'afficher une miniature de l'image, et d'en changer l'ordre par du glisser-déposer.

vendredi 30 septembre 2011

Un client lourd Médoc

Mon projet de documentation Médoc continue de fonctionner impeccablement, du moins du côté de la base de données et du client Web. Par contre, le client lourd en OCaml et LablGTK, chargé de charger les documents dans la base à partir du scanner ou d'un fichier, commence à tomber en ruines.

Pas très ergonomique d'une part, et pas très intégré d'autre part (la plupart des commandes, telles le chargement de fichier ou le scan en lui-même, sont faites à partir de lignes de commandes lancées par le programme). Je me suis donc mis à écrire un client lourd en C++ avec WxWidgets qui soit un peu plus pratique à utiliser. La libsane se chargera de piloter le scanner, libmagick++ sait apparemment transformer un pdf en image, et la libharu sait transformer une image en pdf.

Y'a plus qu'à coller les morceaux.