2015-04-03 100 views
0

我已经用示例文本对字母数字和数字进行了测试。我正在使用数字模式。Tesseract OCR未能识别全高数字

如何认识像下面的图片中的数字:

enter image description here

我想这是因为全高的。 我也尝试将它转换为.jpg使用一些在线工具(非代码)

我使用pytesseract 0.1.6,但我认为这是Tesseract问题。

这里是我的代码:

def classify(hash): 
    socket = urllib.urlopen(hash) 
    image = StringIO(socket.read()) 
    socket.close() 
    image = Image.open(image) 
    number = image_to_string(image, config='digits') 
    mapping[hash] = number 
    return number 

classify('any url') 
+1

直接包含的图片在你的问题,不只是一个链接。 – Almo 2015-04-03 23:27:11

+0

你是什么意思全高? – tobltobs 2015-04-17 09:21:16

+0

我的意思是文本需要全部高度的图片。假设您有1000x100的图片和高度为100的字母。 – user3002996 2015-04-18 10:24:32

回答

1

我认为你有两个问题在这里。

首先是文字很小。您可以将图像放大2倍,最好使用AA或三次插值试图使字母更清晰。

接下来,围绕数字的边缘没有足够的白色,以便tesseract知道它实际上是边缘。所以你需要在你已经有的东西周围添加一些空白的空白图片。

您可以使用photoshop或GIMP或ImageMagick或其他方法手动执行此操作来验证它实际上是否有帮助。但是如果你需要做一堆图像,那么你可能会想使用PIL和ImageOps来提供帮助。

How do I resize an image using PIL and maintain its aspect ratio?

如果您新的大小更大,而不是更小,PIL将增长图像而不是缩小了。将它的宽度和高度增加2倍或3倍,而不是20%,因为这会引起人为因素。

这里有一种方法来添加额外的白色边框: http://effbot.org/imagingbook/imageops.htm#tag-ImageOps.expand

这个问题可能会帮助你增加额外的空白也: In Python, Python Image Library 1.1.6, how can I expand the canvas without resizing?