1. 问题描述

from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('http://124.223.30.31:xxxx/forum.php')
driver.find_element('id','ls_username').send_keys('admin')
driver.find_element('id','ls_password').send_keys('123456')
driver.find_element('css selector','.pn.vm').click()
sleep(2)
ele_pic =driver.find_element('css selector','[id^=vseccode_cS]>img') # webelement
ele_pic_bytes = ele_pic.screenshot_as_png # bytes
import ddddocr
ocr = ddddocr.DdddOcr(show_ad=False) # 得到一个ocr对象
code_text = ocr.classification(ele_pic_bytes) # 从bytes数据中提取 文本 driver.find_element('css selector','[id^=seccodeverify_cS]').send_keys(code_text)

url敏感,匿了,意思大概知道就是处理下面的这个图片中的验证码

以前运行的好好的,但现在报错了

2. 报错分析

Traceback信息如下

Traceback (most recent call last):
File "D:\Demos\demo1.py", line 15, in <module>
code_text = ocr.classification(ele_pic_bytes) # 从bytes数据中提取 文本
File "D:\Demos\.venv\lib\site-packages\ddddocr\__init__.py", line 1614, in classification
image = image.resize((int(image.size[0] * (64 / image.size[1])), 64), Image.ANTIALIAS).convert('L')
AttributeError: module 'PIL.Image' has no attribute 'ANTIALIAS'

追溯下源码

ddddocr的__init__.py

image = image.resize((int(image.size[0] * (64 / image.size[1])), 64), Image.ANTIALIAS).convert('L')

根据提示PIL.Image没有ANTIALIAS这个属性了

至此问题应该比较清晰了,应该是版本升级导致的

最终定位是ddddocr没有同步,pillow单方面升级导致的,这种太常见了

3. 解决方法

3.2 回退pillow库版本

找了下以前OK的环境,pillow库是9.5

现在默认安装ddddocr依赖的pillow是最新版到了10.0.1

解决就很简单

  • 卸载pillow10.0.1 pip uninstall pillow
  • 重装pillow9.5 pip install pillow==9.5.0

3.3 修改ddddocr源码

pillow这种大库的升级,肯定会有详尽的说明和兼容处理

好的是它升级的并不频繁

https://pypi.org/project/Pillow/#history

在github上找到10.0.0的CHANGELOG

https://github.com/python-pillow/Pillow/blob/main/docs/releasenotes/10.0.0.rst

有这么一段

Removed Use instead
Image.LINEAR Image.BILINEAR or Image.Resampling.BILINEAR
Image.CUBIC Image.BICUBIC or Image.Resampling.BICUBIC
Image.ANTIALIAS Image.LANCZOS or Image.Resampling.LANCZOS

发现Image.LANCZOS可以替代,复制一下代码行,替换掉即可

            #image = image.resize((int(image.size[0] * (64 / image.size[1])), 64), Image.ANTIALIAS).convert('L')
image = image.resize((int(image.size[0] * (64 / image.size[1])), 64), Image.LANCZOS).convert('L')

在这个代码中有很多ANTIALIAS,都应该替换下

4. ddddocr 犯错了?

这种简单的问题,ddddocr怎么会没处理呢?

https://pypi.org/project/ddddocr/#history

注意时间:pillow的10.0.0是7月1日发布的,ddddocr是8月30日更新了一次,按理说会同步,事实却并没有?

找到https://github.com/sml2h3/ddddocr

点进去能看到

呃呃呃,作者语法错了,尴尬

Pillow==9.5.0

这个项目维护的不多了,readme.md还是1.4.3的,将就用用吧

ddddocr1.4.8失效的解决方法的更多相关文章

  1. margin-top失效的解决方法

    异常处理汇总-前端系列 http://www.cnblogs.com/dunitian/p/4523015.html 我的是属于这种情况 按照网上的说法,我就是这个现象了 两个层box1和box2,b ...

  2. Easyui中使用jquery或js动态添加元素时出现的样式失效的解决方法

    Easyui中使用jquery或js动态添加元素时出现的样式失效的解决方法 2014-03-27 11:44:46|  分类: Easy UI|举报|字号 订阅     可以使用$.parser.pa ...

  3. IE7的overflow失效的解决方法

    IE7的position:relative bug今天遇到了一个相对定位(position:relaitve)引起的IE7中overflow:hidden失效的bug,特此记录!解决方法很简单,给父层 ...

  4. ode.js 版本控制 nvm 和 n 使用 及 nvm 重启终端失效的解决方法

    今天的话题包括2个部分 node.js 下使用 nvm 或者 n 来进行版本控制 nvm 安装node.js 版本后,重启终端 node , npm 环境变量失效 第一部分 用什么来管理 node.j ...

  5. jquery中checkbox全选失效的解决方法

    这篇文章主要介绍了jquery中checkbox全选失效的解决方法,需要的朋友可以参考下     如果你使用jQuery 1.6 ,代码if ( $(elem).attr(“checked”) ),将 ...

  6. IE8下部分方法失效的解决方法

    1.IE8下String的Trim()方法失效的解决方法 用jquery的trim()方法,$.trim(str)就可以了: 例:_id.trim() !='' 改为  $.trim(_id) != ...

  7. IIS上发布站点后URL重写失效的解决方法

    在发布网站时URL重写有可能会失效,如果失效的话就需要您设置一下IIS:1.Windows XP系统或Windows 2003系统等使用以下方法:>打开IIS,主目录-〉配置-〉映射-〉在窗体左 ...

  8. CentOS忘记密码修改方案以及centos卡在开机登录界面,命令失效的解决方法

    CentOS忘记密码修改方案 应用场景 linux管理员忘记root密码,需要进行找回操作. 注意事项:本文基于CentOS7.2环境进行操作的,由于CentOS的版本之间是有差异的,继续之前请先确定 ...

  9. UEditor设置内容setContent()失效的解决方法

    ueditor常见用法: https://blog.csdn.net/qq_31879707/article/details/54894735#UE.Editor:setContent() UEdit ...

  10. IE8下String的Trim()方法失效的解决方法

    String的Trim()方法失效,在ie8下是有这样的情况的,解决方法也很简单使用$.trim(str)即可,需要的朋友可以了解下 用jquery的trim()方法,$.trim(str)就可以了.

随机推荐

  1. 前端仿京东、天猫底部购物工具栏toolsBar、购物车栏、底部悬浮栏

    快速实现 前端仿京东.天猫底部购物工具栏toolsBar.购物车栏.底部悬浮栏, 详情请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=1255 ...

  2. Sentieon | 每周文献-Genetic Disease-第二期

    遗传病系列文章-1 标题(英文):Answer ALS, a large-scale resource for sporadic and familial ALS combining clinical ...

  3. 计算机COM口数据测试

    计算机COM口数据测试一.基本使用流程 程序需要以管理员身份运行,COM口回路测试需短接2,3pin,测试时候使用控制台,配置测试相关路径,并在测试完成后 1.测试配置路径D:\bigdata\INI ...

  4. Linux 命令:ps

    ps -ef ps -e f # 树形显示

  5. 理解TCP3次握手

    以AB通话为例 A的视角 A给B打电话,进入SYN_SENT B接起电话,A确认后,进入ESTABLISHED B的视角 看到A打过来的电话,接起电话,进入SYN_RCVD 确认对方后,进入ESTAB ...

  6. 何为DDD

    从这一刻开始,请大家忘记自己是一名技术人员,用业务的角度来思考问题. 1.什么是DDD DDD(Domain-driven design,领域驱动设计),是一个很好的应用于微服务架构的方法论 DDD要 ...

  7. Robot Framework 自动化测试随笔(一)

    一.安装Robot Framework步骤(安装目录避免中文和特殊字符,建议以管理员身份进行全部安装过程): 1.查看ride最新支持的python版本,据此下载对应python版本: https:/ ...

  8. Django链接数据库出现的错误以及解决方法

    问题一:django.db.utils.OperationalError: (1045, "Access denied for user 'leo'@'localhost' (using p ...

  9. 犯得一些zz错误

    本文用于警戒自己,不要再犯以前的傻逼错误 noip没建子文件夹导致爆零 知道关同步流之后还用endl,导致超时 使用'\n'代替endl 3.多组测试数据使用for循环占用了 i 变量名,后面在for ...

  10. cdn 引入的资源需要通过 externals 排除打包哦~

    cdn 指的是通过相互连接的网络系统,使用最靠近用户的服务器将音乐.图片等资源以高效率和低成本的方式将内容传递给用户. 在 webpack 中,我们可能会将引入的第三方资源会编译成单独的文件,作为静态 ...