python+selenium+pytesseract识别图片验证码

头歌python实验:网络安全应用实践3-验证码识别 来说识别率较低,一些图片里有很对五颜六色扰乱识别的点,非常影响识别率。可运用数字图像处理的方法,对图片进行灰度处理,然后再进行去除噪点处理。的全屏截图,请同学们在自己电脑上定位此页面验证码的坐标,在实验环境用坐标从截图中切割出验证码,对此页面的验证码进行识别并输出。平台会对你编写的代码进行测试,分别对两张全屏页面截图进行识别,两张全屏截图的验证码不一样,坐标一样,当两个测试集通过即可通关。读取图像文件,如果图像是不相容的,会先转换成兼容的格式,然后再提取图片中的文本信息。,输出图像的文字识别结果即可。 阅读详情

一、selenium截取验证码

import json
from io import BytesIO

import time
from test.testBefore.testDriver import driver
from test.util.test_pytesseract import recognize
from PIL import Image
import allure
import unittest

 '''
 /处理验证码
 '''
 # 要截图的元素
 element = driver.find_element_by_xpath('//*[@id="imgVerifyCode"]')
 # 坐标
 x, y = element.location.values()
 # 宽高
 h, w = element.size.values()
 # 把截图以二进制形式的数据返回
 image_data = driver.get_screenshot_as_png()
 # 以新图片打开返回的数据
 screenshot = Image.open(BytesIO(image_data))
 # 对截图进行裁剪
 result = screenshot.crop((x, y, x + w, y + h))
 # 显示图片
 # result.show()
 # 保存验证码图片
 result.save('VerifyCode.png')
 # 调用recognize方法识别验证码
 code = recognize('VerifyCode.png')
 # 输入验证码
 driver.find_element_by_xpath('//*[@id="txtcode"]').send_keys(code)
 '''
 处理验证码/
 '''
  • 注意:driver是引用我自己写的文件,可以自己随便写一个。识别图片的代码单独放在util文件夹下面的,参考标题三的代码,需要时引用。以上代码定位元素都需要根据自己的项目定位元素修改。

二、安装识别环境pytesseract+Tesseract-OCR

  • 如果没有输出,又不确定你的pytesseract环境是否安装好,可以用一张没有干扰的图片识别看看能不能有输出结果,以下样例在我的环境中可以直接输出识别结果8fnp

验证识别环境是否正常

  • 直接使用pytesseract识别图片
  • 001.png

在这里插入图片描述

text = pytesseract.image_to_string('./001.png')
print(text)

三、处理验证码图片

直接截图的验证码图片存在噪点或者干扰线等,直接使用pytesseract识别可能会没有输出结果,如果环境正常,但没有输出结果,那多半是因为图片没有处理好,识别不出来,可以多尝试一些处理图片的方式,以下代码处理我截图这种类似的图片效果比较好。

图片处理识别

对图片处理的过程:

图片处理过程中可以多用im.show()看看每一步处理后的图片是不是符合预期,如果效果不好调一下参数。另外在学习过程中发现有童鞋说识别不出来把图片使用cv2.resize()这个方法放大就能识别,可以参考Python中图像的缩放 resize()函数的应用

  • 实际截取的图片

在这里插入图片描述

  • 处理后的图片

在这里插入图片描述

  • test_pytesseract.py
import pytesseract
from fnmatch import fnmatch
import cv2
import os


def clear_border(img, img_name):
    '''
    去除边框
    '''
    h, w = img.shape[:2]
    for y in range(0, w):
        for x in range(0, h):
            # if y ==0 or y == w -1 or y == w - 2:
            if y < 2 or y > w - 2:
                img[x, y] = 255
            # if x == 0 or x == h - 1 or x == h - 2:
            if x < 1 or x > h - 1:
                img[x, y] = 255

    return img


def interference_line(img, img_name):
    '''
    干扰线降噪
    '''

    h, w = img.shape[:2]
    # !!!opencv矩阵点是反的
    # img[1,2] 1:图片的高度,2:图片的宽度
    for r in range(0, 2):
        for y in range(1, w - 1):
            for x in range(1, h - 1):
                count = 0
                if img[x, y - 1] > 245:
                    count = count + 1
                if img[x, y + 1] > 245:
                    count = count + 1
                if img[x - 1, y] > 245:
                    count = count + 1
                if img[x + 1, y] > 245:
                    count = count + 1
                if count > 2:
                    img[x, y] = 255
    return img


def interference_point(img, img_name, x=0, y=0):
    """点降噪
    9邻域框,以当前点为中心的田字框,黑点个数
    :param x:
    :param y:
    :return:
    """
    # todo 判断图片的长宽度下限
    cur_pixel = img[x, y]  # 当前像素点的值
    height, width = img.shape[:2]

    for y in range(0, width - 1):
        for x in range(0, height - 1):
            if y == 0:  # 第一行
                if x == 0:  # 左上顶点,4邻域
                    # 中心点旁边3个点
                    sum = int(cur_pixel) \
                          + int(img[x, y + 1]) \
                          + int(img[x + 1, y]) \
                          + int(img[x + 1, y + 1])
                    if sum <= 2 * 245:
                        img[x, y] = 0
                elif x == height - 1:  # 右上顶点
                    sum = int(cur_pixel) \
                          + int(img[x, y + 1]) \
                          + int(img[x - 1, y]) \
                          + int(img[x - 1, y + 1])
                    if sum <= 2 * 245:
                        img[x, y] = 0
                else:  # 最上非顶点,6邻域
                    sum = int(img[x - 1, y]) \
                          + int(img[x - 1, y + 1]) \
                          + int(cur_pixel) \
                          + int(img[x, y + 1]) \
                          + int(img[x + 1, y]) \
                          + int(img[x + 1, y + 1])
                    if sum <= 3 * 245:
                        img[x, y] = 0
            elif y == width - 1:  # 最下面一行
                if x == 0:  # 左下顶点
                    # 中心点旁边3个点
                    sum = int(cur_pixel) \
                          + int(img[x + 1, y]) \
                          + int(img[x + 1, y - 1]) \
                          + int(img[x, y - 1])
                    if sum <= 2 * 245:
                        img[x, y] = 0
                elif x == height - 1:  # 右下顶点
                    sum = int(cur_pixel) \
                          + int(img[x, y - 1]) \
                          + int(img[x - 1, y]) \
                          + int(img[x - 1, y - 1])

                    if sum <= 2 * 245:
                        img[x, y] = 0
                else:  # 最下非顶点,6邻域
                    sum = int(cur_pixel) \
                          + int(img[x - 1, y]) \
                          + int(img[x + 1, y]) \
                          + int(img[x, y - 1]) \
                          + int(img[x - 1, y - 1]) \
                          + int(img[x + 1, y - 1])
                    if sum <= 3 * 245:
                        img[x, y] = 0
            else:  # y不在边界
                if x == 0:  # 左边非顶点
                    sum = int(img[x, y - 1]) \
                          + int(cur_pixel) \
                          + int(img[x, y + 1]) \
                          + int(img[x + 1, y - 1]) \
                          + int(img[x + 1, y]) \
                          + int(img[x + 1, y + 1])

                    if sum <= 3 * 245:
                        img[x, y] = 0
                elif x == height - 1:  # 右边非顶点
                    sum = int(img[x, y - 1]) \
                          + int(cur_pixel) \
                          + int(img[x, y + 1]) \
                          + int(img[x - 1, y - 1]) \
                          + int(img[x - 1, y]) \
                          + int(img[x - 1, y + 1])

                    if sum <= 3 * 245:
                        img[x, y] = 0
                else:  # 具备9领域条件的
                    sum = int(img[x - 1, y - 1]) \
                          + int(img[x - 1, y]) \
                          + int(img[x - 1, y + 1]) \
                          + int(img[x, y - 1]) \
                          + int(cur_pixel) \
                          + int(img[x, y + 1]) \
                          + int(img[x + 1, y - 1]) \
                          + int(img[x + 1, y]) \
                          + int(img[x + 1, y + 1])
                    if sum <= 4 * 245:
                        img[x, y] = 0

    return img


def _get_dynamic_binary_image(filedir, img_name):
    '''
    自适应阀值二值化
    '''
    filename = './' + img_name.split('.')[0] + '-binary.png'
    img_name = filedir + '/' + filename
    im = cv2.imread(img_name)
    im = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)

    th1 = cv2.adaptiveThreshold(im, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 21, 1)

    return th1


def recognize(image):

    filedir = './'  # 验证码路径

    for file in os.listdir(filedir):
        if fnmatch(file, image):
            img_name = file
            # 自适应阈值二值化
            im = _get_dynamic_binary_image(filedir, img_name)
            # # 去除边框
            im = clear_border(im, img_name)
            # 对图片进行干扰线降噪
            im = interference_line(im, img_name)
            # 对图片进行点降噪
            im = interference_point(im, img_name)
            filename = './' + img_name.split('.')[0] + '-interferencePoint.png'  # easy_code为保存路径
            cv2.imwrite(filename, im)  # 保存图片
            text = pytesseract.image_to_string(im, lang="eng",
                                               config='--psm 6 digits')  # config=digits只识别数字
    return text

    '''
    --psm 参数含义
    0:定向脚本监测(OSD)
    1: 使用OSD自动分页
    2 :自动分页,但是不使用OSD或OCR(Optical Character Recognition,光学字符识别)
    3 :全自动分页,但是没有使用OSD(默认)
    4 :假设可变大小的一个文本列。
    5 :假设垂直对齐文本的单个统一块。
    6 :假设一个统一的文本块。
    7 :将图像视为单个文本行。
    8 :将图像视为单个词。
    9 :将图像视为圆中的单个词。
    10 :将图像视为单个字符。
    '''

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


这份完整版的Python全套学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

Python资料、技术、课程、解答、咨询也可以直接点击下面名片,添加官方客服斯琪↓

验证码识别实战:使用Selenium和pytesseract 我们将从下载验证码图片开始,一直到最终完成验证码识别并模拟登录网站的过程。验证码的出现使得爬虫的工作变得更加复杂,有时候我们必须通过验证码的验证才能访问页面。我们可以使用 Python 的 requests 库发送 HTTP 请求,然后保存响应中的验证码图片到本地。在登录过程中,我们获取验证码图片的 URL,下载验证码图片并进行识别。下载验证码图片后,我们需要对图片进行预处理,以提高识别的准确性。接下来,我们使用 pytesseract 库对预处理后的验证码图片进行识别,获取验证码文本。 阅读详情

相关推荐

python+Selenium +pytesseract+PyMouse 自动化登录脚本

最近有时间学了学python 写了些自动化脚本来提升工作效率(zhuang bi) 不过作为一名功能测试,学习python还是有一些困难的,踩了一些坑,东拼西凑终于写好了一个能用来跑回归的脚本,还算蛮有成就感的~ 使用Python selenium + Katalon Recorder(Selenium IDE for FF55+)#火狐插件 来抓取元素来实现自动化; 由于代码不规范,有...

老年星际玩家 4222

自动化测试Python3+Selenium3+Unittest

本课程以Python语言为基础,从测试基础理论和职业规划讲起,结合完备的项目实战内容,内容详实详,讲师授课经验丰富,有着多年的自动化测试培训经验。Selenium发展至今历经多个版本,在自动化测试领域有着绝对的地位,本课程第二部分,详细介绍Selenium IDE/WebDriver的各个知识点。Unittest是Python3的一个标准库,也是一款简单、优秀、易学的测试框架,课程第三部分详细介绍unittest相关使用,测试用例的编写、断言、测试套件、测试报告、数据驱动DDT等。课程配有实际测试目标项目,详细讲解知识点的同时,结合项目实战,巩固所学知识,完成体系建设。

python中 selenium自动化windows安装Pillow、pytesseract实现识别图片验证码登录

操作系统:windows 10 安装模块:Pillowpytesseracttesseract-ocr 1、首先安装Pillow,可以选择安装windows版的安装包 下载地址:https://pypi.org/project/Pillow/#files 此处我选择安装Pillow-6.1.0.win-amd64-py2.7.exe 2、安装完成后再进行安装pyte...

Hu_wen的专栏 983

Python使用百度OCR接口进行验证码图像识别

使用来自百度的OCR识别接口,采取互联网的方式,而不是基于软件及其接口的方式。另外,它也是免费的,可直接调用,对简单验证码的直接识别率可达99%

Cameback_Tang的博客 3753

数字后端DRC Violation定位与自动化修复:Innovus与Calibre协同实战

设计规则检查(DRC)是芯片tapeout前确保版图可制造性的关键验证环节。在数字后端流程中,Calibre作为signoff级物理验证工具,会依据代工厂SVRF规则文件对GDS进行严格几何检查;而Innovus则提供快速迭代的in-design DRC反馈。两者协同成为工程师定位violation、保障流片成功的主流工作流。面对成千上万条DRC violation,高效的定位与分类思路、跨工具映射技巧,以及基于Tcl脚本的自动化修复方法,能大幅缩短物理验证周期。本文从DRC的分层定位出发,结合Innovu

weixin_29185167的博客 336

ROS 2 Slam Toolbox实战:从零跑通2D激光建图

SLAM(同步定位与地图构建)是移动机器人实现自主导航的基础技术,其核心在于通过传感器数据实时估计位姿并构建环境栅格地图。slam_toolbox作为ROS 2 Humble及后续LTS版本官方主推的2D SLAM后端,采用图优化+闭环检测架构,兼顾实时性、鲁棒性与工程可维护性。相比cartographer和hector_slam,它原生支持ROS 2、参数精简、诊断友好,特别适合硬件资源有限、缺乏IMU或深度相机的差速机器人平台。本文聚焦真实部署场景,覆盖RPLIDAR等常见2D激光雷达与TurtleBo

weixin_30596165的博客 358

Python selenium基础用法详解

Python selenium基础用法详解

醉蕤的博客 2万+

AI Agent核心架构解析:从Tool、Skill到MCP协议的智能体构建实战

在人工智能领域,大语言模型(LLM)赋予了AI自主规划与决策的能力,推动了智能体(Agent)技术的演进。其核心原理在于构建一个具备感知、规划、行动与反思能力的自主系统。这一架构的技术价值在于将AI从被动应答升级为主动执行复杂任务的工作伙伴,显著提升了自动化水平与问题解决效率。应用场景广泛覆盖了市场分析、自动化办公、智能客服与垂直领域集成等。本文聚焦于实现这一能力的关键组件:基础工具(Tool)、组合技能(Skill)与标准化协议(MCP)。其中,Skill通过封装多个Tool形成可复用的高级能力,而MCP

chuannaoxuan4674的博客 322

[Python自动化]selenium之验证码识别

文章主要介绍了selenium自动化环境下,验证码识别系列问题。

Deng's Blog 1万+

SAP-ML章<<<<第二节:物料账报错处理ABAP编程错误:RAISE_EXCEPTION>>>>

#SAP-ML章<<<<第一节:物料账报错处理ABAP编程错误:RAISE_EXCEPTION>>>> 1.物料账报错提示: ABAP编程错误:RAISE_EXCEPTION ABAP程序:SAPLFCML4H_RUN_PRICES应用组件CO-PC-ACT 2. 物料账报错背景: CKMLCP运行结算时 3. 解决方案: 通过DEBUG查看错误的地方 OKTZ:分析原因为:可能打包或者配置传输时弄错 ...

SAP.David.Gao的博客 1858

【GIS效率手册】告别C盘爆满:三步重置ArcMap默认地理数据库路径

本文针对ArcMap用户C盘空间常被占满的问题,提供了三步重置默认地理数据库路径的详细教程。通过修改地图文档属性,将数据存储位置从C盘迁移至其他驱动器,不仅能有效释放系统盘空间,还能提升数据管理效率与安全性,是GIS数据规范化管理的关键一步。

g2h3i4j5的博客 543

python+selenium模拟浏览器,在知网高级检索页面进行全文检索,获取页面数据并录入excel(非下载文献)

目录序言函数模块介绍创建模拟浏览器对象只需要执行一次的部分需要批量执行的重复操作部分获取网页数据录入excel主函数本地文件结构全部代码结果预览控制台文件 序言 场景是在知网高级检索界面中,选择报纸–>点击包含非学术文献–>改成全文模式–>点击检索页发表年度–>获取括号内的数字和对应的年份 需要三个库,都可以用pip install轻松下载,稍微麻烦点儿的是需要去下载个对应版本的chromedriver.exe驱动,放到python或者Anaconda的文件夹目录下,然后添加环境变

Ryo_Yuki 1796

第二节:Vben Admin 登录逻辑梳理和对接后端准备

第一节,我们已经配置了前端环境,运行起来了我们的Vben Admin的项目。本节内容,我们先熟悉下项目的目录和文件,然后开始准备对接后端程序路由在 src/router页面在 sr/views本节前端登录逻辑梳理完成了,后端只要在/api/login 接口编写返回逻辑,前后段就可以打通了,具体详情我们下一节介绍。

cuiwin的专栏 5084

python用selenium 验证码图片_Python+Selenium----处理登录图片验证码

1.说明在做自动化测试的时候,经常会遇到登录,其中比较麻烦的就是验证码的处理,现在比较常用的图形验证码,每次刷新,得到的验证码不一致,所以,一般来说,获取验证码图片有两种方式:(1)拿到验证码的图片链接:src=”http://cli.cncaq.com//login/to_getvericode/52”,但是这种方式有时候行不通。因为有时候会发现当前的验证码和通过提取出来的url链接打开的验证码...

weixin_39689506的博客 2112

C#上位机开发实战全流程:从需求到落地,避坑指南+完整代码

作为一名做了5年工业自动化上位机开发的程序员,我踩过的坑比写过的代码还多——从最初串口通信粘包导致数据错乱,到可视化图表卡顿卡死,再到现场异常崩溃无日志可查,每一次踩坑都是一次血泪教训。今天这篇文章,我会把C#上位机开发的全流程拆解开,从需求分析到通信模块、数据可视化,再到异常处理,每个环节都结合工业实际场景,分享真实项目中能用的方案、完整代码和避坑技巧。不管你是刚入门的新手,还是想优化现有项目的老司机,相信都能有所收获。很多新手做上位机开发,一上来就闷头写代码,最后发现做出来的东西不符合现场需求——比如客

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 996

【学习系列】SAP RAP 16:RAP应用部署集成至Fiori Launchpad 【On-Premise】

本文详细介绍了如何将开发完成的RAP应用部署到S4HANA 2023 On-Premise环境并集成到Fiori Launchpad的完整流程。主要内容包括:1)通过ADT工具创建Fiori项目并配置外部IDE(VSCode);2)使用npm命令部署应用到系统;3)通过事务代码创建语义对象、磁贴目录和目标映射;4)配置PFCG角色分配;5)补充了部署失败解决方案、翻译问题处理、自定义主题设置以及登录页面LOGO修改等内容。文章提供了step-by-step的操作指南,帮助开发者将预览模式的应用正式部署到生产

DeveloperMrMeng的博客 637

selenium来识别数字验证码

用python写一爬虫,需要模拟登陆,并且有数字验证码。通过selenium+pytesseract+PIL可以实现验证码识别并登陆。三大步: 用selenium截屏,此时截取的是整个页面的 用PIL库中的Image库,从刚才页面截屏中,通过crop()方法截取 出来验证码图片,然后进行灰度和二值化处理 用pytesseract库中的image_to_srting()方法,将图...

airangrong6572的博客 1068

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

python利用自动识别写模块_Python之selenium+pytesseract 实现识别验证码自动化登录脚本...

今天写自己的爆破靶场WP时候,遇到有验证码的网站除了使用pkav的工具我们同样可以通过py强大的第三方库来实现识别验证码+后台登录爆破,这里做个笔记~~~0x01关于seleniumselenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selen...

weixin_39647734的博客 439

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python识别验证码并自动登录_Python完全识别验证码自动登录实例详解

1、直接贴代码#!C:/Python27#coding=utf-8from selenium import webdriverfrom selenium.webdriver.common.keys import Keysfrom pytesser import *from PIL import Image,ImageEnhance,ImageFilterfrom selenium.common.e...

weixin_35457696的博客 2409

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Python+Selenium-20-图片验证码处理

前言 有些注册页面会含有验证码,本篇描述在selenium中对验证码的处理实例 需求 打开万维易源注册页面:https://www.showapi.com/auth/reg (这个是第三方api平台易源接口,后面验证码识别用的就是他的) 在注册页面中包含验证码的操作 需求分析 1)打开控制台,点击上方截图中的验证码图片,在network中会有一条请求信息(这里为获取验...

karry_孙二的博客 7008

python tesseract selenium自动识别验证码登陆

文章目录前言一、下载安装tesserocr二、1.2.总结 前言 前期写得爬虫已经逐渐稳定,但是每次都是手动输入验证码,时间久了觉得麻烦,就想着自动识别验证码登陆,于是就开启了各种百度之路,磕磕碰碰,总算成功实现自动登陆,特次复盘此次验证码识别的全过程,以便大家参考。 一、下载安装tesserocr tesserocr是Python的一个OCR识别库,但其实是对tesseract做的一层PythonAPI封装,所以它的核心是tesseract。所以需要先安装tesseract。 下载链接:https

devoen的博客 1133

python+selenium验证码处理

python+selenium 验证码处理 转载于:https://blog.youkuaiyun.com/weixin_38374974/article/details/80152899 https://blog.youkuaiyun.com/qianbinbin1122/article/details/53696202 1、针对公司内部的项目有两个方法, (1)设置一个万能验证码,只要每次填写这个验证码就可以验证通...

HAHAHAHJQ的博客 1118

Python selenium自动化识别验证码模拟登录操作(二)

上次总结 Python selenium自动化模拟登录操作(一) 没有处理验证码的情况,现在实现了。还是以百度登录页面为例。

3万+

数字验证码识别完成自动化登录

利用selenium进行自动输入数字验证码完成登录,利用pyautogui保存验证码图片,PIL进行图片的降噪处理,pytesseract完成图片数字识别,最后selenium完成信息的输入,完成自动登录。

基博的博客 2950

python批量识别二维码图片_python+selenium 识别二维码

python+selenium 识别二维码,运行环境是win 10 64位+python 3.5.2+selenium3.3.1。该方法可以简单识别验证码。1、搭建环境:识别验证码图片,需要安装以下三个小部件:一、安装Pillowcmd命令行cd python安装目录下的Scripts用命令pip install Pillow二、pytesseract方法如同安装Pillow ,pip in...

weixin_39908106的博客 1489
上一篇: 女友让我夜深十二点催她睡觉,我有Python我就不干
下一篇: 怎么抠图最简单?教你一行Python代码去除照片背景
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2835原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值