Carnet Wiki

ocr_todo

Version 20 — Septembre 2013 severo

Cette contribution est un TODO pour le plugin http://plugins.spip.net/ocr.

Limitations

Seulement testé sur Ubuntu Raring et Debian Wheezy .

Développement

Le code du plugin est sur la zone.

On développe dans trunk.

Les tâches pour le développement du plugin :

  • créer le plugin avec la Fabrique
  • page de configuration avec test de l’existence du script d’OCR
  • création d’un nouveau champ « ocr » éditable dans la table spip_documents, vide par défaut
  • fonction d’analyse d’un document : appel du script et remplissage du champ « ocr »
  • test de l’analyse d’un document sur la page de configuration
  • lancement automatique de l’analyse dans la liste de travaux

A la fin de ces tâches, on passe en test. Fait.

-* rédiger la page de doc sur Contrib

Possibles améliorations

Langue :

  • appliquer tesseract dans la langue du site par défaut
  • ajouter un paramètre de configuration de la langue (par défaut avec la langue du site)
  • si le document a un champ lang, utiliser cette langue pour l’analyse. Voir langdoc.

Programme d’analyse :

  • utiliser php-tesseract directement, au lieu d’une commande native,
  • permettre de se brancher sur d’autres programmes d’analyse, comme OpenOcr.
  • proposer un document de test pour vérifier que l’analyse se fait bien
  • détecter la résolution du document et avertir de la faible fiabilité possible du résultat en cas de faible résolution du document
  • ajouter à la configuration une liste de mots personnalisable, permettant d’enrichir le modèle de langue (noms propres récurrents dans les documents du site, par exemple).

SPIP  :
-* traduire le plugin

Tâches

SPIP :

  • fichier de log dédié pour le suivi des analyses de documents : tmp/log/ocr.log
  • page ecrire/ ?exec=ocr pour indiquer le nombre de documents analysés, en attente d’analyse, en erreur (sur le mode de fulltext).
  • configuration : spécifier les formats sur lesquels lancer l’analyse : autant laisser le programme d’OCR essayer sur tous les documents
  • Pas nécessaire - filtres (sur le mode de doc2img) :
    • #ID_DOCUMENT|ocr_analyser : analyse le document, retourne true si analyse réussie, deja analyse si le document a déjà été analysé, non analysable si le document ne peut pas être analysé.
    • #ID_DOCUMENT|ocr_analysable : retourne true si le document peut être analysé.
    • #ID_DOCUMENT|ocr_analyse : retourne true si le document a déjà été analysé.
  • traduire le plugin
  • permettre le versionnement de l’analyse des documents (date de la dernière analyse sur chaque document) Fait a minima, avec la colonne ocr_analyse, qui indique le statut d’analyse de chaque document (non, oui, err)

Indexation et recherche :

  • faire le lien avec fulltext pour indexer le contenu analysé -> Pas nécessaire
  • faire le lien avec fulltext et doc2img pour rechercher dans les PDF (PDF découpé en images par doc2img, images analysées par ocr, texte extrait indexé par fulltext, et finalement, si une recherche aboutit à un texte extrait d’une image créée par doc2img, montrer plutôt le PDF original comme résultat de recherche). A noter que pour avoir un OCR correct, il faut augmenter la résolution de doc2img à 300 dpi (par défaut 150 dpi) -> Fait simplement en mettant le texte dans le champ ocr du PDF, pas des images reliées par doc2img.
    Indexation et recherche  :
    -* éventuellement , générer un document hOCR donnant la position des lettres reconnues par OCR dans l’image, et générer un PDF « cherchable », attaché au document original.
    -* tester avec [Sphinx->http://contrib.spip.net/Sphinx] et utiliser ses [nouvelles fonctions JSON->http://sphinxsearch.com/blog/2013/08/08/full-json-support-in-trunk/] pour donner également la page du PDF.