【百度点选图像识别】百度点选单字识别90%+ 附:部分代码

概述

这是一篇硬广告软文了,首先我们来康康这个验证码:

特点: 字体多,干扰线,小字符干扰,旋转,不少文字和背景颜色接近


生成样本

我生成的:

真实切割:

就这样生成了30w左右:

大概使用了8种字体,部分字体通过手动修改加粗样式,字符集无脑采用5.7k汉字。

然后无脑使用(https://github.com/kerlomz/captcha_trainer)训练

得到模型,部署

效果

通过对接官网实测75左右识别率,单字识别率在90+。

验证码校验源码,基于(https://github.com/kerlomz/captcha_spider)

from utils import Project, ServiceType
from constants import ProxyType


class BaiduKuaiZhao(Project):

    def __init__(self):
        super().__init__()
        self.service_type = ServiceType.OD
        self.delay = 2
        # self.need_identify = False
        self.feedback_url = "http://help.baidu.com/toususubmit"
        self.before_url = "http://help.baidu.com/newadd?prod_id=1&category=1"
        self.captcha_url = "http://help.baidu.com/getcodeimage?{}"
        self.captcha_text_url = "http://help.baidu.com/getcodetext"

    def before_process(self) -> dict:
        r = self.session.get(self.before_url, timeout=30)
        r.encoding = "utf8"
        html = Project.Parser(r.text)
        submit_token = html.input("submit_token")
        if not submit_token:
            print('error')
        return {"submit_token": submit_token}

    def captcha_process(self) -> bytes:
        # self.session.headers.update({"Referer": "http://help.baidu.com/webmaster/"})
        r = self.session.get(self.captcha_url)
        need_text = self.session.get(self.captcha_text_url.format(self.random), timeout=30)
        if not need_text.text.strip():
            print('标题获取失败')
            return b''
        need_text = need_text.json()
        self.before_params.update({"param_key": "".join(need_text)})
        return r.content

    def feedback_process(self, captcha_text: dict) -> bool:
        items = captcha_text.get('items')
        coord0 = items[0]['coord']
        coord1 = items[1]['coord']
        coord2 = items[2]['coord']
        payload = {
            "submit_token": self.before_params['submit_token'],
            "os_info": "Windows NT 4.0",
            "browser_info": "chrome 84",
            "pid": "1",
            "category_id": "1",
            "title": "\u5feb\u7167\u5220\u9664\u4e0e\u66f4\u65b0",
            "content": "\u5feb\u7167\u5220\u9664\u4e0e\u66f4\u65b0",
            "webmaster_type": "\u641c\u7d22\u5185\u5bb9\u548c\u5b9e\u9645\u4e0d\u4e00\u81f4",
            "links[]": "http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed19fa950d100b8738440197634b86914323c3933fcf331d5c0425f4bc5324130ed8c27f6c03b21a1cacab672c601e76e0dd9bd3149ca6912a2d8b2030731c8255578e59f9c45154c537e75efedf68f0c9f12592dec5a5dc4324c144737e97838d4d0164dd1ef0034693&p=cb759a46d7c159fc57efcd605753c1&newp=836cc54ad5c243e019bac7710f528d231610db2151d7d4106b82c825d7331b001c3bbfb423281704d7c27a630bad4e5fe0fb31703d0923a3dda5c91d9fb4c57479c76663&s=8f14e45fceea167a&user=baidu&fm=sc&query=%C6%E6%BC%A3%D1%E9%D6%A4%C2%EB&qid=813a5910002b39e5&p1=1",
            "verify_code[0][x]": coord0[0],
            "verify_code[0][y]": coord0[1],
            "verify_code[1][x]": coord1[0],
            "verify_code[1][y]": coord1[1],
            "verify_code[2][x]": coord2[0],
            "verify_code[2][y]": coord2[1]
        }
        r = self.session.post(self.feedback_url, data=payload, timeout=30)
        result = r.json().get('errmsg')
        if "反馈成功" in result or "请不要针对同一问题重复进行举报" in result:
            return True
        else:
            return False

服务端截图:

CPU识别总耗时在40-50ms左右,目标检测10ms左右。

作者:kerlomz  QQ:27009583

顺便提一句,要Pytorch版识别的可以去 lengyue.video 学习,如果有需要学习的小伙伴,可以联系黄瓜帅领取优惠卷!黄瓜帅:QQ908383407

此文章不得转载!!!!

此文章不得转载!!!!

此文章不得转载!!!!

猜你喜欢

转载自blog.csdn.net/qq_42857376/article/details/107915796