【Python】PaddleOCR文字识别国产之光 从安装到pycharm中测试 (保姆级图文)

目录

    • 官方项目地址
    • Python环境搭建(也就是使用Anaconda的python)
        • 1. 安装Anaconda
        • 1. 打开终端并创建conda环境
    • 安装PaddlePaddle(CPU演示)
      • 安装PaddleOCR whl包
      • 如果安装shapely库报错(我没有报错,其他类似库安装失败同理)
    • Pycharm中配置编译环境与报错解决
      • Pycharm中设置使用conda的虚拟环境。
      • 报错1:ModuleNotFoundError: No module named 'Polygon'
      • 报错2:ModuleNotFoundError: No module named 'lanms'
    • Python代码测试
    • 总结


欢迎关注 『Python』 系列,持续更新中
欢迎关注 『Python』 系列,持续更新中

省流助手:本文使用windows的Anaconda安装环境,不建议大家用pycharm等其他途径下载环境,你会发现装好环境非常困难,第三方库之间版本的冲突兼容性报错一个接一个,不要浪费时间在无意义的事情上,大佬随意。

官方项目地址

项目地址
https://gitee.com/paddlepaddle/PaddleOCR

Python环境搭建(也就是使用Anaconda的python)

推荐环境:

  • PaddlePaddle >= 2.1.2
  • Python 3.7
  • CUDA10.1 / CUDA10.2
  • CUDNN 7.6

如果您已经安装Python环境,可以直接参考2.安装PaddlePaddle(非常不建议,如果你很自信非要不用Anaconda的话)

1. 安装Anaconda
  • 说明:使用paddlepaddle需要先安装python环境,这里我们选择python集成环境Anaconda工具包

    • Anaconda是1个常用的python包管理程序
    • 安装完Anaconda后,可以安装python环境,以及numpy等所需的工具包环境。
  • Anaconda下载:

地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?C=M&O=D
  • 大部分win10电脑均为64位操作系统,选择x86_64版本;若电脑为32位操作系统,则选择x86.exe

在这里插入图片描述

  • 下载完成后,双击安装程序进入图形界面

  • 默认安装位置为C盘,建议将安装位置更改到自己的盘,特别注意!路径不能有空格和中文,这会影响到部分库的安装!:
    在这里插入图片描述

  • 勾选conda加入环境变量,忽略警告:
    注意勾选后会影响到其他比如vscode pycharm 中对于python的环境变量设定,这个无伤大雅。
    在这里插入图片描述

1. 打开终端并创建conda环境
  • 打开Anaconda Prompt终端:左下角Windows Start Menu -> Anaconda3 -> Anaconda Prompt启动控制台
  • 右键以管理员身份打开(部分同学没有开管理员权限的情况)
    在这里插入图片描述
  • 创建新的conda环境
    在命令行输入以下命令,创建名为paddle_env的环境,此处为加速下载,使用清华源
conda create --name paddle_env python=3.8 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

该命令会创建1个名为paddle_env、python版本为3.8的可执行环境,根据网络状态,需要花费一段时间

之后命令行中会输出提示信息,输入y并回车继续安装

  • 安装完毕
    在这里插入图片描述

  • 激活刚创建的conda环境,在命令行中输入以下命令,这个conda activate paddle_env激活环境命令是后面的基础,我们的很多操作都要先激活了环境才能继续安装:

    # 激活paddle_env环境
    conda activate paddle_env
    # 查看当前python的位置
    where python
    

在这里插入图片描述
以上anaconda环境和python环境安装完毕


安装PaddlePaddle(CPU演示)

请注意,cmd窗口已经激活了虚拟环境的情况下再执行下面的命令!!

如果您没有基础的Python运行环境,请看前面的一节python环境配置

  • 您的机器安装的是CUDA9或CUDA10,请运行以下命令安装
    python3 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple
    
  • 您的机器是CPU,请运行以下命令安装(本文演示)
    pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
    

更多的版本需求,请参照飞桨官网安装文档中的说明进行操作。

  • 一开始安装看到飘红有点慌
    在这里插入图片描述
  • 但是我发现重新执行一遍命令没有飘红
    在这里插入图片描述

安装PaddleOCR whl包

建议用国内源加速下载!

官网的命令(不建议,下载速度慢)
pip install "paddleocr>=2.0.1" # 推荐使用2.0.1+版本
百度源下载加速(请用我!)
pip install paddleocr -i https://mirror.baidu.com/pypi/simple
  • 已经在paddle_env中
    在这里插入图片描述
  • 安装成功结果
    在这里插入图片描述

如果安装shapely库报错(我没有报错,其他类似库安装失败同理)

  • 对于Windows环境用户:直接通过pip安装的shapely库可能出现[winRrror 126] 找不到指定模块的问题。建议从这里下载shapely安装包完成安装。

shapely下载网址(仅在你命令安装失败时启用),注意这里下载的是cp38(你的python版本3.8) amd64 (64位python,请注意python版本也得是64位)

https://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely

在这里插入图片描述

  • 把下载得到的whl文件放在G:\anaconda3\envs\paddle_env\Lib路径下
    然后到文件的目录下运行“pip install XXXXX你缺少的库文件.whl”就可以很快完成安装,注意要提前先进入虚拟环境中再安装。

Pycharm中配置编译环境与报错解决

Pycharm中设置使用conda的虚拟环境。

不理解如何配置的看此文
【Python】Pycharm中设置使用conda的虚拟环境(保姆级图文)
在这里插入图片描述

报错1:ModuleNotFoundError: No module named ‘Polygon’

在这里插入图片描述

  File "E:\allworkspace\python work space\PaddleOCR-release-2.6\ppocr\data\imaug\ct_process.py", line 22, in <module>import Polygon as plg
ModuleNotFoundError: No module named 'Polygon'

解决方法:重新安装库Polygon

# 卸载原有的Polygon 
pip uninstall Polygon 
pip uninstall Polygon3
#然后安装
pip install Polygon3 -i https://pypi.tuna.tsinghua.edu.cn/simple

报错2:ModuleNotFoundError: No module named ‘lanms’

解决方法:

conda install -f pip
pip install lanms-nova

Python代码测试

  • 项目结构
    在这里插入图片描述

  • 被识别的图片
    在这里插入图片描述

  • 识别结果
    在这里插入图片描述

  • 通过Python脚本使用PaddleOCR whl包,whl包会自动下载ppocr轻量级模型作为默认模型,第一次运行代码你会看到下载,是正常的,后面就不会了。

  • 下面是测试所用的图片(水印除外,大家用自己的图片)
    在这里插入图片描述

  • 测试代码

######################1.文字识别#########################
from paddleocr import PaddleOCR, draw_ocr
# Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
# 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
ocr = PaddleOCR(use_angle_cls=True,# 设置使用方向分类器识别180度旋转文字,处理一些不是正放的文字use_gpu=True,#使用gpulang="ch"#中文识别)
img_path = 'testOCR.jpg'
result = ocr.ocr(img_path, cls=True)#进行识别
for idx in range(len(result)):res = result[idx]for line in res:print(line)#######################2.生成目标检测的图片,用检测框框选文字#########################
# 显示结果
# 如果本地没有simfang.ttf,可以在doc/fonts目录下下载
from PIL import Image
result = result[0]
image = Image.open(img_path).convert('RGB')
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
im_show = draw_ocr(image, boxes, txts, scores, font_path='simfang.ttf')
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')

总结

大家喜欢的话,给个👍,点个关注!继续跟大家分享敲代码过程中遇到的问题!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2022 mzh

Crated:2022-1-10

欢迎关注 『Python』 系列,持续更新中
欢迎关注 『Python』 系列,持续更新中
【Python安装第三方库一行命令永久提高速度】
【使用PyInstaller打包Python文件】
【更多内容敬请期待】


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

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

相关文章

acwing算法基础之基础算法--位运算算法

目录 1 知识点2 模板 1 知识点 &#xff08;一&#xff09; n的二进制表示中第k位是0还是1&#xff0c;注意k从0开始编号。 先把第k位移动到最后一位&#xff0c;即n >> k看个位是几&#xff0c;即x & 1 综合上述&#xff0c;即n >> k & 1。 &#xff…

01 初识FPGA

01 初识FPGA 一.FPGA是什么 FPGA&#xff08;Filed Programmable Gate Array&#xff09;&#xff0c;现场可编程门阵列&#xff0c;一种以数字电路为主的集成芯片&#xff0c;属于可编程逻辑器件PLD的一种。 1.1 两大巨头 Xilinx(赛灵思)Altera&#xff08;阿尔特拉&#…

VPN基础

1.VPN简介 VPN即虚拟专用网&#xff0c;泛指通过VPN技术在公用网络上构建的虚拟专用网络。VPN用户在此虚拟网络中传输私网流量&#xff0c;在不改变网络现状的情况下实现安全、可靠的连接。 专用&#xff1a;VPN网络是专门供VPN用户使用的网络&#xff0c;对于VPN用户&#xf…

geecg-uniapp 同源策略 数据请求 获取后台数据 进行页面渲染 ui库安装 冲突解决(3)

一&#xff0c;同源策略 &#xff08;1&#xff09;首先找到env 要是没有env 需要创建一个替换成后端接口 &#xff08;2&#xff09;因为他封装了 先找到 http 请求位置一级一级找 然后进行接口修改 &#xff08;3&#xff09;appUpdata 修改接口 运行即可 &#x…

【postgresql】

看到group by 1&#xff0c;2 和 order by 1&#xff0c; 2。看不懂&#xff0c;google&#xff0c;搜到了Stack Overflow 上有回答 What does SQL clause “GROUP BY 1” mean? 大概意思就是&#xff0c;group by&#xff0c; order by 后面跟数字&#xff0c;指的是 selec…

dockerfile 搭建lnmp+wordpress,docker-compose搭建lnmp+wordpress

目录 dockerfile 搭建lnmpwordpress 部署nginx&#xff08;容器IP 为 172.18.0.10&#xff09; 部署mysql&#xff08;容器IP 为 172.18.0.20&#xff09; 部署php&#xff08;容器IP 为 172.18.0.30&#xff09; docker-compose搭建lnmpwordpress dockerfile 搭建lnmpword…

STM32单片机采用环形缓冲区实现串口中断数据接收管理

一、前言 在嵌入式系统开发中&#xff0c;与上位机进行串口通信是非常常见的场景。上位机可以通过串口发送指令或者数据给嵌入式设备&#xff0c;而嵌入式设备需要可靠地接收并解析这些数据&#xff0c;以执行相应的操作。然而&#xff0c;在串口通信过程中&#xff0c;上位机…

c++的小指针

1&#xff0c;关于QByteArray的代码&#xff0c;以下说法正确的是&#xff1f; QByteArray bytes; bytes[0] 1; bytes[1] 2; bytes[2] 3; bytes[3] 4; A&#xff1a;编译通过&#xff0c;运行正常。 B&#xff1a;编译通过&#xff0c;运行时QT抛出异常导致程序退出…

Error: error:0308010C:digital envelope routines::unsupported

这个错误通常发生在使用 Node.js 中的 TLS/SSL 模块时。它表示在尝试建立 TLS 连接时&#xff0c;无法识别或不支持远程服务器所使用的加密协议。 可能的原因包括以下几点&#xff1a; 远程服务器使用了不安全的加密算法或协议&#xff0c;而最新版本的 OpenSSL 已经将其移除…

如何实现前端路由保护?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

OpenCV实现图像傅里叶变换

傅里叶变换 dftcv.dft(img_float32,flagscv.DFT_COMPLEX_OUTPUT): flags:标志位&#xff0c;指定变换类型&#xff0c;cv.DFT_COMPLEX_OUTPUT会返回复数结果。 傅立叶变换&#xff0c;将输入的图像从空间域转换到频率域。 返回结果: 此函数返回一个复杂数值数组&#xff0c…

flutter 网络图片封装

可自定义加载时占位图片和加载失败时展示的图片 class ImageBuildView extends StatelessWidget {String? url;double radius;double? width;double? height;String placeholder;ImageBuildView({super.key,this.url,this.width,this.height,this.radius 50,this.placehol…

IOS 快速获取加密方法,加密数据

引言逆向过程中,被一个加密算法或者一段代码折磨。安卓没有办法,只能找IOS。 首先要看下,越狱检测能不能过,不过,然后看下几个屏蔽越狱的插件能不能行,如果可以,就可以走这条路。 实战先来这一段frida hook 代码: if (ObjC.available) {Interceptor.attach(Module.find…

初学者必看,前端 Debugger 调试学习

1.文章简介&#xff1a; 报错和Bug&#xff0c;是贯穿程序员整个编程生涯中&#xff0c;无法回避的问题。而调试&#xff0c;就是帮助程序员定位问题、解决问题的重要手段&#xff0c;因此调试是每个程序员必备技能。 调试本身可分为两个过程: 定位问题 和 解决问题&#xff0…

【开发心得】Java xsd文件转JavaBean

前言 最近又要对接友商老的系统&#xff0c;依然采用http xml方式的请求&#xff0c;客方提供了xsd,这里提供windows平台两种转换xsd文件为javaBean的方式。 方法一 : xjc 命令参考: "C:\Program Files\Java\jdk1.8.0_331\bin\xjc.exe" test.xsd -p com.test.im…

4Spring及Spring系列-基本

8、Spring/Spring MVC Spring常见面试题55道&#xff08;附答案2023最新版&#xff09;_spring面试题-CSDN博客Spring是一个开源的Java企业级开发框架&#xff0c;由Rod Johnson于2003年创建。它提供了一套全面的编程和配置模型&#xff0c;用于构建现代化的基于Java的企业应用…

基于 SpringBoot+Hikvision SDK 远程查看配置海康网络摄像头配置

写在前面 工作中遇到&#xff0c;简单整理理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&#xff0c;永不停息。所有其它的路都是不完整的&#xff0c;是人的逃避方式&#xff0c;是对大…

多输入多输出 | MATLAB实现CNN-BiGRU-Attention卷积神经网络-双向门控循环单元结合SE注意力机制的多输入多输出预测

多输入多输出 | MATLAB实现CNN-BiGRU-Attention卷积神经网络-双向门控循环单元结合SE注意力机制的多输入多输出预测 目录 多输入多输出 | MATLAB实现CNN-BiGRU-Attention卷积神经网络-双向门控循环单元结合SE注意力机制的多输入多输出预测预测效果基本介绍程序设计往期精彩参考…

HarmonyOS学习 -- ArkTS开发语言入门

文章目录 一、编程语言介绍二、TypeScript基础类型1. 布尔值2. 数字3. 字符串4. 数组5. 元组6. 枚举7. unknown8. void9. null 和 undefined10. 联合类型 三、TypeScript基础知识条件语句if语句switch语句 函数定义有名函数和匿名函数可选参数剩余参数箭头函数 类1. 类的定义2.…

低压配电系统中浪涌保护器的作用,安装位置和接线方法

低压配电系统是指在变压器低压侧或用户侧的电气装置&#xff0c;主要用于向用户提供安全、可靠和经济的电能。低压配电系统中常见的电气设备有低压配电柜、分支箱、开关箱、插座、照明等。这些设备都需要防止因外部或内部原因产生的过电压对其造成损坏或影响其正常工作。过电压…