zoukankan      html  css  js  c++  java
  • 简单验证码识别

    对较简单的验证码进行识别并返回结果
    含:数字,英文

    """
        1、将验证码进行二值化处理,保存到本地
        2、放大验证码的尺寸,保存到本地
        3、识别验证码,返回结果
    """
    
    from PIL import Image
    from PIL import ImageFile
    import tesserocr
    
    
    class ProcessImg:
        def __init__(self):
            self.filename = 'yanzhengma.png'
            self.width = 200
            self.height = 100
            self.type = 'png'
            self.i = 'in.png'
            self.o = 'out.png'
    
        def get_grey_img(self, filename):
            """
            :param filename: 'yanzhengma.png'
            :return: 'result.png'
            """
            image = Image.open(filename)
            image = image.convert('L')
            threshold = 130
            table = []
            for i in range(256):
                if i < threshold:
                    table.append(0)
                else:
                    table.append(1)
    
            image = image.point(table, '1')
            # show:弹窗查看,调整阈值 threshold
            # image.show()
            image.save('in.png')
    
        def ResizeImage(self, filein, fileout, width, height, type):
            """
            :param filein: 输入图片
            :param fileout: 输出图片
            :param  输出图片宽度
            :param height: 输出图片高度
            :param type: 输出图片类型(png, gif, jpeg...)
            :return:
            """
            img = Image.open(filein)
            out = img.resize((width, height), Image.ANTIALIAS)
            out.save(fileout, type)
    
        def change_img_size(self, width, height, type, i, o):
            ImageFile.LOAD_TRUNCATED_IMAGES = True
    
            self.ResizeImage(i, o, width, height, type)
    
        def get_result(self):
            return tesserocr.file_to_text('out.png')
    
        def run(self):
            """
    
            :return: 识别结果 str
            """
            self.get_grey_img(self.filename)
            self.change_img_size(self.width, self.height, self.type, self.i, self.o)
            return self.get_result()
    
    
    if __name__ == '__main__':
        start = ProcessImg()
        result = start.run()
    
  • 相关阅读:
    python 求取代码运行时间
    Python中的继承、抽象基类和接口
    Python安装和环境配置,让你轻松入门学习Python!
    python入门python的基本语法
    没有对象?程序员的浪漫,对象攻略(1)
    python实现邮件循环自动发件
    docker查看全部容器命令
    python speech模块的使用方法
    开宗立派宣言
    多个 (li) 标签如何获取获取选中的里面的某个特定值
  • 原文地址:https://www.cnblogs.com/exlo/p/13853997.html
Copyright © 2011-2022 走看看