Tesseract-OCR

Posté par  . Modéré par j.
0
7
oct.
2006
Technologie
Moteur de reconnaissance optique de caractères, Tesseract-OCR a été libéré en août 2006.

Historiquement, Tesseract a été créé en 1985 par Hewlett Packard et abandonné 10 ans plus tard. Conscient du potentiel de ce logiciel, il a récemment été décidé de le rendre disponible pour tout le monde en le publiant sous licence Apache v2.

Tesseract-OCR est loin d'être aussi performant que les logiciels propriétaires actuellement sur le marché, mais devient de fait le meilleur moteur de reconnaissance de caractères libre. Développé par Hewlett Packard de 1985 à 1994, Tesseract était un des meilleurs logiciels de reconnaissance optique de caractères. Après le retrait de HP du marché des OCR, il est resté longtemps sans évolution.

Ce n'est que récemment que quelques personnes d'HP ont décidé de lui rendre vie en 2005 en publiant le code, avec l'aide du Information Science Research Institute et de quelques débuggages de la part de Google. Ce dernier, grandement intéressé par les techniques OCR, s'occupe dorénavant de son développement et de ses améliorations.

Tesseract est un moteur de reconnaissance simple, dans le sens où il ne fournit pas d'interface utilisateur, n'effectue pas d'analyse de la mise en page et ne formate pas les résultats qu'il produit.
Une autre de ses limitations est qu'il reconnaît uniquement les caractères US-ASCII et donc ne fonctionne correctement qu'avec des documents rédigés en langue anglaise. Enfin, l'acquisition de documents en niveaux de gris ou en couleurs reste difficile.

Sa compilation et son exécution sont possibles aussi bien sous système GNU/Linux que système Microsoft.

La raison de la publication "tardive" de cet article est que l'intégralité du source de Tesseract-OCR n'était pas totalement libre dans ses dernières versions. Il est maintenant débarrassé de la bibliothèque non libre Aspirin/Migraine, implémentant un système de réseaux neuronaux qui permettait d'améliorer la précision du logiciel.

Un article de Linux.com fait le point sur Tesseract et conclut qu'il s'agit d'une très grande avancée pour le libre dans le domaine de la reconnaissance de caractère. Le fichier de test est reconnu à 97,74%.

La conclusion de l'article indique à quel point la résurrection de Tesseract est importante : Even if Tesseract 1.0.1 were to be the only release ever made from this project, it has changed the landscape of OCR for free software dramatically.

Aller plus loin

  • # Super !

    Posté par  . Évalué à 7.

    C'est super ça, je regardais justement l'autre jour ce qui existait et j'avais été découragé de voir que rien de vraiment performant permettais de faire de l'ocr librement . ClaraOCR me paraissant le meilleurs mais n'étant pas spécialement au point pour un texte "normal". J'espère que ce logiciel seras vraiment utilisé et amélioré.
  • # C'est pas vrai

    Posté par  . Évalué à 8.

    Une autre de ses limitations est qu'il reconnaît uniquement les caractères US-ASCII et donc ne fonctionne correctement qu'avec des documents rédigés en langue anglaise

    C'est pas vrai. On peut aicrire des messages en bon fransais, sans avoir besoin d'utiliser des caractaires accentuais...
  • # Gros titre à ...

    Posté par  . Évalué à 8.

    Je préfère l'information originale, cf. README:

    History:
    The engine was developed at Hewlett Packard Laboratories Bristol and at Hewlett Packard Co, Greeley Colorado between 1985 and 1994, with some more changes made in 1996 to port to Windows, and some C++izing in 1998. A lot of the code was written in C, and then some more was written in C++. Since then all the code has been converted to at least compile with a C++ compiler. Currently it builds under Linux with gcc2.95 and under Windows with VC++6. The C++ code makes heavy use of a list system using macros. This predates stl, was portable before stl, and is more efficent than stl lists, but has the big negative that if you do get a segmentation violation, it is hard to debug. Another "feature" of the C/C++ split is that the C++ data structures get converted to C data structures to call the low-level C code. This is ugly, and the C++izing of the C code is a step towards eliminating the conversion, but it has not happened yet.

    About the Engine:
    This code is a raw OCR engine. It has NO PAGE LAYOUT ANALYSIS, NO OUTPUT FORMATTING, and NO UI. It can only process an image of a single column and create text from it. It can detect fixed pitch vs proportional text. Having said that, in 1995, this engine was in the top 3 in terms of character accuracy, and it compiles and runs on both Linux and Windows. Another current limitation is that it only recognizes English and its character set is only US-ASCII. Training code IS included in the open source release however, and will be included in a future release.


    Mon expérience sur les programmes datant de 20 ans: l'expertise sur le sujet (de l'expérience et de la littérature) est plus importante que le code source. Un logiciel a un cycle de vie comme les humains. Passé un certain temps il faut repartir sur des bases nouvelles. Cela dit disposer du code source c'est mieux que rien.

    Gocr donne aussi de bons résultats. Son gros défaut provient du fait qu'il n'est pas capable d'apprendre une police, par exemple les ligatures des CM de TeX. D'après le README de Tesseract-OCR il y aurait un apprentissage.

    La route est longue avant d'avoir un moteur ocr complet. Mais avec les millions de Google on peut rêver ...
    • [^] # Re: Gros titre à ...

      Posté par  . Évalué à 3.

      Quand on numérise un document imprimé, on s'apperçoit que, par exemple, toutes les lettres A, sont quasi identiques au pixel près.

      Les logiciels de reconnaissance de sous-titres de DVD utilisent ce procédé : à chaque lettre inconnue trouvée, ils nous demandent de quoi il s'agit, jusqu'à ce que toutes les lettres soient connues.

      Alors, en attendant le graal, pourquoi ne pas faire simple et efficace, en utilisant cette technique pour la reconnaissance de document ?

      Et en ce qui concerne la véritable reconnaissance de caractère, connaissez-vous le logiciel utilisé par La Poste pour reconnaître nos pattes de mouche ?
      • [^] # Re: Gros titre à ...

        Posté par  . Évalué à 10.

        Pour les sous-titres, l'image de départ est numérique : les caractères sont forcément identiques car ce sont des pixels placés dans une matrice.
        Quand on utilise un document scanné, il y a deux filtres :
        — l'impression, qui est faite sur du papier pas forcément blanc, avec des systèmes d'impression qui ne réalisent pas toujours de la même façon un caractère (tâches, imperfections…), ou qui n'alignent pas toujours les lignes (mauvais entraînement des pages). C'est de plus en plus rare et les impressions sont assez précises maintenant ;
        — le scan, qui n'est pas toujours droit, qui ajoute un peu de bruit.

        Pour résumer :
        — numérique (sous-titres) → numérique (texte), avec une correspondance 1→1 ;
        contre :
        — numérique (document) → analogique (impression) → analogique (scan) → numérique (texte).
        • [^] # Re: Gros titre à ...

          Posté par  (site web personnel) . Évalué à 5.

          Ceci dit, même si c'est certainement plus difficile que sur du numérique pur, des logiciels d'OCR comme OmniPage utilisent ce genre de procédés "je ne reconnais pas le morceau encadré en rouge, merci de m'aider".
          Je suppose donc qu'il est intéressant de jouer en partie sur ce point...
      • [^] # Re: Gros titre à ...

        Posté par  (site web personnel) . Évalué à 6.

        Et en ce qui concerne la véritable reconnaissance de caractère, connaissez-vous le logiciel utilisé par La Poste pour reconnaître nos pattes de mouche ?

        http://www.ladservices.fr/technologie.htm

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.