我有使用 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
>>>
最佳答案
您需要设置页面分割模式才能读取单个字符/数字。
来自 tesseract-ocr manual (这是pytesseract内部使用的),您可以使用 - 设置页面分割模式
-psm N
Set Tesseract to only run a subset of layout analysis and assume a certain form of image. The options for N are:
10 = Treat the image as a single character.
所以你应该设置
-psm
选项到 10. 示例 -varnum= pytesseract.image_to_string(Image.open('images/table/img.jpg'),config='-psm 10')
关于python - pytesseract 不适用于一位数图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31643216/