简单的问题。当我通过pytesser运行this图像时,我得到$+s
。我该如何解决这个问题?
修改
所以...我的代码生成的图像类似于上面链接的图像,只是用不同的数字,并且应该解决简单的数学问题,如果我能从图片中得到所有这些问题显然是不可能的{{1 }}
这是我目前正在使用的代码:
$+s
然后我将继续解析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)
......一旦我让pytesser工作。
答案 0 :(得分:2)
尝试我的小功能。我正在tesseract
回购中运行svn
,因此我的结果可能更准确。
我在Linux上,所以在Windows上,我想你必须用tesseract
替换tesseract.exe
才能使其正常工作。
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
示例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
答案 1 :(得分:1)
如果您使用的是Linux,请使用 gocr 更准确。你可以通过
使用它os.system("/usr/bin/gocr %s") % (sample_image)
并使用stdout中的readlines将输出结果操作到您想要的所有内容(即从gocr为特定变量创建输出)。