python - pytesseract 不适用于一位数图像

标签 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
>>> 

最佳答案

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

来自 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/

相关文章:

python - argparse 中的可选 nargs 变量

python - numpy 中有没有一种方法可以验证一个数组是否包含在另一个数组中?

python - 在 python 中执行任意*真实*代码块(不是字符串化版本)

javascript - 通过网络摄像头检测图像中的文本

python - 来自谷歌云视觉 API OCR 的逐行数据

ocr - 用于机器打印文本的 ICR?

python - 复杂背景下的OCR时间戳提取

python - 从先前终止的连接到数据库提交 SQLite 中的现有日志文件

python - 如何使用OpenCV在视频上绘制尾线

ocr - 有推荐的可编程驾驶执照扫描仪吗?