首页 > 其他分享 >ddddocr1.4.8失效的解决方法

ddddocr1.4.8失效的解决方法

时间:2023-10-08 15:55:39浏览次数:32  
标签:ddddocr1.4 Image ddddocr pillow 64 解决 失效 image size

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,Image,ddddocr,pillow,64,解决,失效,image,size
From: https://www.cnblogs.com/wuxianfeng023/p/17749291.html

相关文章

  • Hadoop问题解决(3)
    在启动hadoop过程中,出现如下错误:192.168.10.100:Invalidmaximumheapsize:-Xmx0m192.168.10.100:CouldnotcreatetheJavavirtualmachine.192.168.10.100:jobtracker已死,但pid文件仍存此时查看jobtracker的日志,1[root@ccloud100manager]#vim/var/log/hado......
  • hadoop问题解决(4)
    默认配置是将datanode,namenode,jobtracker,tasktracker,secondarynamenode的pid存放在/tmp目录下,随着linux的定期清理,这些pid就不见了,当然就无法停止了,怎么解决呢?在/tmp目录创建或者修改hadoop-hadoop用户名-datanode.pid 里面写入对应的pid, 可通过jps查看. namen......
  • 奇迹mu在架设过程中出现的问题如何解决
    通常我们在架设奇迹的时候会遇到各种各样的问题,很多用户都不知道该如何解决,今天我们就来详细的说明一下一些常见的问题以及解决办法。1.进入到选线画面没选线之前断线,无选线,选线断线,输入密码后断线,进入游戏后断线,游戏版本不对等。我们找到数据库Dataserver.exe作为游戏的数据服务,通......
  • 解决Windows下pip安装bertopic报错:Failed building wheel for hdbscan
    在安装bertopic的过程中,遇到了Failedbuildingwheelforhdbscan,我先去网站:https://www.lfd.uci.edu/~gohlke/pythonlibs/#hdbscan下载了hdbscan‑0.8.28‑cp310‑cp310‑win_amd64.whl,并且用pip进行了本地安装,依然报错。然后仔细阅读报错信息,发现是build报错,我在Linux系统下并......
  • synchronized解决并发问题实践
    场景一: 场景描述:会议下面可以同时上传多个会议资料,资料是有顺序的,也就是有序号order,上传后可以上下移动资料顺序,移动资料顺序是靠改变order来实现的,这就需要保证每个资料的顺序不能一样,上传一个资料调一次上传接口,同时上传10个资料会同时调10次上传接口。上传接口逻辑是先查当......
  • 彻底解决 WordPress cURL error 28 错误
    cURL连接超时。这种情况最普遍,这里的超时并不是完全不可连接,而是因为网络状况或其它原因数据传输缓慢,超过连接的时间限制导致传输中断引起的错误。不论是何种原因导致连接超时,都可以通过增加超时限制来解决此问题。但URL完全不可访问此方法是解决不了的。首先将WordPress......
  • 转:五个步骤解决IDEA开发卡顿
    五个步骤解决IDEA开发卡顿增加编译内存,默认是700 说明:关键的三个参数的说明1、-Xms是最小启动内存参数,2、-Xmx是最大运行内存参数,3、-XX:ReservedCodeCacheSize保留代码占用的内存容量参数。8G配置如果电脑运行内存为8G建议修改参数配置为:-server-Xms512m-Xmx1024m-XX:......
  • Linux:远程Ubuntu服务器误修改sudoers 导致无法sudo的解决办法
    问题复现本来想用腾讯云测试一下用户权限管理,给test用户设置面密码登录,修改/etc/sudoers如下testALL=(ALL:ALL)NOPASSWD:ALL手抖忘了写NOPASSWD后面的冒号,导致关闭后sudo直接报错(base)ubuntu@VM-16-11-ubuntu:~$sudovim/etc/sudoers>>>/etc/sudoers:syntaxe......
  • Maven 引用CDH 5.4 的zookeeper时报错:Could not find artifact javax.jms:jms:jar:1.1
    错误:Couldnotfindartifactjavax.jms:jms:jar:1.1incloudera由于默认5.4.0的包引用了zookeeper3.3.1版本,进而引用了log4j的某个版本,导致的报错,改为如下即可: pom:使用cloudera的源:<repositories><repository><id>cloudera</id><u......
  • Windows平台不同机器字长(x86/x64)程序/库互操作解决方法
    1.问题背景某系统集成软件研发项目中,有设备厂家仅提供了C#可调用的x64动态库,而另有一厂家仅提供x86动态库,均是C++编译版本。x86动态库直接导出函数失败,环境是VS2019,dotnetframework4.7.2。2.解决思路网上查阅大量资料也就几篇博文后,给出的解决方案是:主程序改为x64编译,所......