2011-05-08 1 views
4

Question simple. Quand je cours this image par pytesser, je reçois $+s. Comment puis-je résoudre ce problème?Pytesser inexact

EDIT

Alors ... mon code génère des images similaires à l'image liée ci-dessus, juste avec des chiffres différents, et est censé résoudre le problème mathématique simple, ce qui est évidemment impossible si tout ce que je peux obtenir hors de l'image est $+s

Voici le code que je suis actuellement en utilisant:

from pytesser import * 

time.sleep(2) 
i = 0 
operator = "+" 
while i < 100: 
    time.sleep(.1); 
    img = ImageGrab.grab((349, 197, 349 + 452, 197 + 180)) 
    equation = image_to_string(img) 

Alors je vais aller pour analyser equation ... que bientôt s Je travaille avec pytesser.

+0

Vous voulez expliquer pourquoi cela a été rejeté? – Entity

+0

@TheAdamGaskins: Oui je peux, cette question a besoin de beaucoup plus d'informations, par exemple quel est votre code pertinent, aussi il serait bien si vous pouviez poster ce que vous avez essayé de faire jusqu'à présent pour le réparer, donc les gens ne sont pas "doning – Trufa

+1

Désolé je ne peux pas éditer le précédent pour une raison quelconque, je disais, de sorte que ceux qui répondent à votre question n'ont pas à faire tout le travail lourd et tout le travail pour vous, c'est censé être collaboration, si vous ajoutez plus d'informations et en faire une question complète, je vais supprimer mon downvote – Trufa

Répondre

2

Essayez ma petite fonction. Je cours tesseract du repo svn, ainsi mes résultats pourraient être plus précis.

Je suis sous Linux, donc sur Windows, j'imagine que vous devrez remplacer tesseract par tesseract.exe pour le faire fonctionner.

import tempfile, subprocess 

def ocr(image): 
    tempFile = tempfile.NamedTemporaryFile(delete = False) 

    process = subprocess.Popen(['tesseract', image, tempFile.name], stdout = subprocess.PIPE, stdin = subprocess.PIPE, stderr = subprocess.STDOUT) 
    process.communicate() 

    handle = open(tempFile.name + '.txt', 'r').read() 

    return handle 

Et un exemple de session Python:

>>> import tempfile, subprocess 
>>> def ocr(image): 
... tempFile = tempfile.NamedTemporaryFile(delete = False) 
... process = subprocess.Popen(['tesseract', image, tempFile.name], stdout = subprocess.PIPE, stdin = subprocess.PIPE, stderr = subprocess.STDOUT) 
... process.communicate() 
... handle = open(tempFile.name + '.txt', 'r').read() 
... return handle 
... 
>>> print ocr('326_fail.jpg') 
0+1 
+0

Cela ne semble pas se compiler avec Python 2.4 (Ce que j'utilise) ... – Entity

+0

Voici l'erreur: http://pastebin.com/Mdjv27ea – Entity

+0

Vous utilisez une version très ancienne de Python. Je fais ça sur 2.7 et 3.0! – Blender

1

si vous êtes sous Linux, utilisez gocr est plus précis. vous pouvez l'utiliser par

os.system("/usr/bin/gocr %s") % (sample_image) 

et utiliser readlines de stdout pour la manipulation de résultat de sortie à tout ce que vous voulez (i.e. créer une sortie de gocr pour la variable spécifique).

Questions connexes