python 识别验证码图片

描述:利用cv2和百度的aipocr 识别有噪点的验证码图,百度aip需要自己注册,把密钥替换为自己的即可
百度智能云
在这里插入图片描述

  • 测试用的图片
    在这里插入图片描述
# encoding: utf-8
from PIL import Image
# 调用百度OCR接口识别验证码
from aip import AipOcr
class preserveImg:
    def __init__(self,imageurl):
       self.imageurl = imageurl
    def getImg(self):
        image = Image.open(self.imageurl)
        grayIMG = image.convert('L')
        pixdata = grayIMG.load()
        w,h = grayIMG.size
        threshold = 106 #需要自己设定
        for y in range(h):
            for x in range(w):
                if pixdata[x,y]<threshold:
                    pixdata[x,y]=255
                else:
                    pixdata[x,y]=0
        # grayIMG.show()
        return grayIMG
    def delete_spot(self):
        images = self.getImg()  
        return self.transImg(images)
    def isValidImg(self,img):
        bValid = True
        try:
            img.verify()
        except:
            bValid = False
        return bValid
    def transImg(self,img):
        if self.isValidImg(img):
            try:
                str = self.imageurl.rsplit(".", 1)
                output_img_path = str[0] + "_gray.png"
                # im = Image.open(self.imageurl)
                img.save(output_img_path)
                return output_img_path
            except:
                return False
        else:
            return False
class ImageToTxt:
    def __init__(self,filePath):
        self.filePath = filePath
        self.APP_ID = '********************'
        self.API_KEY = '********************'
        self.SECRET_KEY = '********************'
        self.client = AipOcr(self.APP_ID, self.API_KEY, self.SECRET_KEY)
    def get_file_content(self,filePath):
        with open(filePath,'rb') as fp:
            return fp.read()
    def seePic(self):
    	#附加参数,参考百度api说明文档
        options = {
            'detect_direction': 'true',
            # 'language_type': 'CHN_ENG',//中英文混合
            'language_type': 'ENG',
        }
        # basicGeneral 普通模式;webImage网络图片;basicAccurate 高精度 
        result = self.client.basicAccurate(self.get_file_content(self.filePath), options)
        return result['words_result'][0]['words']	#获取识别结果字典中的文字
if __name__ =='__main__':
    timg = preserveImg('./index.png').delete_spot()
    if timg:
        ttre =ImageToTxt(timg).seePic()
        print(ttre,'res-->')



  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Webgiserin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值