中文点选识别

2024-02-11 09:12
文章标签 中文 识别 点选

本文主要是介绍中文点选识别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

中文点选识别

测试网站:https://www.geetest.com/adaptive-captcha-demo

1. 开始验证

# 1.打开首页
driver.get('https://www.geetest.com/adaptive-captcha-demo')# 2.点击【文字点选验证】
tag = WebDriverWait(driver, 30, 0.5).until(lambda dv: dv.find_element(By.XPATH,'//*[@id="gt-showZh-mobile"]/div/section/div/div[2]/div[1]/div[2]/div[3]/div[4]'
))
tag.click()# 3.点击开始验证
tag = WebDriverWait(driver, 30, 0.5).until(lambda dv: dv.find_element(By.CLASS_NAME,'geetest_btn_click'
))
tag.click()time.sleep(5)

请添加图片描述

2. 获取图片

# 要识别的目标图片
parent = driver.find_element(By.CLASS_NAME, 'geetest_ques_back')
tag_list = parent.find_elements(By.TAG_NAME, "img")

3. 目标文字识别

target_word_list = []
for tag in tag_list:ocr = ddddocr.DdddOcr(show_ad=False)word = ocr.classification(tag.screenshot_as_png)target_word_list.append(word)print("要识别的文字:", target_word_list)

4. 背景坐标识别

超级鹰:https://www.chaojiying.com/

import base64
import requestsres = requests.post(url='http://upload.chaojiying.net/Upload/Processing.php',data={'user': "自己的用户名",'pass': "自己的密码",'codetype': "9501",'file_base64': base64.b64encode(content)},headers={'Connection': 'Keep-Alive','User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',}
)res_dict = res.json()
print(res_dict)

结果:

请添加图片描述

将结果封装成字典,方便后续找到相应的字并点击

bg_word_dict = {}
for item in res_dict["pic_str"].split("|"):word, x, y = item.split(",")bg_word_dict[word] = (x, y)
print(bg_word_dict)

请添加图片描述

5. 坐标点击

根据坐标,在验证码上进行点击。

# 8.点击
from selenium.webdriver import ActionChainsfor word in target_word_list:time.sleep(0.5)group = bg_word_dict.get(word)if not group:continuex, y = groupx = int(x) - int(bg_tag.size['width'] / 2)y = int(y) - int(bg_tag.size['height'] / 2)  # 超级鹰获取到的坐标原点为图片左上角,而我们需要的坐标原点为图片中心,所以需要进行转换。ActionChains(driver).move_to_element_with_offset(bg_tag, xoffset=x, yoffset=y).click().perform()time.sleep(1000)driver.close()

结果:

请添加图片描述

6. 完整代码

import base64
import timeimport ddddocr
import requests
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWaitdriver = webdriver.Edge()
# 1.打开首页
driver.get('https://www.geetest.com/adaptive-captcha-demo')# 2.点击【文字点选验证】
tag = WebDriverWait(driver, 30, 0.5).until(lambda dv: dv.find_element(By.XPATH,'//*[@id="gt-showZh-mobile"]/div/section/div/div[2]/div[1]/div[2]/div[3]/div[4]'
))
tag.click()# 3.点击开始验证
tag = WebDriverWait(driver, 30, 0.5).until(lambda dv: dv.find_element(By.CLASS_NAME,'geetest_btn_click'
))
tag.click()time.sleep(3)# 要识别的目标图片
parent = driver.find_element(By.CLASS_NAME, 'geetest_ques_back')
tag_list = parent.find_elements(By.TAG_NAME, "img")# 识别图片
target_word_list = []
for tag in tag_list:ocr = ddddocr.DdddOcr(show_ad=False)word = ocr.classification(tag.screenshot_as_png)target_word_list.append(word)print("要识别的文字:", target_word_list)# 6.背景图片
bg_tag = driver.find_element(By.CLASS_NAME,'geetest_bg'
)
content = bg_tag.screenshot_as_png# 7.识别背景中的所有文字并获取坐标
ocr = ddddocr.DdddOcr(show_ad=False, det=True)
poses = ocr.detection(content)  res = requests.post(url='http://upload.chaojiying.net/Upload/Processing.php',data={'user': "自己的用户名",'pass': "自己的密码",'codetype': "9501",'file_base64': base64.b64encode(content)},headers={'Connection': 'Keep-Alive','User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',}
)res_dict = res.json()
print(res_dict)# 封装成字典
bg_word_dict = {}
for item in res_dict["pic_str"].split("|"):word, x, y = item.split(""",")bg_word_dict[word] = (x, y)
print(bg_word_dict)# 8.点击
for word in target_word_list:time.sleep(0.5)group = bg_word_dict.get(word)if not group:continuex, y = groupx = int(x) - int(bg_tag.size['width'] / 2)y = int(y) - int(bg_tag.size['height'] / 2)  # 超级鹰获取到的坐标原点为图片左上角,而我们需要的坐标原点为图片中心,所以需要进行转换。ActionChains(driver).move_to_element_with_offset(bg_tag, xoffset=x, yoffset=y).click().perform()time.sleep(5)
driver.close()

这篇关于中文点选识别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/699414

相关文章

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

Java下载文件中文文件名乱码的解决方案(文件名包含很多%)

《Java下载文件中文文件名乱码的解决方案(文件名包含很多%)》Java下载文件时,文件名中文乱码问题通常是由于编码不正确导致的,使用`URLEncoder.encode(filepath,UTF-8... 目录Java下载文件中文文件名乱码问题一般情况下,大家都是这样为了解决这个问题最终解决总结Java下

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

vscode中文乱码问题,注释,终端,调试乱码一劳永逸版

忘记咋回事突然出现了乱码问题,很多方法都试了,注释乱码解决了,终端又乱码,调试窗口也乱码,最后经过本人不懈努力,终于全部解决了,现在分享给大家我的方法。 乱码的原因是各个地方用的编码格式不统一,所以把他们设成统一的utf8. 1.电脑的编码格式 开始-设置-时间和语言-语言和区域 管理语言设置-更改系统区域设置-勾选Bata版:使用utf8-确定-然后按指示重启 2.vscode