Pytesser不准确

时间:2011-05-08 03:06:01

标签: python ocr

简单的问题。当我通过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工作。

2 个答案:

答案 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为特定变量创建输出)。