Pytesser不准确。

4
简单的问题。当我通过pytesser运行这个图片(链接已失效)时,我得到了$+s。我该如何解决?
编辑
所以...我的代码生成类似于上面链接的图片,只是数字不同,并且应该解决简单的数学问题,但如果我从图片中获取的只有$+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)

接下来我将开始解析equation...只要我让pytesser工作起来。


可以解释一下为什么这个被投票否决了吗? - Entity
@TheAdamGaskins:是的,我可以。这个问题需要更多的信息,例如你的相关代码是什么,另外如果你能发布一下你已经尝试过的解决方法,那就更好了,这样人们就不会“无所适从”了。 - Trufa
1
抱歉,由于某些原因无法编辑之前的内容。我的意思是,为了让回答你问题的人不必全部自己完成所有繁重的工作,这应该是协作的过程。如果你添加更多信息并使其成为一个完整的问题,我会取消我的负评。 - Trufa
没有更多的背景信息,很难准确回答这个问题,比如你使用的运行图像通过 pytesser 的精确代码等。 - Juan Gomez
2个回答

2

试试我的小函数。我正在运行来自svn仓库的tesseract,因此我的结果可能更准确。

我在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

你正在使用一个非常老的Python版本。我可以在2.7和3.0上做到这一点! - Blender

1

如果你在使用Linux系统,建议使用gocr,它更加准确。你可以通过以下方式使用:

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

使用stdout的readlines来操作输出结果,以便将其转换为您想要的任何内容(例如,为特定变量创建gocr的输出)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接