Tesseract OCR

Actuellement dans le cadre de mon emploi je suis en train de mettre en place un scraper plus ou moins générique.

Sur un des sites que je scrape, j’ai rencontré un problème.

Certaines données textuelles sont embarquées dans des images et du coup impossible de pouvoir les récupérer directement.

Du coup il ne reste que l’ocr pour pouvoir les extraire.

Mais voilà manque de bol, la police en question colle pas avec les réglages de base de tesseract du coup on est obligé de le passer en mode apprentissage.

Quand on voit la documentation, c’est pas très clair, après avoir bouffer une 1/2 journée de test / recherche, j’ai enfin trouvé la procédure qui fonctionne.

Attention ce qui suit est pour la version 3 de tesseract.


tesseract -psm 7 fra.mafont.exp0.tif fra.mafont.exp0 batch.nochop makebox
tesseract -psm 7 fra.mafont.exp0.tif fra.mafont.exp0 nobatch box.train
unicharset_extractor fra.mafont.exp0.box
echo "mafont 1 0 0 0 0" > font_properties
mftraining -F font_properties -U unicharset -O fra.unicharset fra.mafont.exp0.tr
cntraining fra.mafont.exp0.tr
mv normproto fra.normproto
mv pffmtable fra.pffmtable
mv inttemp fra.inttemp
mv shappable fra.shappable
combine_tessdata fra.

Dans mon cas l’image passait pas,  j’ai été obligé de la passer en tif pour éviter les problèmes (attention certains cas les tif avec un canal alpha pose problème).

A la ligne 2 il faut vérifier le contenu du fichier fra.mafont.exp0.box si chaque ligne correspond bien à chaque caractère (si l’ocr ne marchait pas de base il y a fort à parier que ce fichier n’est pas bon).

Pour finir il faut copier le fichier fra.trainingdata dans le répertoire de tresseract pour que le tout soit prit en compte (dans ma distrib : /usr/share/tessdata/)

Avec la commande : tesseract tmp.gif test -psm 7 -l fra

On pourra vérifier la sortie directement dans le fichier test.txt

C’est tout pour le moment, je vais pouvoir finir le reste de mon scraping avec cette fois le contenu des images.

Pour ceux qui se poserait la question j’utilise casperjs (qui utilise lui même nodejs).

Publié dans linux, Logiciel | Marqué avec , , | Laisser un commentaire

chattr mon cher ami

Je m’acharnais gentiment sur mon mkdir en root, pas moyen de faire mon répertoire (permission denied).

Et la merci google.

Un petit lsattr sur le répertoire parent et paf mon répertoire a un flag « i ».

Après un petit chattr -i sur mon répertoire tout est revenu dans l’ordre.

 

Publié dans linux | Laisser un commentaire

Nginx la mise à jour fatale

Je me suis retrouvé avec une erreur au lancement de nginx après la dernière mise à jour.

[emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

Impossible de pouvoir redémarrer, de plus aucun process utilisait le port 80.

Il faut juste modifier le fichier /etc/nginx/sites-available/default
Et mettre  ipv6only=on sur la ligne qui va bien.

server {
 listen 80 default_server; ## listen for ipv4
 listen [::]:80 default_server ipv6only=on; ## listen for ipv6
...
}

On relance nginx et cette fois c’est bon.

Publié dans Nginx, Server | Laisser un commentaire

Bad gateway nginx et ispconfig

J’ai installé il y a quelques temps ISPconfig, j’ai fait l’upgrade sans trop vérifier.
Aujourd’hui je voulais me connecter à mon phpmyadmin et là, Oh surprise (c’est la saison), un bon gros message d’erreur « Bad Gateway 502 ».

Je regarde vite fait les logs

2013/02/03 14:40:55 [error] 6871#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: xxx.xxx.xxx.xxx, server: _, request: "GET /phpmyadmin/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "domain:8081"

Oups, dur, Google, mon beau google, donne moi la réponse.

Après X pages sans solution réelle.

Je tombe sur l’évidence même : »fastcgi://127.0.0.1:9000″

Ils serait peut être de bon ton de passer phpmyadmin et webmail (dans /etc/nginx/sites-available/apps.vhost) en sock

Donc la solution est de passer de :

fastcgi_pass 127.0.0.1:9000;

A :

fastcgi_pass unix:/var/lib/php5-fpm/apps.sock

Après un petit redémarrage d’Nginx, mon phpmyadmin est enfin réapparu.

J’ai pu avoir la confirmation grace à cette page : http://bugtracker.ispconfig.org/index.php?do=details&task_id=2641&project=3&type[0]=1

Publié dans ISPconfig, Logiciel, Server | Marqué avec , , | Laisser un commentaire

Nginx, Rockmongo et PHP_SELF

Je viens de laisser tomber apache pour nginx avec php sous pfm.
C’est un petit bonheur, tout tournait comme une horloge.
Ré-installation de mon nosql préféré et de son gui populaire (rockmongo).

Grosse surprise, tous les url se retrouvent en index.php/index.php……
Après une recherche il y a des combos fatals 🙂

Bref, si dans la configuration de votre Host vous avez la directive :

fastcgi_param PATH_INFO $fastcgi_script_name

Je vous conseille de la désactiver :

#fastcgi_param PATH_INFO $fastcgi_script_name

Après un redémarrage de nginx (/etc/init.d/nginx restart), tout devrait rentrer en ordre.

Publié dans PHP, Server | Marqué avec , , , , , | Laisser un commentaire

IE et les selects

Dans un projet avec des selects qui se rechargent, j’ai eut droit à une désagréable surprise sous IE7/8.
Pas moyen d’ajouter de nouvelles options sans un plantage de type UI (select bloqué sur l’option 1).

Après une perte considérable de temps j’ai enfin trouver LA solution.

Pour vider le select :

$("#monSelect").empty();

Pour ajouter une option (qui marche partout) :

$("#monSelect").get(0).options.add(new Option(monText, maValeur));

La méthode normale (qui marchait pas dans mon cas) :

$('<option value="'+maValeur+'">'+monText+'</option>').appendTo("#monSelect");

Ou

$("#monSelect").append('<option value="'+maValeur+'">'+monText+'</option>');
Publié dans jQuery, Programmation | Marqué avec , , | Laisser un commentaire

Migration de serveur

iGlobe vient de migrer d’un vieux serveur en redhat, à un tout nouveau en ubuntu ce qui va grandement me facilité la tache.

Du coup je vais en profité pour faire un petit article sur les difficultés que j’ai pu avoir, ainsi qu’un autre sur ISPconfig.

Publié dans News | Marqué avec , | Laisser un commentaire

Petit mais costaud

GiadaGiada et ses mini PC

J’ai fait l’acquisition dernièrement de ce tout petit pc, il fait à peu prêt la taille d’un boitier de dvd.

J’ai installé plusieurs système d’exploitation et voila les résultats :

  • windows 7 : A oublier complètement, le pc n’a que 2Go de ram, ce qui limite complètement ses possibilités. De plus au vu de mes besoins il ne rentrait pas dans le cadre (voir plus loin)
  • xubuntu : Niveau utilisation aucun problème ca passe comme une lettre à la poste. Sauf pour la vidéo, pas moyen de faire tourner des vidéos HD (mes compétences étant quelque peu limité dans le domaine)
  • windows XP : J’ai eut beaucoup trop de problèmes à mettre un XP sur une clé USB, j’ai finis par arrêter mes tests à ce niveau la.

Le but premier de cette machine étant de devenir un HTPC, il me restait la solution de trouver des linux packagés média center.
Chose faite avec XMBC.

Mais voila, rien n’est bien simple en informatique.

Il faut déjà commencer par récupérer la dernière version de XMBC (le plus simple étant de prendre la version live)
A l’heure ou j’écris ces lignes, une version plus avancée est disponible en téléchargement sur le forum à cette adresse :

http://forum.xbmc.org/showthread.php?t=76735

Ce PC va être dédié à fonctionner en wifi et pas en Ethernet, et de base le wifi ne fonctionne pas.
La première difficulté a été de faire marcher de base le wifi. J’ai trouvé ma solution sur le sujet suivant :
http://forum.xbmc.org/showthread.php?t=74989&highlight=wireless

Il suffit d’éditer le fichier interface
sudo nano -w /etc/network/interfaces

et d’ajouter à la fin du fichier :

# Wireless
auto wlan0
iface wlan0 inet dhcp
wpa-ssid YOURSSIDHERE
wpa-ap-scan 1
wpa-proto WPA
wpa-pairwise AES
wpa-group AES
wpa-key-mgmt WPA-PSK
wpa-psk YOURKEYHERE

L’exemple est donné pour du WPA-PSK mais vous pouvez facilement trouver les autres syntaxes sur le forum.

Après le redémarrage du réseau mon wifi était enfin disponible.
sudo /etc/init.d/networking restart

La suite bientôt avec samba qui ne marche pas comme voulu 🙂

Publié dans Logiciel, xbmc | Marqué avec , , , | Laisser un commentaire

XMBC le média center à porter de main

média centerLe gros avantage d’XMBC est qu’il tourne sur tous supports (windows, linux, mac et même xbox).

La navigation se fait aussi bien à la souris, qu’au clavier (ou au pad) ce qui laisse un minimum de possibilité en terme de périphérique de contrôle.
Quelques avantages :

  • Localisé en plusieurs langues
  • Lecture de fichier HD
  • Prise en compte de sous titre extérieur (sub, srt, etc…)
  • Recherche des informations des médias via des scrapers
  • Une configuration simple mais poussée.
  • Assez léger en terme de consommation mémoire
  • Quelques thèmes
  • Support de télécommande infrarouge

J’ai récupéré la version live sur le site officiel (http://xbmc.org/download/), que j’ai installé sur mon giada via une clé usb.

L’installation est très rapide et se fait sans encombre majeure.

Dans l’ensemble c’est un du tout bon. Je reviens dessus après plus ample tests.

Publié dans Logiciel, xbmc | Marqué avec , , , | Laisser un commentaire