• 简单验证码识别


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

    """
        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()
    
  • 相关阅读:
    Revolving Digits[EXKMP]
    字符加密Cipher(bzoj 1031)
    Hotaru's problem
    1089 最长回文子串 V2(Manacher算法)
    3172: [Tjoi2013]单词
    3689: 异或之
    3942: [Usaco2015 Feb]Censoring [KMP]
    2795: [Poi2012]A Horrible Poem
    GT考试(bzoj 1009)
    NOIP2016提高组解题报告
  • 原文地址:https://www.cnblogs.com/exlo/p/13853997.html
Copyright © 2020-2023  润新知