基于 Python ddddocr 模块实现指定元素区域的文本识别
前言
①python第三方库ddddocr(带带弟弟ocr)通用验证码识别。
②环境要求:python版本<=3.9。
调用方法
import ddddocr # 导入 ddddocr ocr = ddddocr.DdddOcr(use_gpu=False, device_id=0) # 实例化 file_name = 'test.png' with open(file_name, 'rb') as f: # 打开图片 img_bytes = f.read() # 读取图片 content = ocr.classification(img_bytes=img_bytes) # 识别 print("识别到的内容 {}".format(content))
参数说明
Ddddocr 类接受两个实例参数
参数名 | 默认值 | 说明 |
---|---|---|
use_gpu | False | Bool 是否使用gpu进行推理,如果该值为False则device_id不生效 |
device_id | 0 | int cuda设备号,目前仅支持单张显卡 |
classification() 方法需要一个参数
参数名 | 默认值 | 说明 |
---|---|---|
img | 0 | bytes 图片的bytes格式 |
下载安装
pip install ddddocr
运行如下:
实例1
图片示例:
代码如下:
import ddddocr ocr = ddddocr.DdddOcr() file_name = 'test.png' with open(file_name, 'rb') as f: img_bytes = f.read() content = ocr.classification(img_bytes) print("识别到的内容 {}".format(content))
运行结果:
实例2
环境:win10 + python3.7 + selenium + ddddocr + PIL 实现自动化测试过程中识别验证码
from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait import time import ddddocr from PIL import Image import os def getToken(): url = "http://localhost/#/login" from selenium.webdriver.firefox.options import Options firefox_options = Options() firefox_options.headless = False driver = webdriver.Firefox(options=firefox_options) # 设置等待时间 waite = WebDriverWait(driver, 5) driver.get(url) driver.implicitly_wait(6) # 1.先保存当前页面为一个png图 driver.get_screenshot_as_file("page.png") inputname = driver.find_elements_by_class_name("el-input__inner")[0] inputname.click() inputname.send_keys("10000") inputpassword = driver.find_elements_by_class_name("el-input__inner")[1] inputpassword.send_keys("123456") # choice = driver.find_element_by_class_name("person") choice = driver.find_element_by_xpath('/html/body/div/div/div/div[1]/div/div[2]/div/div[2]/div[2]') choice.click() # 2.然后将页面截图中的验证码截取出来 image = Image.open("page.png") captchaurl = driver.find_element_by_class_name("login-code-img") left = captchaurl.location.get("x") top = captchaurl.location.get("y") right = left + captchaurl.size.get("width") bottom = top + captchaurl.size.get("height") cropImg = image.crop((left, top, right, bottom)) cropImg.save("code.png") # 3.读取验证码图 with open('code.png','rb') as f: content_captcha = f.read() # print(content_captcha) # 4.此处是重点,解析验证码,得到4位数字,只需要2行代码 ocr = ddddocr.DdddOcr() code = ocr.classification(content_captcha) print(code) inputcaptcha = driver.find_elements_by_class_name("el-input__inner")[2] inputcaptcha.send_keys(code) button = driver.find_element_by_tag_name("button") button.click() # logs = driver.get_log('performance') cookie = driver.get_cookies() print(cookie) if cookie != []: token = cookie[0]['value'] else: token = "" driver.quit() return token token = "" result = False while result == False: token = getToken() if token != "": result = True print(token)
未完成:
https://www.cnblogs.com/mrlayfolk/p/12617077.html
去期待陌生,去拥抱惊喜。
分类:
Python常用库/包/模块
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!