注册
登录
提问时间:2016/9/23 18:48:31
版本:python3.5
packages:pytesseract,PIL
已经安装tesseract
在进行验证码识别时,使用包自带的测试图片可以识别出图片中的文字
但是。。。。。
对其他验证码进行识别时,没有程序正常运行没有报错,但也没有输出结果。(问题说明放不了很多图片,我在回复里面放出来吧)
请问为什么会这样呢,应该如何解决?小白初学爬虫,在网上找了很久也不知道怎么解决,希望各位大大不吝赐教。
1楼(未知网友)

额,使用包自带的测试图片可以识别出图片中的文字,代码如下:
运行结果是这样子的:
而我在使用其他图片进行识别时,程序没有报错但是也没有任何内容输出,要识别的图片是这个:
代码是这样子的:
运行结果是这样子的:
。。。
请问为什么会这样子呢,想了好久也想不明白?
2楼(站大爷用户)

先吐槽一下,问题问得真烂,想得到好答案,必须先提出好问题


那么试着回答一下,tesseract 是OCR 技术,其实也就是通过某些机器学习算法,实现了一种对图片进行分类的技术,大致就是先对算法输入训练数据集,人为的告诉电脑,这张图片是1,那张是2。
然后当你做预测时,输入一张你的待检测图片,算法会自动找到训练集中跟你待检测图片最相近的一张或者几张图片,然后发现那几张图片是数字几,那么就将待检测图片分类进相应的类别中。
tesseract就是一项已经训练完毕的机器学习算法,方便的是可以直接用,不方便的地方是一旦你的待检测图片跟训练集数据差异比较大,那么识别效果就很烂。

你需要做什么?
可能需要将图片 :
1.去噪点
2.切分字符
3. 二值化
4.去除干扰线
5.根据颜色识别不同字符

要想准确率高,还是得自己制作训练集,然后训练自己的算法,再调整参数,重新训练,换更好的算法,再训练,增扩训练集,再训练,最后就会得到满意的验证码识别工具了。

参考资料:
常见验证码的弱点与验证码识别
初探验证码识别

题外话:
写爬虫的目的毕竟是抓取数据,数据到手就行了。搞一个验证码识别,实在是太耗费精力。基本上还是挂代理IP或者爬虫集群能解决的问题,不会轮到验证码识别。
立即注册站大爷用户,免费试用全部产品
立即注册站大爷用户,免费试用全部产品