pytesseract不使用一位数的图像

时间:2015-07-26 23:59:10

标签: python ocr

我有使用pytesseract的代码并且工作完美,只有在我尝试识别的图像为0到9时才能工作。如果图像只有一个数字,则不会给出任何结果。

这是我工作的图像样本 https://drive.google.com/folderview?id=0B68PDhV5SW8BdFdWYVRwODBVZk0&usp=sharing

这就是我使用

的代码
    import pytesseract
    varnum= pytesseract.image_to_string(Image.open('images/table/img.jpg'))
    varnum = float(varnum)
    print varnum    

感谢!!!!

使用此代码,我可以阅读所有数字

import pytesseract


start_time = time.clock()
y = pytesseract.image_to_string(Image.open('images/table/1.jpg'),config='-psm 10000')
x = pytesseract.image_to_string(Image.open('images/table/1.jpg'),config='-psm 10000')

print y
print x

y = pytesseract.image_to_string(Image.open('images/table/68.5.jpg'),config='-psm 10000')
x = pytesseract.image_to_string(Image.open('images/table/68.5.jpg'),config='-psm 10000')

print y
print x

print time.clock() - start_time, "seconds" 

结果

>>> 
1
1
68.5
68.5
0.485644155358 seconds
>>> 

1 个答案:

答案 0 :(得分:6)

您需要将页面分割模式设置为能够读取单个字符/数字。

tesseract-ocr manual(这是pytesseract内部使用的),您可以使用 -

设置页面分割模式
  

-psm N

     

将Tesseract设置为仅运行布局分析的子集并假设a   某种形式的形象。 N的选项是:

     

10 =将图像视为单个字符。

因此,您应将-psm选项设置为10.示例 -

varnum= pytesseract.image_to_string(Image.open('images/table/img.jpg'),config='-psm 10')