PaddleOCR使用

最近在项目过程中需要用到文字识别的能力,之前没有接触过。需要对现有的开源能力进行调研和学习。

1. 基本概念

1.1 PaddlePaddle

PaddlePaddle 是一个由百度开源,基于 Python 的深度学习框架。PaddlePaddle 针对不同的硬件环境提供了不同的安装包或安装方式:可以使用 CPU 也可以 GPU,GPU 支持的硬件包含 CUDA 和 ROCm 4.0。但 ROCm 目前只能在 Linux 系统中使用。具体可以参考 paddlepaddle官方文档。
在这里插入图片描述

1.2 PaddleHub

PaddleHub是基于PaddlePaddle 开发的预训练模型管理工具,可以借助预训练模型更便捷地开展迁移学习工作,旨在让 PaddlePaddle 生态下的开发者更便捷体验到大规模预训练模型的价值。下面是 PaddlePadd 在 github 上的介绍摘录。

【模型种类丰富】: 涵盖大模型、CV、NLP、Audio、Video、工业应用主流六大品类的 400+ 预训练模型,全部开源下载,离线可运行
【超低使用门槛】:无需深度学习背景、无需数据与训练过程,可快速使用AI模型
【一键模型快速预测】:通过一行命令行或者极简的Python API实现模型调用,可快速体验模型效果
【一键模型转服务化】:一行命令,搭建深度学习模型API服务化部署能力
【跨平台兼容性】:可运行于Linux、Windows、MacOS等多种操作系统

1.3 PaddleOCR

PaddleOCR,也叫pp-ocr,是 PaddlePaddle 框架下的 OCR 库,支持多种语言的文本识别。

2. 安装步骤

2.1 安装 PaddlePaddle

# 默认安装CPU版本,安装paddle时建议使用百度源
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple

2.2 安装 PaddleHub

# 在命令行中输入以下命令
pip install paddlehub -i https://mirror.baidu.com/pypi/simple

2.3 安装 PP-OCR(PaddleOCR)

hub install ch_pp-ocrv3

3. 使用 PaddleOCR

3.1 命令行方式进行识别

hub run ch_pp-ocrv3 --input_path "/PATH/TO/IMAGE"

3.2 用 Python 代码进行识别

import paddlehub as hub
import cv2ocr = hub.Module(name="ch_pp-ocrv3", enable_mkldnn=True) # mkldnn加速仅在CPU下有效
result = ocr.recognize_text(images=[cv2.imread('/PATH/TO/IMAGE')])

3.2.1 CV2 安装

实际上,”cv2”中的 ”2” 并不表示 OpenCV 的版本号。我们知道,OpenCV 是基于 C/C++的,”cv”和”cv2”表示底层使用的是 C 语言 API 还是 C++ API,”cv2”表示使用的是 C++ API。这主要是一个历史遗留问题,是为了保持向后兼容性。另外:“cv2” 的安装模块名为 opencv-python

这里的 cv2 需要另外安装

pip install opencv-python

如果安装时出现如下报错

ERROR: Could not find a version that satisfies the requirement cv2 (from versions: none)
ERROR: No matching distribution found for cv2

检查 pip 是否最新,如果不是最新的则对 pip 进行升级,并指定下载源安装。

python -m pip install --upgrade pip # 如果是python3
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python

3.2.2 API

API 的出入参数在官方文档中有写到,这里就不再展开。

3.3 PaddleHub Serving

PaddleHub 可以将 OCR 部署一个在线服务,命令如下。

hub serving start -m ch_pp-ocrv3

在执行完命令之后会有提示,告知服务的地址和端口号,默认端口号是8866。在服务启动之后就可以通过 http 方式使用 OCR 了。这种在线服务的方式让其他编程语言可以方便的使用 PaddleOCR。

3.3.1 在线服务验证代码

import requests
import json
import cv2
import base64def cv2_to_base64(image):data = cv2.imencode('.jpg', image)[1]return base64.b64encode(data.tostring()).decode('utf8')# 发送HTTP请求
data = {'images':[cv2_to_base64(cv2.imread("/PATH/TO/IMAGE"))]}
headers = {"Content-type": "application/json"}
url = "http://127.0.0.1:8866/predict/ch_pp-ocrv3"
r = requests.post(url=url, headers=headers, data=json.dumps(data))# 打印预测结果
print(r.json()["results"])

3.3.2 在线服务性能

由于是在本机做测试,所以用 python 直接调用 PaddleOCR 还是通过 http 调用 PaddleHub Serving,性能上没有明显的差异。

3.3.3 Gradio App

官方文档中提到 “从 PaddleHub 2.3.1 开始支持在浏览器中访问 ch_pp-ocrv3 的 Gradio App”,但我在访问 URL 的时候服务端报错。粗略查了一下可能是由于我的环境是 Windows,这个问题不影响整体,所以暂时不深究。

4. 测试结果

4.1 识别率

PaddleOCR 的识别率还是比较高的,对于非手写的字体基本识别率达到 95% 以上,由于没有特别测试比较复杂的字,所以这个数字是我的主观判断。对于比较刁钻的测试,PaddleOCR 的识别率就比较低了,如故意把 Il 混在一起(如 IlIlIlIl)基本无法识别(当然这只是为了测试而创造的,正常情况下不会出现,因为人也无法识别)。

4.2 性能

对于普通的图片,识别性能基本在秒级别,识别消息根据图片中的内容存在较大差异,越复杂越慢。对同一张图片多次识别时只需要花费原本 20% 的时间,猜测是有类似缓存的机制。

4.3 使用难度

整体安装上没有太大难度,跟着官方文档一步步安装就可以了。唯一的难度是需要用 python 来调用,但是官方也提供了 hub serving,其他语言可以通过 http 进行调用。

参考资料

PaddleOCR的使用
开始使用
零基础windows安装并实现图像风格迁移
python安装cv2库 python3.8安装cv2
Python3 安装cv2 / OpenCV安装

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

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

相关文章

vue导出大量数据的表格方法

我目前的项目导出4万7数据没问题 先安装 npm install -S file-saver npm install xlsx0.16.0 -S npm install -D script-loader 我使用的版本是"file-saver": “^2.0.5”, “xlsx”: “^0.16.0” 新建Export2Excel.js //Export2Excel.js /* eslint-disable */ requ…

MP4视频转MOV电影视频格式的方法?汇帮视频格式转换器帮你实现一键转MOV

有关MOV视频格式的介绍: MOV视频是一种多媒体文件格式,它被广泛用于存储和播放音频和视频内容。这种文件格式由苹果公司开发,作为QuickTime播放器的一部分,用于在Mac OS操作系统上播放多媒体内容。MOV格式的文件通常包含视频、音…

2024年数维杯数学建模A题思路

文章目录 1 赛题思路2 比赛日期和时间3 竞赛信息4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间:2024…

vscode与git下载安装

粉丝不过W git下载地址: https://git-scm.com/downloads, 安装git时, 记住你安装Git的路径 vscode下载地址: https://code.visualstudio.com/ 下载完后, 并默认安装好, 你就可以进入配置git的环境变量了, 点击win, 点击设置 在搜索框里搜索, 高级系统设置 点到 高级 , 然后点击…

一文详解Spring与JDK注入

目录 一、Spring框架 二、JDK 三、什么是Spring的注入 四、如何实现Spring与JDK注入 一、Spring框架 Spring框架是一个开源的Java EE应用程序框架,它为企业级Java应用程序提供了全面的基础设施支持。Spring框架的核心特点包括依赖注入(Dependency I…

TikTok营销策略解析:7大关键要素打造品牌影响力

TikTok作为近年来迅速崛起的短视频社交平台,已经成为全球范围内品牌营销的重要阵地。对于品牌而言,如何在TikTok上有效地开展营销活动,吸引目标受众的注意力,提升品牌知名度和影响力,是摆在他们面前的重要课题。本文No…

LINUX 入门 8

LINUX 入门 8 day10 20240507 耗时:90min 有点到倦怠期了 课程链接地址 第8章 TCP服务器 1 TCP服务器的介绍 开始讲服务器端,之前是客户端DNShttps请求 基础:网络编程并发服务器:多客户端 一请求,一线程 veryold…

[图解]DDD架构好简单我学会了-学会也没啥用

1 00:00:03,720 --> 00:00:05,920 内部共有,首先是内部的 2 00:00:08,150 --> 00:00:09,220 所以不能说什么 3 00:00:09,630 --> 00:00:10,730 不能跟外部连在一起 4 00:00:10,740 --> 00:00:15,280 比如说,功能架构,可以吗 …

Linux中gitlab-runner部署使用备忘

环境: 操作系统::CentOS8 gitlab版本:13.11.4 查看gitlab-runner版本 可以从https://packages.gitlab.com/app/runner/gitlab-runner/search找到与安装的gitlab版本相近的gitlab-runner版本以及安装命令等信息,我找到与13.11.4相…

便签怎么设置不同的标签 便签创建不同分组标签的方法

在日常工作和生活中,便签已成为我随身携带的小助手。每当灵感闪现,或是需要临时记录一些重要事项,我都会随手打开便签,快速记录下来。然而,随着记录的内容越来越多,如何高效地管理和查找这些信息成为了一个…

分布式关系型数据库管理系统 OceanBase 安装和配置教程

🌊 分布式关系型数据库管理系统 OceanBase 安装和配置教程 🚀 博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝…

js自定义实现类似锚点(内容部分滚动)

场景&#xff1a; 效果图如上&#xff0c;类似锚点&#xff0c;但是屏幕不滚动。高度计算我不是很熟练。for循环写的比较麻烦。element plus 和Ant Design有类似组件效果。 html&#xff1a; <template><div><div style"height: 400px;" class&q…

入门视频剪辑:视频合并不再难,批量嵌套合并的简单步骤

在数字媒体时代&#xff0c;视频剪辑已成为一项基本技能。无论是制作家庭电影、公司宣传片还是在线教育内容&#xff0c;视频剪辑都扮演着重要角色。对于初学者来说&#xff0c;视频剪辑可能看起来有些复杂&#xff0c;但掌握了正确的步骤和技巧后&#xff0c;你会发现它其实并…

共享WiFi项目加盟骗局:共享WiFi贴码收益真的月入过万?

如今每个人的手机都是智能手机&#xff0c;我们几乎随时随地都需要网络的陪伴。而随着共享经济的概念深入人心&#xff0c;一种名为“共享WiFi贴码”的新兴事物逐渐走入了我们的视线。据说通过这种方式&#xff0c;人们可以实现轻资产创业&#xff0c;甚至有人声称能借此达到月…

HTTPS对于网站到底价值几何?

现在HTTPS基本上已经是网站的标配了&#xff0c;很少会遇到单纯使用HTTP的网站。但是十年前这还是另一番景象&#xff0c;当时只有几家大型互联网公司的网站会使用HTTPS&#xff0c;大部分使用的都还是简单的HTTP&#xff0c;这一切是怎么发生的呢&#xff1f; 为什么要把网站…

crossover不能生成容器 无法创建容器怎么办

CrossOver不能生成容器&#xff0c;我们应该先了解什么是容器&#xff0c;容器是盛放类虚拟机——CrossOver在macOS系统和Linux系统下载的win版软件的器皿。无法创建容器怎么办&#xff1f;无法创建多数情况是macOS系统与CrossOver不兼容所造成的。 首先&#xff0c;我们将介绍…

Elasticsearch中对文章进行索引和查重

解决思路 要在Elasticsearch中对文章进行索引和查重&#xff0c;可以按照以下步骤操作&#xff1a; 安装Elasticsearch并启动服务。 安装Python的Elasticsearch客户端库&#xff0c;可以使用pip install elasticsearch命令进行安装。 编写Python代码&#xff0c;使用Elastic…

WebDAV之π-Disk派盘 + 溯记

“溯记”是一款提供丰富功能的时间轴日记应用,旨在帮助用户记录生活中的碎片化想法和事件,并提供便捷的回顾和管理功能。根据您提供的描述,这款应用具有丰富的特性,包括时间轴浏览、多媒体支持、实时存储、模糊搜索、日历视图、故事关联和随机回溯。这些功能将帮助用户记录…

【如何在本地安装Llama 3,坐好30秒!稳的很!!】

如何在本地安装Llama 3&#xff0c;30秒闪速教程 点击 Ollama官网 点击对应系统内容进行下载 解压后打开文件: 双击后打开 复制 打开CMD 窗口终端 复制黏贴 ollama run llama3 等下载完成 OK&#xff0c;安装完成&#xff01; 输入问题&#xff0c;愉快玩耍&#xff01; …

俄罗斯副总理暗示欧佩克+或增加原油产量,亚洲早盘油价小幅下跌

在俄罗斯副总理亚历山大诺瓦克暗示欧佩克可能采取行动增加原油产量后&#xff0c;亚洲早盘的油价出现小幅下跌。这一消息引起了市场对原油供给增加的担忧&#xff0c;导致油价走低。 City Index和FOREX.com的市场分析师Fawad Razaqzada表示&#xff0c;虽然原油价格在技术上尚…