python填坑之路:tesserocr配置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ygdxt/article/details/83793746

    最近在学爬虫,在模拟登录网站的时候常常需要输入验证码,最常见的就是OCR(Optical Character Recognition,光学字符识别) ,于是乎了解到tesserocr这个库,但是安装的过程可谓坎坷。

    大致的过程可参考博客:崔庆才的个人博客,但是最好注意以下几点

  1. 将tesseract(注意不是tesserocr)的安装路径加入环境变量。
  2. 将tesseract安装目录下的tessdata文件夹复制到你python的安装路径中去。如下

    3. 如果pip3 install tesserocr pillow失败,考虑使用下载whl文件安装,可参考我之前的一篇博文whl文件版本选择。

whl文件下载地址:https://github.com/simonflueckiger/tesserocr-windows_build/releases

下面给出一个实例,我在爬取学校教务系统数据用到的,这个系统我后面有空会详细展开,下面仅给出用于ocr部分的代码:

import requests
import os
import tesserocr
from PIL import Image
import re
from requests.exceptions import RequestException
headers ={
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}

def download_image(url):
    print('当前正在下载验证码图片',url)
    try:
        response = requests.get(url,headers=headers)
        if response.status_code == 200:
            save_image(response.content)
        return None
    except RequestException:
        print('下载验证码图片出错',url)
        return None

def save_image(content):
    file_path = 'code.jpg'
    if os.path.exists(file_path):
        os.remove(file_path)
    with open(file_path,"wb") as f:
        f.write(content)
        f.close()

def get_ocr():
    download_image("http://csujwc.its.csu.edu.cn/verifycode.servlet")
    image = Image.open("code.jpg")
    image = image.convert('L')
    threshold = 127
    table =[]
    for i in range(256):
        if i<threshold:
            table.append(0)
        else:
            table.append(1)
    image = image.point(table,'1')
    result = tesserocr.image_to_text(image)
    result = re.sub('\s','',result)
    result = result.lower()
    if len(result)>4:
        result = result[0:4]
    print("result:"+result)
    return result

if __name__ =="__main__":
    get_ocr()

猜你喜欢

转载自blog.csdn.net/ygdxt/article/details/83793746