Comment donner la meilleure chance de succès à un logiciel OCR?
Question
J'utilise Tesseract OCR (via pytesser ) et PIL (image Python Library) pour le test automatisé d'une application.
Je vérifie que le texte affiché est correct en faisant une capture d'écran et d'obtenir le texte grâce à Tesseract.
J'ai eu quelques problèmes au début et il semble fonctionner mieux depuis que je l'ai augmenté la taille de la capture d'écran grâce à l'interpolation bicubique de PIL.
Unfortunatelly, j'ai encore quelques erreurs comme la confusion entre '0' et 'O'. Je peux imaginer que je vais avoir d'autres problèmes similaires à l'avenir.
Je voudrais savoir s'il y a des techniques pour préparer une image afin d'aider l'OCR. Toute idée est la bienvenue.
Merci d'avance
La solution
Plug and disclaimer Shameless: de mon entreprise paquets Tesseract pour une utilisation dans .NET
Tesseract est un moteur OCR OK. Il peut manquer beaucoup et se confondre facilement par des non-texte. La meilleure chose que vous pouvez faire pour elle est de vous assurer qu'il obtient du texte. La meilleure chose est de donner quelque chose sanely binarisé (adaptatif ou seuil dynamique pour y arriver) ou en niveaux de gris et le laisser essayer de faire binarisation.
Autres conseils
- Train Tesseract à reconnaître votre police
- l'image supplémentaire propre et avec assez d'espace libre autour des caractères
- Résultat:)
Voici quelques exemples du monde réel.
- La première image est l'image originale (numéros croped wattmètre)
- Deuxième image est légèrement nettoyé image dans GIMP, environ 50% de précision de l'OCR Tesseract
- troisième image est l'image complètement nettoyée - 100% OCR reconnu sans aucune formation
Même dans les meilleures conditions variantes d'OCR se faufiler sur vous. Votre meilleure option sera de concevoir vos tests pour être au courant.
Pour distinguer entre 0 et O, une solution simple est de choisir une police qui établit une distinction entre les deux (par exemple: 0 a un tiret ou point dans son milieu). Serait-ce acceptable dans votre application?
Une autre solution consiste à appliquer une étape basée sur un dictionnaire après l'analyse de caractère par caractère du texte - l'alimentation du texte reconnu dans une certaine forme de différencier les caractères difficiles du correcteur orthographique ou validateur.
Par exemple, un symbole tour suivi d'autres numéros est plus susceptible d'être un zéro, alors que le même symbole suivi par des lettres est plus susceptible d'être un o capital. Il est un exemple trivial, mais il montre comment le contexte est nécessaire pour rendre un système OCR plus fiable.