从零开始使用最新版Paddle【PaddleOCR系列】——第一部分:文本检测和识别模型的环境安装与基础使用

目录

一、环境安装配置

        1.基本环境配置:torch与paddlepaddle安装

        2.专精任务配置:PaddleX与PaddleOCR插件安装

        3.测试数据配置:测试数据集下载与验证

二、模型基础使用

        1.使用OCR模型预测

​        2.使用Detect检测模型

​        3.使用Recognition识别模型


一、环境安装配置

        1.基本环境配置:torch与paddlepaddle安装

        参考官方文档地址:https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-beta1/docs/installation/paddlepaddle_install.md

        如果无法访问,只需复制地址,将其中github改为国内gitee即可,下述同理。

        国内gitee访问:https://gitee.com/PaddlePaddle/PaddleX/blob/release/3.0-beta1/docs/installation/paddlepaddle_install.md

        首先创建基本的虚拟环境,安装必要的torch计算平台和paddlepaddle库gpu版本。

# 虚拟环境
conda create -n paddledet python=3.9conda activate paddle# 安装pytorch基于CUDA11.8
pip install torch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 --index-url https://download.pytorch.org/whl/cu118# 安装paddlepaddle基于CUDA11.8
pip install paddlepaddle-gpu==3.0.0b1 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/

        2.专精任务配置:PaddleX与PaddleOCR插件安装

        参考官方文档地址:https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-beta1/docs/installation/installation.md

        百度开源的paddle项目包含多个领域的深度学习应用,而本文主要是记录其中负责OCR任务的模型和模块。

        要使用Paddle中强大的模型库以及训练都基于一个集成的平台PaddleX。

        PaddleX平台Github地址:https://github.com/PaddlePaddle/PaddleX

        推荐直接使用Git Clone指令从Github上克隆PaddleX项目源码并安装。pip install -e 代表当前项目的PaddleX源码修改会同时作用在conda安装的env虚拟环境包内,这样方便调试修改。注意一定要在虚拟环境激活的情况下,安装PaddleX。

# 克隆并安装PaddleX命令行指令# 首先要cd到自己项目地址
cd xxx## 国外github地址:慢
git clone https://github.com/PaddlePaddle/PaddleX.git
## 国内gitee地址:快
git clone https://gitee.com/PaddlePaddle/PaddleX.gitcd PaddleX
pip install -e .

        还需要补充安装一下ujson包,不过不装影响也不大,只是在装插件时会有警告。

# 补充安装依赖包——为后续插件安装准备
pip install ujson

        安装好PaddleX工具平台以后,就可以安装特定任务的模型了,官方文档给出了安装指令和不同任务对应的插件模型名称。

# 安装特定插件模型指令
paddlex --install PaddleXXX# example:文本检测识别任务
paddlex --install PaddleOCR

        3.测试数据配置:测试数据集下载与验证

        参考官方文档地址:https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-beta1/docs/module_usage/tutorials/ocr_modules/text_detection.md

        下载官方提供的数据集测试环境安装是否成功。

# web下载官方数据集压缩包到项目路径下dataset目录
wget https://paddle-model-ecology.bj.bcebos.com/paddlex/data/ocr_det_dataset_examples.tar -P ./dataset# 解压
tar -xf ./dataset/ocr_det_dataset_examples.tar -C ./dataset/

        paddlex提供了验证数据集是否构建正确的工具,只需命令行指令就可以运行,这对后续微调训练提供了便利。下面使用官方数据集测试是否能成功运行。

        命令行参数:其中 -c 后对应数据集对应训练模型配置文件地址,第一个 -o 对应模式是检验数据集(check_dataset),第二个 -o 对应数据集地址。

python main.py -c paddlex/configs/text_detection/PP-OCRv4_mobile_det.yaml -o Global.mode=check_dataset -o Global.dataset_dir=./dataset/ocr_det_dataset_examples

         如果数据集没有问题会报绿字,并生成数据集统计结果。

二、模型基础使用

         PaddleX提供了非常强大的命令行和 python 脚本接口使用方法。下述使用方法只需修改图片路径即可直接检测部署到自己的数据上。OCR实际存在两个阶段的任务:首先是定位到文本框的检测模型 Det,再将检测小图框识别为文字的识别模型 Rec。下面先记录完整ocr直接使用,再记录单独使用(单独使用是为了后续提升精度的微调训练准备)。

        1.使用OCR模型预测

        参考官方文档地址:https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-beta1/docs/pipeline_usage/tutorials/ocr_pipelines/OCR.md

        直接使用命令行或者Python脚本的效果是一样的。只需替换 xxx 为实际需要预测图片的地址即可复用。

# 命令行使用
paddlex --pipeline OCR --input xxx --device gpu:0 --save_path ./output/
## 官方数据集测试 xxx = ./dataset/ocr_det_dataset_examples/images
paddlex --pipeline OCR --input ./dataset/ocr_det_dataset_examples/imagess --device gpu:0# Python脚本
from paddlex import create_pipelinepipeline = create_pipeline(pipeline="ocr")
output = pipeline.predict("xxx")
for res in output:res.print()res.save_to_img("./output/")

        第一次使用会自动下载官方模型到本地,要记住下载地址,后续可以将模型地址修改到其他盘以释放C盘压力,或者使用自己训练的模型地址。

        PaddleOCR是基于像素级的检测算法,支持斜方框的检测结果。

         2.使用Detect检测模型

        参考官方文档地址:https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-beta1/docs/module_usage/tutorials/ocr_modules/text_detection.md

        PaddleX也支持单独使用其中模型的操作,这方便了实际部署中的调整,比如如果使用官方模型出现漏字就单独微调训练检测模型即可,如果出现字识别成别的字则训练识别模型。

        使用 python 脚本就可以直接调用官方模型,如果想要自己训练的模型,只需修改create_model 中传入的模型地址即可,默认官方模型第一次使用会下载保存到C盘(如使用OCR模型所示,所有下载的官方模型都保存在此处)。我们可以将其剪贴到当前项目目录,那么传入python脚本的改为加上路径的模型地址。

# 官方模型下载本地保存地址
C:\Users\Administrator\.paddlex\official_models
# 本地部署测试代码
from paddlex import create_modelmodel = create_model("./official_models/PP-OCRv4_server_det")
output = model.predict("./PaddleX/dataset/ocr_det_dataset_examples/images/train_img_7.jpg", batch_size=1)
for res in output:res.print(json_format=False)res.save_to_img("./output/")res.save_to_json("./output/res.json")

         3.使用Recognition识别模型

        参考官方文档地址:https://github.com/paddlepaddle/PaddleX/blob/release/3.0-beta1/docs/module_usage/tutorials/ocr_modules/text_recognition.md

        下载参考测试的图片到本地,下载地址:https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_rec_001.png

        其使用方法和检测模型没有什么区别,沿用检测模型那一套得到结果即可。代码如下。

from paddlex import create_modelmodel = create_model("./official_models/PP-OCRv4_server_rec")
output = model.predict("./PaddleX/dataset/ocr_det_dataset_examples/images/general_ocr_rec_001.png", batch_size=1)
for res in output:res.print(json_format=False)#res.save_to_img("./output/")  #文本识别不支持生成图片res.save_to_json("./output/res.json")

        PaddleOCR的安装和基本使用到此大致完成,下一篇文章集中精力记录Paddle微调训练部分,包括构建Paddle要求的训练数据格式,以及如何简单使用命令行训练自己的模型参数。

        快速链接:https://blog.csdn.net/qq_58718853/article/details/142951746

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

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

相关文章

【AI论文精读5】知识图谱与LLM结合的路线图-P2

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】 P1 4 知识图谱增强的LLMs 大语言模型(LLMs)在许多自然语言处理任务中取得了令人期待的结果。然而,LLMs因缺乏实用知识和在推理过程中容易产生事实性错误而受到批评。为了解决这个问题…

JVM系列(八) -运行期的几种优化技术

一、摘要 在之前的文章中我们谈到过,相比 C/C 语言,Java 语言在运行效率方面要稍逊一些,因为 Java 应用程序是在虚拟机上运行,而 C/C 程序是直接编译成平台相应的机器码来运行程序。 从虚拟机对外发布开始,开发团队一…

interwirelessac9560感叹号,电脑无法连接wifi,无法搜索到wifi

interwirelessac9560感叹号 电脑无法连接wifi,无法搜索到wifi 原因 这可能是wifl模块出现了问题。 解决方案 1、winx 打开,选择【设备管理器】 2、选择网络适配器 右键打开wireless-AC,选择【卸载设备】。 3、关机2分钟后&#xff0c…

JavaWeb 15.详解Servlet及其源码

目录 一、Servlet简介 1.动态资源和静态资源 静态资源 动态资源 生活举例 动/静态资源的响应过程 2.Servlet简介 Servlet执行流程 Servlet作用 二、Servlet开发流程 1.目标 2.开发流程 3.问题 ① Servlet-api.jar导入问题 ② Content-Type响应头的问题 4.Servlet_url-pattern的…

ORACLE SELECT INTO 赋值为空,抛出 NO DATA FOUND 异常

例子: DECLARE ORDER_NUM VARCHAR2(20); BEGIN SELECT S.ORDER_NUM INTO ORDER_NUM FROM SALES_ORDER S WHERE S.ID122344; DBMS_OUTPUT.PUT_LINE(单号: || ORDER_NUM); END; 在查询结果为空的情况下,以上代码会报错:未找到任何数据 解决方…

体育直播系统定制怎么做?掌握这些架构功能设计方案!

要开发一个高效、便捷、又充满乐趣的体育直播平台,我们需要依托先进的技术架构和丰富的功能模块,以提供卓越的观赛体验。如下参考“东莞梦幻网络科技”预先开发的体育直播系统源码,他们采用了哪些技术和模块来提升用户体验。 一、系统架构&am…

Redis-02 数据持久化

redis持久化即将数据从内存写入磁盘,Redis提供了两种持久化的方式:RDB和AOF。 1.RDB RDB持久化:Redis可以将内存中的数据定期快照保存到磁盘上的一个二进制文件中。RDB持久化是一种比较紧凑的文件格式,适用于备份和灾难恢复。通过…

【氮化镓】低温对p-GaN HEMT迁移率、阈值电压和亚阈值摆幅的影响

本期分享一篇低温对p-GaN HEMT 迁移率、阈值电压和亚阈值摆幅影响进行表征和建模的研究论文。文章作者Shivendra Kumar Singh、Thien Sao Ngo、Tian-Li Wu(通讯作者)和Yogesh Singh Chauhan,分别来资源中国台湾阳明交通大学国际半导体技术学院、印度理工学院坎普尔分校电气工…

爬虫之数据解析

数据解析 数据解析这篇内容, 很多知识涉及到的都是以前学习过的内容了, 那这篇文章我们主要以实操为主, 来展开来讲解关于数据解析的内容。 360搜索图片 请求的url大家不需要再找了, 相信大家都会找请求了, 寻找请求从我的第一篇爬虫的博客开始到现在一直都在写,这边的话, 我已…

CSS 图标和文本对齐

比如下面一段HTML代码&#xff0c;我们想在图标旁边显示文本或者数字 <body> <div><img src"smile.svg" alt"smile"><span>12</span></div> <div><img src"heartShape.svg" alt"…

光伏仿真系统在光伏项目开发中有哪些应用场景?

光伏仿真系统在光伏项目开发中的应用场景广泛&#xff0c;涵盖了从项目规划、设计优化到运维管理的全过程。 一、项目规划与选址 1、气象模拟与评估 光伏仿真系统能够基于历史气象数据和先进的预测模型&#xff0c;模拟不同地理位置、不同季节和时间段的光照强度、温度、湿度…

Fomality基础知识

formal主要用于等价性检查&#xff0c;检查步骤如下&#xff1a; 1.Read design 2.Set up 3.Matching&#xff1a;Map corresponding signals between pairs of designs 4.Verification&#xff1a;Compare the logic cones that drive the mapped signals 二&#xff1a;…

Hadoop生态圈三大组件:HDFS的读写流程、MapReduce计算流程、Yarn资源调度

文章目录 1. HDFS的读写流程1.1 HDFS读流程1.2 HDFS写流程 2. MapReduce计算流程3. Yarn资源调度一、客户端请求资源二、Resource Manager处理请求三、任务资源计算与申请四、Resource Manager分配资源五、Node Manager执行任务六、任务执行与监控 1. HDFS的读写流程 1.1 HDFS…

UTF8编码的PowerShell脚本中文乱码的解决方法

1.问题现象 使用VSCode(已安装Code Runner扩展)编写含有中文字符串的ps1脚本之后运行收到各种错误 例如&#xff1a;字符串缺少终止符: "。&#xff1b;表达式或语句中包含意外的标记“}”。&#xff1b;语句块或类型定义中缺少右“}”。 使用快捷键CtrlAltN触发Run Cod…

YOLO11 实例分割 | 导出ONNX模型 | ONNX模型推理

本文分享YOLO11中&#xff0c;从xxx.pt权重文件转为.onnx文件&#xff0c;然后使用.onnx文件&#xff0c;进行实例分割任务的模型推理。 用ONNX模型推理&#xff0c;便于算法到开发板或芯片的部署。 备注&#xff1a;本文是使用Python&#xff0c;编写ONNX模型推理代码的 目…

HDMI Type B 连接器的引脚分配与接口尺寸

连接器引脚分配 B 型连接器引脚分配&#xff1a; 连接器接触顺序 连接器接口尺寸 B 型插座接口尺寸&#xff1a; B 型插头接口尺寸&#xff1a; B 型插座与插头配合状态&#xff1a; 微信公众号&#xff1a;

CreateEvent 事件对象可以用来在线程之间同步操作 信号事件

CreateEvent 是一个 Windows API 函数&#xff0c;用于创建或打开一个事件对象&#xff0c;事件对象可以用来在线程之间同步操作。该函数的签名如下&#xff1a; HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes, // 安全属性&#xff0c;可以为 NULLBOOL bManu…

使用XML实现MyBatis的基础操作

目录 前言 1.准备工作 1.1⽂件配置 1.2添加 mapper 接⼝ 2.增删改查操作 2.1增(Insert) 2.2删(Delete) 2.3改(Update) 2.4查(Select) 前言 接下来我们会使用的数据表如下&#xff1a; 对应的实体类为&#xff1a;UserInfo 所有的准备工作都在如下文章。 MyBatis 操作…

React国际化中英文切换实现

目录 概况 安装 文件结构 引入 使用 正常使用 传参使用 概况 react-intl-universal 是一个国际化库&#xff0c;专门为 React 应用提供多语言支持。与 React 原生的 react-intl 相比&#xff0c;react-intl-universal 支持从远程服务器加载语言包&#xff0c;动态切换语…

MySQL数据的导入

【图书推荐】《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;》-CSDN博客 《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…