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

news2025/1/15 8:32:27

目录

一、环境安装配置

        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.9

conda 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.git

cd 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_pipeline

pipeline = 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_model

model = 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_model

model = 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要求的训练数据格式,以及如何简单使用命令行训练自己的模型参数。

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

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

相关文章

【论文笔记】Fine-tuned CLIP Models are Efficient Video Learners

🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: Fine-tuned CLIP Models a…

QT实现改变窗口大小其子控件也自动调节大小

创建一个顶层布局即可,一定要在MainWindows或者Widget的下面! 观察图标变化 带有禁止的意思是分拆布局(当前无布局) 现在是添加布局后了 注意:一定是在MainWindows或Widget才可以添加顶层布局,才可以实现…

antDesign Form.List下的Form.Item如何通过setFieldsValue设置值

翻了一下antDesign官网只看见了Form可以使用setFieldsValue设置值,却没找到Form.List使用setFieldsValue设置值。 于是研究了一下!!!!!! 我的解决方案是: 先设置为空数组, 再设置成…

241014-绿联UGOSPro-通过虚拟机访问主机的用户目录及文件夹

如图所示,两种方式; 方式1: 通过Files中的Other Locations 添加主机ip,随后输入主机的用户名及密码即可系统及文件加载可能需要一段时间,有点卡,加载完应该就可以点击访问了 方式2: 通过命令行直接ssh/sftp userna…

解锁C++继承的奥秘:从基础到精妙实践(下)

文章目录 前言🥐五、多继承,菱形继承和菱形虚拟继承🧀5.1 多继承🧀5.2 菱形继承🧀5.3 虚拟继承(解决菱形继承问题)5.3.1 虚拟继承的语法:5.3.2 虚拟继承示例: &#x1f9…

C语言 | Leetcode C语言题解之第479题最大回文数乘积

题目: 题解: int largestPalindrome(int n){if (n 1) {return 9;}int upper pow(10, n) - 1;for (int left upper;; --left) { // 枚举回文数的左半部分long p left;for (int x left; x > 0; x / 10) {p p * 10 x % 10; // 翻转左半部分到其自…

相机畸变模型

文章目录 概述相机畸变类型径向畸变切向畸变 畸变数学模型径向畸变模型切向畸变模型畸变数学模型总结 去畸变数学过程去畸变步骤 畸变测试结论参考 概述 相机畸变是图像处理和计算机视觉中的常见问题。由于透镜的物理特性,图像边缘的物体往往会呈现扭曲&#xff0c…

(34)FFT与信号频谱(双边谱)

文章目录 前言一、仿真代码二、仿真结果画图 前言 本文首先使用MATLAB生成一段余弦信号,然后对其进行FFT变换,给出了信号的双边幅度谱。 一、仿真代码 代码如下(示例): %% 生成余弦波 % 指定信号的参数,…

k8s中的微服务

一、什么是微服务 用控制器来完成集群的工作负载,那么应用如何暴漏出去?需要通过微服务暴漏出去后才能被访问 Service是一组提供相同服务的Pod对外开放的接口。 借助Service,应用可以实现服务发现和负载均衡。 service默认只支持4层负载均…

Java 输入与输出(I\O)详解

一、Java 输入与输出(I\O)系统概述 Java 输入/输出流(Input/Output,简称I/O)是Java语言用于读写数据的API,它提供了一系列类和接口,用于读取和写入各种类型的数据信息。 输入/输出(I/O&#xff…

SpringBoot项目热部署-devtools

DevTools 会使用两个类加载器&#xff08;一个用于加载不变的类&#xff0c;一个用于加载可能会变化的类&#xff09;&#xff0c;每次重启只重新加载管理变化的类的加载器&#xff0c;因此会快很多 1.导入依赖 <dependency> <groupId>org.springframework.boot&l…

动态设置placeholder-class.默认搜索图标在中间获取焦点之后再左边

默认状态:placeholder和图标在中间位置 获取焦点&#xff1a;placeholder和图标在左边光标前面位置 动态设置placeholder-class <view class"search"><input type"search" class"select-input" input-align"center" v-model.…

算法题---动态规划

题目展示&#xff1a; 动态规划的题目我们一半分为5个步骤去分析&#xff0c;第一&#xff0c;状态表示&#xff1b;第二&#xff0c;动态转移方程&#xff1b;第三&#xff0c;初始化&#xff1b;第四&#xff0c;填表顺序&#xff1b;第五&#xff0c;返回值。 状态表示 这…

[权威出版|稳定检索]2024年大数据经济与公共管理国际会议(BDEPM 2024)

2024年大数据经济与公共管理国际会议 2024 International Conference on Big Data Economy and Public Management 【1】大会信息 会议名称&#xff1a;2024年大数据经济与公共管理国际会议 会议简称&#xff1a;BDEPM 2024 大会时间&#xff1a;请查看官网 大会地点&#xf…

网络协议原理

文章目录 TCP通信原理TCP与UDP的对比应用层应用层协议 --- tcp协议定制直接传递对象自定义协议现在要解决的问题业务处理 json的使用使用json进行序列化和反序列化操作 总结 TCP通信原理 tcp是面向字节流的 同时他也是面向连接的 所以TCP的服务器编写代码如图所示: 客户端的编…

Scala入门基础(10)高级函数

一.什么是高阶函数 二.map函数 三.foreach函数 四.filter函数 五.flatten函数 正文&#xff1a; 一.什么是高阶函数 高阶函数&#xff1a;是一个特殊的函数&#xff0c;特殊之处在于&#xff1a;它指使用其他函数作为参数或返回值 &#xff08;演示&#xff09; 二.map函…

maven项目打jar包之后如何指定外部配置文件运行java类

在maven项目中,常常会用到一些配置文件,一旦打成jar包之后,想要用外部的配置文件运行,怎么做呢? 一、配置文件config.ini 在maven项目中的src/main/resources目录下存放了一个配置文件config.ini。这个文件是默认的配置文件。 db.url=jdbc:mysql://localhost:3306/qyxx?u…

【JavaScript】LeetCode:66-70

文章目录 66 组合总和67 括号生成68 单词搜索69 分割回文串70 N皇后 66 组合总和 回溯sum&#xff1a;当前组合的数字和。递归终止条件&#xff1a;sum > target。收集结果条件&#xff1a;sum target&#xff0c;找到了满足条件的组合。注意&#xff1a;因为可以重复取数&…

亚洲最具影响力人物颜廷利:心理健康对身体健康的重要影响

在当代社会&#xff0c;面对疾病与痛苦&#xff0c;人们往往在西医与中医之间做出选择。21世纪世界上知名度最高的人物颜廷利教授的精辟见解指出了这两种医学体系的根本差异&#xff1a;西医以其高昂的费用&#xff0c;针对生理上的疾苦提供快速而直接的解决之道&#xff1b;相…

Python应用指南:利用高德地图API获取公交可达圈

参考文章&#xff1a;城市公交可达圈绘制方法&#xff08;一&#xff09; - 知乎 (zhihu.com) 本篇文章我们聚焦于通过公共交通出行方式&#xff08;包括公交、地铁、公交地铁的组合&#xff09;来获取一定时间内可以到达的范围。为了实现这一目标&#xff0c;我们将使用高德地…