96 votes

Comment choisir entre Tesseract et OpenCV ?

J'ai récemment découvert Tesseract y OpenCV . Il semble que Tesseract soit un moteur d'OCR à part entière et qu'OpenCV puisse être utilisé comme cadre pour créer une application/service d'OCR.

J'ai essayé d'utiliser Tesseract sur certaines de mes images et sa précision semble correcte. Plus tard, je suis tombé sur un tutoriel sur l'utilisation d'OpenCV pour faire de l'OCR avec Python et j'ai été impressionné. En quelques minutes, j'ai fini d'entraîner le système et sa précision était bonne. Mais bien sûr, cette approche signifie que je dois entraîner mon système de manière intensive en utilisant un grand ensemble d'entraînement.

Mes questions spécifiques sont les suivantes :

  • Comment choisir entre Tesseract et l'utilisation d'OpenCV pour créer une application OCR personnalisée ?
  • Des ensembles de données de formation sont disponibles pour Tesseract dans différentes langues. OpenCV a-t-il quelque chose de similaire pour que je n'aie pas à partir de zéro pour réaliser l'OCR ?
  • Laquelle est la meilleure pour une application commerciale ?

Des suggestions ?

8 votes

Les réponses ci-dessous sont vraiment excellentes, mais en tant qu'utilisateur d'OCR, je peux vous dire que la qualité de reconnaissance de Tesseract est inférieure aux attentes d'un utilisateur d'application commerciale. Tesseract est excellent, mais l'OCR est difficile - des choses comme la formation en ligne, ou des améliorations à la volée sont hmmm... encore à l'état de recherche. Google, le grand sponsor de TS ces derniers temps, a décidé de construire son propre moteur - OCROpus. Et bien qu'il ait promis de l'ouvrir, le moteur de reconnaissance de base n'est pas encore disponible - ils n'ont publié qu'un cadre - c'est une API pour tesseract.

3 votes

@vasile : C'est très instructif. Je ne connaissais pas OCROpus. Je vous remercie. Avez-vous des suggestions d'alternatives si mon objectif final est d'écrire une carte de visite OCR (ou disons, une carte qui lit les reçus des stations-service comme celle que j'ai mise en lien : upload.wikimedia.org/wikipedia/fr/3/34/ ) ? Je pose la question parce que je suis curieux de savoir ce que les nombreuses applications mobiles utilisent pour y parvenir. Cela ne me dérange pas de faire l'OCR du côté du serveur. J'ai été tenté d'utiliser OpenCV après avoir vu cette belle démo : youtube.com/watch?v=OkcOfS1lTxs

6 votes

Il existe un certain nombre de moteurs OCR commerciaux, il suffit de consulter Google. OCR accuracy tests et vous trouverez des graphiques. Quant aux applications mobiles, la plupart d'entre elles utilisent Tesseract. Mais si vous prenez la peine de télécharger certaines d'entre elles, vous verrez que les résultats sont un peu différents des promesses. Ils font généralement une vidéo de démonstration dans un environnement soigneusement contrôlé et la postent sur youtube, mais dans la nature, si vous scannez une page, une recette, une carte ou autre, vous obtiendrez de drôles de résultats.

81voto

Blender Points 114729
  • Tesseract est un moteur OCR. Il est utilisé, travaillé et financé par Google spécifiquement pour lire du texte à partir d'images, effectuer une segmentation de base des documents et opérer sur des entrées d'images spécifiques (un seul mot, une ligne, un paragraphe, une page, des dictionnaires limités, etc.)

  • OpenCV, quant à lui, est une bibliothèque de vision par ordinateur qui comprend des fonctions permettant d'extraire des caractéristiques et de classer des données. Vous pouvez créer un simple segmenteur de lettres et un classificateur qui effectue une OCR de base, mais ce n'est pas un très bon moteur d'OCR (j'en ai déjà créé un en Python à partir de zéro). Il est vraiment imprécis pour les données d'entrée qui s'écartent de vos données d'entraînement).

Si vous voulez vous faire une idée de la difficulté de l'OCR, essayez OpenCV. Tesseract est pour réel OCR.

0 votes

+1 Merci. Je me demande dans quelle mesure Tesseract est personnalisable. Par exemple, dois-je d'abord utiliser OpenCV (ou quelque chose de similaire) pour supprimer l'inclinaison de l'image ? En d'autres termes, si la précision de Tesseract n'est pas très bonne pour certains de mes cas, que puis-je faire pour improviser ?

3 votes

Cela dépend de vos images d'entrée. Tesseract fonctionne mieux lorsque les lettres sont nettes, sur une ligne horizontale, espacées, non connectées et parfaitement noires et blanches. J'ai bricolé dans le milieu de la numérisation et de la conservation des livres pendant environ un an et j'ai travaillé sur un logiciel pendant mon temps libre pour faciliter le processus. Les meilleur logiciels existants (commerciaux ou non) pour le post-traitement cualquier Les images avec du texte sont Scan Tailor . Il dispose de quelques options CLI, mais si vous prenez le temps de voir comment il fonctionne, il est tout à fait étonnant.

2 votes

J'ai travaillé un peu sur le code source de Scan Tailor et il n'utilise pas OpenCV en interne, mais de nombreux algorithmes qui ont été créés peuvent être réécrits avec les fonctions d'OpenCV très facilement. Si vos images ne sont ni déformées ni dégradées, il vous suffit d'implémenter une binarisation adaptative et un simple désépaississement avant d'introduire votre image dans Tesseract.

66voto

Abid Rahman K Points 18045

Je suis l'auteur du tutoriel sur la reconnaissance des chiffres que vous avez mentionné, et Je dirais que cela ne peut en aucun cas remplacer le tesseract.

Tesseract est un très bon moteur d'OCR, peut-être le meilleur moteur d'OCR OpenSource.

Le tutoriel que vous avez mentionné est juste un essai, pour comprendre le fonctionnement le plus simple de l'OCR.

Donc, si vous cherchez une application OCR, je vous recommande d'utiliser OpenCV pour le prétraitement de l'image et d'appliquer ensuite le moteur Tesseract.

2 votes

+1 Merci. Tout d'abord, merci pour le tutoriel :) C'était une lecture très intéressante. Connaissez-vous des références/tutoriels sur la façon d'utiliser OpenCV avec Tesseract ? Je ne parle pas de l'interface mais du type de transformations d'images ou de prétraitement à effectuer pour améliorer la précision de Tesseract ?

2 votes

Je voudrais juste dire que, bien que Tesseract soit un bon moteur OCR par rapport à d'autres, il est encore assez imprécis, j'ai eu un taux de réussite d'environ 40 % dans la reconnaissance du texte correct. J'espère qu'il s'améliorera dans quelques années.

4 votes

@GangstaGraham Il suffit d'entraîner tesseract pour obtenir de meilleurs résultats en quelques heures ou quelques jours, pas en quelques années. opensource.newmediaist.com/tesseract-training.html

10voto

user2957542 Points 91

Les deux peuvent être complémentaires. Si vous lisez l'article sur OpenCV : https://github.com/tesseract-ocr/docs/blob/master/tesseracticdar2007.pdf

Il souligne que "puisque HP a développé indépendamment une technologie d'analyse de la mise en page qui a été utilisée dans des produits (et qui n'a donc pas été mise à disposition en tant que source ouverte), Tesseract n'a jamais eu besoin de sa propre analyse de la mise en page. Tesseract suppose donc que son entrée est une image binaire avec des régions de texte polygonales optionnelles définies".

Ce type de tâche peut être réalisé par OpenCV et l'image résultante transmise à Tesseract. Vous pouvez trouver un exemple de ce type de code dans le repo Git : https://github.com/Itseez/opencv_contrib/tree/master/modules/text/samples Les échantillons utilisent les API de Tesseract pour convertir les images en texte.

4voto

Aniruddha Varma Points 1097

OpenCV est une bibliothèque pour CV Le logiciel de gestion des images, utilisé pour l'analyse et le traitement des images en général. Tesseract est une bibliothèque pour OCR qui est un sous-ensemble spécialisé de CV dédié à l'extraction de texte à partir d'images.

De OpenCV.org

..... utilisé pour détecter et reconnaître les visages, identifier les objets, classer les actions humaines dans les vidéos, suivre les mouvements de caméra, suivre les objets en mouvement, extraire des modèles 3D d'objets, produire des nuages de points 3D à partir de caméras stéréo, assembler des images pour produire une image haute résolution d'une scène entière, trouver des images similaires dans une base de données d'images, supprimer les yeux rouges des images prises au flash, suivre les mouvements des yeux, reconnaître les paysages et établir des marqueurs pour les superposer à la réalité augmentée, etc.

De Tesseract Github :

..... peut être utilisé directement ou (pour les programmeurs) à l'aide d'une API pour extraire du texte dactylographié, manuscrit ou imprimé à partir d'images. Il prend en charge une grande variété de langues.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X