服务器win10server,python安装paddleocr的踩坑日记

最近由于需要图像文字识别的简单业务,研究了一下,一是用大厂的文字识别api,如百度腾讯等,但这种免费版只有有限的调用次数,如百度只有每月只有1000次调用额度,个人也够用,但由于业务量大,所以再看看其他本地识别的模型,现在做的比较完善的就是paddleocr,于是开始了一段折磨之旅

paddleocr官方github:GitHub - PaddlePaddle/PaddleOCR: Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)icon-default.png?t=N7T8https://github.com/PaddlePaddle/PaddleOCR我的安装在云服务器win10 server2022版,在此之前已经安装了python3.12.3,所以只需要安装paddleocr即可

在此之前,先确认cpu架构是否是64位,执行下面python指令

python -c "import platform;print(platform.architecture()[0]);print(platform.machine())"

输出为如下,第一行输出的是”64bit”,第二行输出的是”x86_64”、”x64”或”AMD64”即可:

1. 我们打开上面的网址,找到文档教程-》快速开始,点进来之后,下拉有个安装步骤,看起来挺简单的,两步就行

先说明安装paddleocr之前必须先安装paddlepaddle(飞浆)框架,它是百度研发的深度学习框架,我们只需要成功安装它,之后只会用到paddlerocr,你可以理解paddlerocr是paddlepaddle的子集,是通过模型训练出来的针对图像文字识别的开源库,也说明paddleocr依赖于paddlepaddle。如下官网:

paddlepaddle官网:飞桨PaddlePaddle-源于产业实践的开源深度学习平台飞桨致力于让深度学习技术的创新与应用更简单。具有以下特点:同时支持动态图和静态图,兼顾灵活性和效率;精选应用效果最佳算法模型并提供官方支持;真正源于产业实践,提供业界最强的超大规模并行深度学习能力;推理引擎一体化设计,提供训练到多端推理的无缝对接;唯一提供系统化技术服务与支持的深度学习平台icon-default.png?t=N7T8https://www.paddlepaddle.org.cn根据上面的安装教程,由于我的服务器没有英伟达显卡,所以我装cpu版本的paddlepaddle一切顺利,再安装paddleocr第一次报错

ModuleNotFoundError: No module named 'patch_ng'

它的意思是找不到patch_ng的模块,网上有个教程是手动安装patch_ng,我试了再安装paddleocr还是报一样的错

pip install patch_ng

接着我又找到一个说法是python3.12会有问题,可以安装python3.9解决,于是我将3.12卸载,并把安装目录删除,本身我不太想装太老的python版本,我就从3.11开始往下试(由于我并没有在安装时记录每一步安装和报错截图,所以只能回忆踩坑经历)

2. 我先成功安装好3.11和paddlepaddle最新版本,再安装paddleocr后第二次报错

'libpaddle' is not defined ImportError: DLL load failed while importing libpaddle

开始我只搜了一下网上有没有解决方法,看到一个说法是:没有安装2015 Redistributable库,下载地址:Download Microsoft Visual C++ 2015 Redistributable Update 3 from Official Microsoft Download Center

我查看了一下我的电脑是已经装了的,但我还是将它卸载后重新安装,但还是报这个错,于是我认为可能是python版本不对,我将3.10/3.9都按相同的方法进行安装,(tips:卸载后一定记得把之前的安装目录删除,不然如果又安装在同一个文件夹下,会报错Could not install packages due to an OSError; [Errno 2] No such file or directory: "")

但还是报相同的'libpaddle'错,于是又在网上查询,有一个说法是paddlepaddle2.6开始有些机器会报'libpaddle'错,必须降版本,于是按照说法将paddlepaddle的版本降到了2.4

3. 安装2.4后,开始第三次报错

Your machine doesn't support AVX, but the installed PaddlePaddle is avx core

这个报错是说我的机器不支持avx,但安装的paddlepaddle版本是一个只支持avx指令集的框架,我用cpuz看了下,确实不支持,很老的cpu了

于是我在网上又搜了下解决方法,是说可以装个noavx的paddlepaddle版本,而支持的python版本最高版本也只有3.8,又开始重复步骤,卸载3.9安装3.8.10的版本python,并安装支持noavx最高版本为2.4.2的paddlepaddle

由于不支持avx指令集,只能用以下命令安装

  • cpu、mkl版本noavx机器下载paddlepaddle包:

    python -m pip download paddlepaddle==2.4.2 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/noavx/stable.html --no-index --no-deps
  • cpu、openblas版本noavx机器下载paddlepaddle包:

    python -m pip download paddlepaddle==2.4.2 -f https://www.paddlepaddle.org.cn/whl/windows/openblas/noavx/stable.html --no-index --no-deps
  • 最后进行安装,使用如下命令:

    python -m pip install .\paddlepaddle-2.4.2-cp38-cp38-win_amd64.whl -i https://mirror.baidu.com/pypi/simple

成功安装后,命令行进行python,输入下面的代码,出现 PaddlePaddle is installed successfully!,说明安装成功

import paddle
paddle.utils.run_check()

4. 感觉已经成功一半了,接下来就是安装paddleocr了,结果开始第四次报错

TypeError: Descriptors cannot be created directly.If this call came from a _pb2.py file

TypeError: Descriptors cannot be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:1. Downgrade the protobuf package to 3.20.x or lower.2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).

网上查了下,解决方法是降protobuf版本降级至3.20,pip安装低版本的即可

pip install protobuf==3.20 -i https://mirror.baidu.com/pypi/simple

5. 再次重新安装paddleocr,开始第五次报错

name 'predict_system' is not defined

因为我安装paddleocr没有指定版本,默认是最新版2.7.5,但好像这个版本可能会出上面这个报错,解决方法是降级,我安装的是2.7.0版本,成功运行

pip install paddleocr==2.7.0.0 -i https://mirror.baidu.com/pypi/simple

随便截了一张图进行测试,如下图进行ocr文字识别

代码如下:

from paddleocr import PaddleOCR, draw_ocrocr = PaddleOCR(use_angle_cls=True, use_gpu=False)
img_path = r'testocr.PNG'
result = ocr.ocr(img_path, cls=True)
for line in result:print(line)

输出结果:

[[[[373.0, 27.0], [552.0, 27.0], [552.0, 51.0], [373.0, 51.0]], ('示例-高精Al翻译', 0.9320504069328308)], [[[29.0, 51.0], [86.0, 51.0], [86.0, 77.0], [29.0, 77.0]], ('原文:', 0.9745678305625916)], [[[31.0, 91.0], [544.0, 90.0], [544.0, 113.0], [31.0, 114.0]], ('天下事有
难易乎?为之,则难者亦易矣;不为,则易者亦难矣', 0.9740261435508728)], [[[31.0, 140.0], [104.0, 140.0], [104.0, 165.0], [31.0, 165.0]], ('Al翻译:', 0.9500085115432739)], [[[33.0, 182.0], [536.0, 182.0], [536.0, 202.0], [33.0, 202.0]], ('Isthereanythingdifficultoreasyintheworld?Doit,', 0.9869545698165894)], [[[34.0, 212.0], [514.0, 213.0], [514.0, 234.0], [34.0, 233.0]], ('andthedifficultthingbecomeseasy;Donotdoit,', 0.9875576496124268)], [[[34.0, 245.0], [386.0, 245.0], [386.0, 265.0], [34.0, 265.0]], ('andtheeasythingbecomesdifficult.', 0.9863361120223999)], [[[471.0, 288.0], [526.0, 288.0], [526.0, 310.0], [471.0, 310.0]], ('去试试', 0.9974588751792908)]]

看起来还是蛮准确的,不错

安装过程中给我一路折腾,我以为我的cpu太老可能使用不了这个本地模型,但结局是好的,初步能运行起,之后遇到其他问题再记录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/33296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入测评:ONLYOFFICE 8.1 桌面编辑器究竟有多强大?

ONLYOFFICE 8.1桌面编辑器 文章目录 ONLYOFFICE 8.1桌面编辑器一、ONLYOFFICE的简介二、ONLYOFFICE 8.1新功能和改进2.1 轻松编辑器 PDF 文件2.2 用幻灯片版式快速修改幻灯片2.3 无缝切换文档编辑、审阅和查看模式2.4 改进从右至左语言的支持 & 新的本地化选项2.5 隐藏“连…

【权威发布】2024年文化、设计与社会科学国际会议(ICCDSS 2024)

2024年文化、设计与社会科学国际会议 2024 International Conference on Culture, Design, and Social Sciences 会议简介 2024年文化、设计与社会科学国际会议旨在为全球范围内的专家学者提供一个交流文化、设计与社会科学研究成果的平台。会议将围绕文化、设计与社会科学的前…

超越AnimateAnyone, 华中科大中科大阿里提出Unimate,可以根据单张图片和姿势指导生成视频。

阿里新发布的UniAnimate,与 AnimateAnyone 非常相似,它可以根据单张图片和姿势指导生成视频。项目核心技术是统一视频扩散模型,通过将参考图像和估计视频内容嵌入到共享特征空间,实现外观和动作的同步。 相关链接 项目&#xff1…

Scala入门【安装与使用、变量与数据类型、运算符、函数、条件判断、循环、字符串、面向对象、数组】

视频地址:Scala大专/本科专用课程_哔哩哔哩_bilibili 目录 P01【01Scala安装与使用】16:15 P02【02变量与数据类型】17:14 P03【03运算符】12:41 P04【04函数】16:40 P05【05条件判断】10:56 P06【06循环】13:33 P07【07字符串】19:09 P08【08面向对象】17:27 P09【0…

DVWA-CSRF-samesite分析

拿DVWA的CSRF为例子 接DVWA的分析,发现其实Impossible的PHPSESSID是设置的samesite1. 参数的意思参考Set-Cookie SameSite:控制 cookie 是否随跨站请求一起发送,这样可以在一定程度上防范跨站请求伪造攻击(CSRF)。 下面用DVWA CS…

使用Python进行数据分析和自动化

组织严重依赖数据分析和自动化来提高运营效率。在本文中,我们将使用 Python(一种用于通用编程的高级编程语言)的示例来研究数据分析和自动化的基础知识。 什么是数据分析? 数据分析是指检查、清理、转换和建模数据的过程&#xf…

FydeOS导入VMware虚拟机之后,如何扩展系统硬盘大小?

前言​ 最近查询FydeOS系统的小伙伴不在少数啊!可见这个系统是相当nice的,小伙伴们都是尝试尝试。 看到有不少小伙伴通过VMware虚拟机使用FydeOS,那么你就肯定知道官方包导入VMware之后,硬盘只显示分区了20GB。 如果这时候使用Fy…

物理服务器会不会被DDOS攻击?

物理服务器同样可能遭受分布式拒绝服务(DDoS)攻击。DDoS攻击的目的是通过大量的请求淹没目标服务器或网络,使其无法处理合法用户的请求,从而导致服务不可用。这种攻击并不区分服务器是物理的还是虚拟的,只要服务器连接…

同城跑腿小程序的崛起与用户体验革新

随着移动互联网的飞速发展,人们的生活方式正在发生深刻的变化。在这个快节奏的时代,时间成为了最宝贵的资源。在这样的背景下,同城跑腿小程序应运而生,以其高效、便捷的服务特性,迅速赢得了广大用户的青睐。本文将探讨…

puppet运维自动化

在现代信息技术管理中,自动化运维工具的应用已成为企业提升效率、降低成本的关键手段之一。Puppet作为一种强大的运维自动化工具,因其高效、灵活和可扩展的特点,受到越来越多企业的青睐。本文将探讨Puppet在运维自动化中的应用,包…

SpringBoot使用滑动窗口限流防止用户重复提交(自定义注解实现)

在你的项目中,有没有遇到用户重复提交的场景,即当用户因为网络延迟等情况把已经提交过一次的东西再次进行了提价,本篇文章将向各位介绍使用滑动窗口限流的方式来防止用户重复提交,并通过我们的自定义注解来进行封装功能。 首先&a…

代码随想录算法训练营第三十三天|452. 用最少数量的箭引爆气球、 435. 无重叠区间、 763.划分字母区间

452. 用最少数量的箭引爆气球 题目链接:452. 用最少数量的箭引爆气球 文档讲解:代码随想录 状态:没想出来 思路:对气球终点位置排序,从第一个气球终点位置射出箭,看这支箭可以尽可能穿过几个气球&#xff0…

Excel 宏录制与VBA编程 —— 12、日期相关

代码1 - 获取当前时间日期信息 代码2 - 时间日期格式 代码3 - 时间日期计算 代码4 - 时间日期案例 关注 笔者 - jxd

免费悬浮翻译器哪个好?测评5款悬浮翻译器

在享受休闲时光时,我们通常都希望不被打扰,对吧? 然而,有时打扰我们的并非是外界的干扰,而是在观看外语视频时,无法理解视频内容的烦躁感。 不过,今天本文将为大家揭开几款屏幕悬浮翻译软件的…

基于Java协同过滤算法的图书推荐系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟感兴趣的可以先收藏起来,还…

ctr/cvr预估之WideDeep模型

ctr/cvr预估之Wide&Deep模型 在探索点击率(CTR)和转化率(CVR)预估的领域中,我们始终追求的是一种既能捕获数据中的线性关系,又能发现复杂模式的模型。因子分解机(Factorization Machines, …

微服务SpringCloud,SpringAliBaBa(2)

微服务02 1.网关路由 网络的关口,负责请求的路由、转发、身份校验。 有了网关之后,微服务的地址不用在暴露了,就暴露个网关地址。 快速入门 routes代表一套路由,pridicates是规则,对请求做出判断,看是哪…

[C++深入] --- malloc/free和new/delete

1 new运算符的拓展 1.1 自由存储区与堆的概念 在C++中,内存区分为5个区,分别是堆、栈、自由存储区、全局/静态存储区、常量存储区。 自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。 new操作符从自由存储区(free st…

今日头条豆包大语言模型api接入python SDK,安装官方库报错,解决方法

豆包python大语言模型库安装指令: pip install volcengine-python-sdk 报错: note: This error originates from a subprocess, and is likely not a problem with pip.ERROR: Failed building wheel for volcengine-python-sdkRunning setup.py clea…

java8 将对象list中的某一个属性取出组成一个list

实体类 public class Sp {String spdm;String spmc;public Sp() {}public Sp(String spdm, String spmc) {this.spdm spdm;this.spmc spmc;}public String getSpdm() {return spdm;}public void setSpdm(String spdm) {this.spdm spdm;}public String getSpmc() {return sp…