当前位置: 首页 > web >正文

Python 验证码识别(使用pytesseract库)

文章目录

    • 摘要
    • 1、安装Tesseract-OCR
    • 2、在python中使用
      • 安装依赖
    • 3、本地图片识别
    • 4、结合playwright动态识别网站验证码

摘要

  python中使用pytesseract库进行ocr识别,需要安装Tesseract-OCR,通过指定pytesseract.tesseract_cmd路径,可以将esseract-OCR集成到pytho程序中,避免客户端电脑的依赖。

1、安装Tesseract-OCR

Tesseract是一个高度精确的开源OCR(光学字符识别)系统,广泛应用于文本识别项目中。

  • 下载地址:
    https://digi.bib.uni-mannheim.de/tesseract/
    选择最新的稳定版下载
  • 安装程序:下载后安装程序
  • 中文包下载:
    地址:https://gitcode.com/open-source-toolkit/90e2f
    下载了最新版本的chi-sim.traineddata文件,复制到Tesseract的tessdata目录下
    通常,路径类似于C:\Program Files\tesseract\tessdata(Windows)
    或 /usr/share/tesseract-ocr/4.00/tessdata(Linux)。

2、在python中使用

  • 安装依赖

pip install pytesseract

3、本地图片识别

import pytesseract
from PIL import Image# 获取文件的绝对路径
def get_abspath(filename):try:current_dir = os.getcwd()filename = os.path.normpath(os.path.join(current_dir, filename))# print(f"get_abspath文件路径:{filename}")return filenameexcept Exception as e:print(f"获取文件绝对路径时出现错误: {e}")return ""# 手动指定路径(Windows常见) Tesseract 系统路径
driver_path = r"Tesseract-OCR\\tesseract.exe"
pytesseract.pytesseract.tesseract_cmd = get_abspath(driver_path)#使用示例
if __name__ == "__main__":# 1 识别本地图片 # 英文识别current_dir = os.getcwd()filename = os.path.normpath(os.path.join(current_dir, f"code.jpg"))file = Image.open(filename)text = pytesseract.image_to_string(file, lang="eng")print(text)#中文识别,需要下载语言包filename = os.path.normpath(os.path.join(current_dir, f"sushi.png"))file = Image.open(filename)text = pytesseract.image_to_string(file, lang='chi_sim') print(f"识别结果:{text}")

识别结果示例:
在这里插入图片描述

4、结合playwright动态识别网站验证码

import os
import pytesseract
from PIL import Image
from playwright.sync_api import Playwright
import tools.pwHander as pwHander
from PIL import Image# 获取文件的绝对路径
def get_abspath(filename):try:current_dir = os.getcwd()filename = os.path.normpath(os.path.join(current_dir, filename))# print(f"get_abspath文件路径:{filename}")return filenameexcept Exception as e:print(f"获取文件绝对路径时出现错误: {e}")return ""# 手动指定路径(Windows常见) Tesseract 系统路径
driver_path = r"Tesseract-OCR\\tesseract.exe"
pytesseract.pytesseract.tesseract_cmd = get_abspath(driver_path)# 验证码图片识别
def get_captcha(page: Playwright, element_selector="img#captcha", file_name="code.jpg"):try:current_dir = os.getcwd()filename = os.path.normpath(os.path.join(current_dir, f"{file_name}"))# 通过class选择器获取img元素code_img = page.locator(element_selector)if not code_img:raise ValueError("验证码元素未找到!")# 刷新验证码# code_img.click()# 下载验证码图片code_img.screenshot(path=filename)file = Image.open(filename)text = pytesseract.image_to_string(file, lang="eng")print("验证码识别结果:", text)return text.strip()except Exception as e:print(f"获取验证码 失败:{str(e)}")return ""
#使用示例
if __name__ == "__main__":# 2 动态识别网站验证码with sync_playwright() as p:browser = p.chromium.launch(headless=False, slow_mo=1000)context = browser.new_context()page = context.new_page()page.goto("测试网址")# 验证码图片下载imgText = get_captcha(page, "img#jcaptcha")print(f"验证码:{imgTest}")
http://www.xdnf.cn/news/10449.html

相关文章:

  • JVM——JVM运行时数据区的内部机制是怎样的?
  • unix/linux source 命令,在当前的 Shell 会话中读取并执行指定文件中的命令
  • 【AI学习】检索增强生成(Retrieval Augmented Generation,RAG)
  • Vue拖拽组件:vue-draggable-plus
  • 神经网络与Transformer详解
  • Ansible 剧本精粹 - 编写你的第一个 Playbook
  • Spring Boot 4.0实战:构建高并发电商系统
  • 通过内核寄存器排除HardFault
  • uni-app学习笔记十七-css和scss的使用
  • 振动力学:无阻尼单自由度系统
  • 【数据结构】顺序表和链表详解(上)
  • 图文详解Java并发面试题
  • 基于Canvas实现抽奖转盘
  • 打打基础 | 从翻转链表到寄存器、汇编与内存
  • 智慧新基建数字孪生,绘就桥梁运维新画卷
  • 【STM32F407 PWM配置和应用指南 】
  • [yolov11改进系列]基于yolov11引入上下文锚点注意力CAA的python源码+训练源码
  • Spring Boot中的事件与JMS消息集成
  • Windows搭建Swift语言编译环境?如何构建ObjC语言编译环境?Swift如何引入ObjC框架?Interface Builder的历史?
  • 【论文复现】水下单光子激光雷达设计 Sequential Multimodal Underwater Single
  • PySide6 GUI 学习笔记——常用类及控件使用方法(地址类QUrl)
  • Vert.x学习笔记-EventLoop与Context的关系
  • 图像处理篇---face_recognition库实现人脸检测
  • Linux系统之gettext详解
  • Excel to JSON 插件 2.4.0 版本更新
  • 【java面试】redis篇
  • 【Linux系统】第八节—进程概念(上)—冯诺依曼体系结构+操作系统+进程及进程状态+僵尸进程—详解!
  • 【请关注】ELK集群部署真实案例分享
  • JS中的函数防抖和节流:提升性能的关键技术
  • 设计模式——模版方法设计模式(行为型)