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).
Laisser un commentaire