pytesseract库进行图片文字识别

Song2202 次浏览0个评论2018年07月03日

在做爬虫的时候经常遇到图片验证码。这是一个很蛋疼的东西,我每次都得自己去手动输入抓取的图片验证码。有没有办法可以通过OCR来进行处理图片中的文字呢?

嘛,不过今天这个pytesseract库只是一个基础的文字识别库。

首先当然是需要安装pytesseract库还有图像处理的PILLOW库了,走起——

pip install pytesseract
pip install PILLOW

然后要安装一个Tesseract-OCR软件。这个软件是由Google维护的开源的OCR软件。Windows下载地址:百度网盘(链接: https://pan.baidu.com/s/1ocQNcy3yEKirrPXM1Hgh_Q 密码: ncqc)。Mac Os电脑使用brew安装即可:

brew install tesseract
# 查看版本
tesseract -v

代码很简单:

# -*-encoding:utf-8-*-
import pytesseract
from PIL import Image

def main():
    image = Image.open("1.jpg")
    #image.show() #打开图片1.jpg
    text = pytesseract.image_to_string(image,lang='chi_sim') #使用简体中文解析图片
    #print(text)
    with open("output.txt", "w") as f: #将识别出来的文字存到本地
        print(text)
        f.write(str(text))

if __name__ == '__main__':
    main()

效果如下

这个代码对简单的文字识别是没有问题,但是对稍微有一点干扰的图片就无能为力了,所以需要去噪点和干扰线。这个问题还在看,改天写。

验证码识别

所谓降噪就是把不需要的信息通通去除,比如背景,干扰线,干扰像素等等,只剩下需要识别的文字,让图片变成2进制点阵最好。具体参考Python验证码识别:利用pytesser识别简单图形验证码

import pytesseract
from PIL import Image

# 导入Image包,打开图片
im = Image.open('images/captcha.png')
# 把彩色图像转化为灰度图像。
imgry = im.convert('L')
# 二值化处理
threshold = 180
table = []
for i in range(256):
    if i < threshold:
        table.append(0)
    else:
        table.append(1)
out = imgry.point(table, '1')
out.show()
# pytesseract实现识别
print(pytesseract.image_to_string(out))

提交评论

请登录后评论

用户评论

    当前暂无评价,快来发表您的观点吧...

更多相关好文

    当前暂无更多相关好文推荐...