Carnet Wiki

ocr

Version 5 — Août 2013 severo

Analyser un fichier image (typiquement un document scanné) pour extraire le texte contenu. L’objectif n’est pas d’afficher le texte extrait, car le résultat sera trop approximatif, mais bien de permettre la recherche sur le contenu.

Cette contribution est un document de spécifications pour un nouveau plugin ocr. Il n’y a pas encore de code.

Présentation

Les documents scannés, en particulier, peuvent contenir du texte dans lequel on aimerait pouvoir chercher depuis le moteur de recherche de SPIP.

Ce plugin fera uniquement l’extraction d’un texte depuis une image et le stockage de ce texte dans un champ de l’image (nouveau champ ocr de la table spip_documents).

Pour pouvoir chercher dans ce nouveau champ, il faudra utiliser et configurer le plugin fulltext.

Spécifications

Le plugin sera basé sur la commande tesseract.

Le plugin proposera les configurations suivantes :

  • chemin du binaire (par défaut : /usr/bin/tesseract)
  • paramètres de la commande (par défaut : -fra pour analyse en français)

L’analyse sera gérée par la file d’attente (http://plugins.spip.net/facd.html).

Limitations

Seulement testé sur Ubuntu Raring.

Développement

Le code du plugin est sur la zone.

On développera dans trunk.

Tâches

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 », en utilisant le plugin facd pour la file d’attente
  • lancement de l’analyse à l’insertion d’un nouveau document
  • lancement manuel de l’analyse (pour un document, pour un type de document, ou pour tous les documents)

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

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.

Indexation et recherche :

  • faire le lien avec fulltext pour indexer le contenu analysé
  • 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).
  • é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.