Paddle OCR Win 11下的安装和简单使用教程

news2024/11/17 21:17:53

Paddle OCR Win 11下的安装和简单使用教程

对于中文的识别,可以考虑直接使用Paddle OCR,识别准确率和部署都相对比较方便。

环境搭建

目前PaddlePaddle 发布到v2.4,先下载paddlepaddle,再下载paddleocr。根据自己设备操作系统进行下载安装。paddle官网地址:https://www.paddlepaddle.org.cn

在这里插入图片描述

pip install paddlepaddle-gpu==2.4.2.post112 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html
如果需要CPU版本:
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple

paddleocr 推荐环境

PaddlePaddle >= 2.1.2

Python 3.7

CUDA 10.1 / CUDA 10.2

CUDNN 7.6

可参考paddle官方出的环境搭建进行,地址:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/environment.md

安装paddle ocr
pip install paddleocr -i https://mirror.baidu.com/pypi/simple

对于直接pip shapely库可能出现的问题[winRrror 126],建议下载shapely安装包完成安装。地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely

使用教程

在环境搭建好之后,就可以愉快的直接使用了。话说,两年没用paddle,跟torch越来越像了。

import paddle
import paddleocr
from paddleocr import PaddleOCR
import numpy as np
import cv2
import matplotlib.pyplot as plt
import os
from PIL import Image
import glob
import random
import re
import json

print(paddle.__version__)
#2.4.1
print(paddleocr.__version__)
#2.6.1.3

使用PaddleOCR,默认使用的是PP-OCRv3,轻量级模型。

源代码:
SUPPORT_DET_MODEL = ['DB']
VERSION = '2.6.1.0'
SUPPORT_REC_MODEL = ['CRNN', 'SVTR_LCNet']
BASE_DIR = os.path.expanduser("~/.paddleocr/")

DEFAULT_OCR_MODEL_VERSION = 'PP-OCRv3'

OCR model用的PP-OCRv3,根据论文,检测用的DB,识别用的SVTR。相比PP-OCRv2,模型框架如下图:

在这里插入图片描述

ocr = PaddleOCR(use_angles_cls=True, use_gpu=False)

def draw_img(img_path,boxes):
    save_root = 'data/resocr/'
    img_name = img_path.split('\\')[1]
    img = cv2.imread(img_path)
    for box in boxes:
        box = np.reshape(np.array(box),[-1,1,2]).astype(np.int64)
        img = cv2.polylines(np.array(img), [box], True, (255,0,0),2)
    plt.figure(figsize=(10,10))
    save_file = save_root+img_name
    plt.imshow(img)
    plt.savefig(save_file)
    
imgp = 'data\\idcard1.png'
print(ocr.args)
res = ocr.ocr(imgp)
print(res)
boxes = []
texts = []
for j in range(len(res[0])):
    boxes.append(res[0][j][0])
    texts.append(res[0][j][1][0])
draw_img(imgp,boxes)

网上随便找了一张奥巴马身份证,得到的结果如下:(写了才发现,包自带了一个draw_ocr的函数)

在这里插入图片描述

部分结果:
[[[[[350.0, 16.0], [819.0, 16.0], [819.0, 58.0], [350.0, 58.0]],
   ('上海增值税电子普通发票', 0.9431300759315491)],
  [[[864.0, 38.0], [1060.0, 41.0], [1060.0, 62.0], [864.0, 59.0]],
   ('发票代码:031001600311', 0.9889101982116699)],
  [[[864.0, 71.0], [1024.0, 71.0], [1024.0, 92.0], [864.0, 92.0]],
   ('发票号码:81471594', 0.9445592164993286)],
  [[[864.0, 102.0], [1074.0, 98.0], [1074.0, 119.0], [864.0, 123.0]],
   ('开票日期:2017年11月13日', 0.9694705009460449)],
  [[[535.0, 115.0], [633.0, 112.0], [634.0, 139.0], [536.0, 142.0]],
   ('上海市税务局', 0.9940652847290039)],
  [[[6.0, 134.0], [201.0, 138.0], [201.0, 155.0], [6.0, 151.0]],
   ('机器编号:499099774351', 0.9102509021759033)],
  [[[864.0, 132.0], [1164.0, 129.0], [1164.0, 150.0], [864.0, 153.0]],
   ('校验码:01519962196503160071', 0.9772385954856873)]]]

可以看到基本该拿的信息都拿了。可以通过调节超参对检测框阈值和比例进行调节。根据utility.py参数初始化设置如下:

 # DB parmas
 parser.add_argument("--det_db_thresh", type=float, default=0.3) #二值化输出图的阈值
 parser.add_argument("--det_db_box_thresh", type=float, default=0.6) #过滤检测框阈值
 parser.add_argument("--det_db_unclip_ratio", type=float, default=1.5) #检测框扩张的系数
ocr = PaddleOCR(use_angles_cls=True, use_gpu=False, det_db_thresh=0.3,det_db_unclip_ratio=2.5, det_db_box_thresh=0.8)
更改参数后看看结果:

过滤掉了一些检测框。

在这里插入图片描述

参数可以根据自己所处的任务进行调节,也可以选择其他模型进行增加识别率。

paddle现在跟torch很像,也就减少了学习成本。

官方出了一个Dive into OCR的教程,有点儿狗的是,中文版要进群后才能领取。英文版则大方给出来了,地址如下:https://paddleocr.bj.bcebos.com/ebook/Dive_into_OCR.pdf

在这里插入图片描述

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

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

相关文章

代码随想录算法训练营第四十天 | 343. 整数拆分,96.不同的二叉搜索树

一、参考资料整数拆分https://programmercarl.com/0343.%E6%95%B4%E6%95%B0%E6%8B%86%E5%88%86.html 视频讲解:https://www.bilibili.com/video/BV1Mg411q7YJ不同的二叉搜索树https://programmercarl.com/0096.%E4%B8%8D%E5%90%8C%E7%9A%84%E4%BA%8C%E5%8F%89%E6%90…

Win10任务栏卡死的几个处理方法 附小工具

问题:Win10任务栏卡死 最近经常碰到用户系统任务栏卡死的现象,桌面上的图标可以正常打开,点击任务栏就疯狂的转圈,感觉像死机状态,等半天都没啥用,一般只能强制关机重启,我不建议这样操作&…

机器学习算法原理——感知机

感知机 输入空间:X⊆Rn\mathcal X\subseteq{\bf R^n}X⊆Rn ;输入:x(x(1),x(2),⋅⋅⋅,x(n))T∈Xx\left(x^{(1)},x^{(2)},\cdot\cdot\cdot,x^{(n)}\right)^{T}\in{\mathcal{X}}x(x(1),x(2),⋅⋅⋅,x(n))T∈X 输出空间:Y{1,−1}{\…

杂谈:created中两次数据修改,会触发几次页面更新?

面试题&#xff1a;created生命周期中两次修改数据&#xff0c;会触发几次页面更新&#xff1f; 一、同步的 先举个简单的同步的例子&#xff1a; new Vue({el: "#app",template: <div><div>{{count}}</div></div>,data() {return {count…

[架构之路-124]-《软考-系统架构设计师》-操作系统-3-操作系统原理 - IO设备、微内核、嵌入式系统

第11章 操作系统第5节 设备管理/文件管理&#xff1a;IO5.1 文件管理5.2 IO设备管理&#xff08;内存与IO设备之间&#xff09;数据传输控制是指如何在内存和IO硬件设备之间传输数据&#xff0c;即&#xff1a;设备何时空闲&#xff1f;设备何时完成数据的传输&#xff1f;SPOO…

vue实战-深入响应式数据原理

本文将带大家快速过一遍Vue数据响应式原理&#xff0c;解析源码&#xff0c;学习设计思路&#xff0c;循序渐进。 数据初始化 _init 在我们执行new Vue创建实例时&#xff0c;会调用如下构造函数&#xff0c;在该函数内部调用this._init(options)。 import { initMixin } f…

代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素

Leetcode 704 二分查找题目链接&#xff1a;704二分查找介绍给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。思路先看看一个…

MyBatis源码分析(三)SqlSession的执行主流程

文章目录一、熟悉主要接口二、SqlSession的获取1、通过数据源获取SqlSession三、Mapper的获取与代理1、从SqlSession获取Mapper2、执行Mapper方法前准备逻辑3、SqlCommand的创建4、构造MethodSignature四、执行Mapper的核心方法1、执行Mapper的方法逻辑五、简单SELECT处理过程1…

【蓝桥杯试题】 递归实现指数型枚举例题

&#x1f483;&#x1f3fc; 本人简介&#xff1a;男 &#x1f476;&#x1f3fc; 年龄&#xff1a;18 &#x1f91e; 作者&#xff1a;那就叫我亮亮叭 &#x1f4d5; 专栏&#xff1a;蓝桥杯试题 文章目录1. 题目描述2. 思路解释2.1 时间复杂度2.2 递归3. 代码展示最后&#x…

超级简单又功能强大还免费的电路仿真软件

设计电路的时候经常需要进行一些电路仿真。常用的仿真软件很多&#xff0c;由于大学里经常使用Multisim作为教学软件&#xff0c;所以基本上所有从事硬件开发的人都听过或者用过Multisim这个软件。这个软件最大的好处就是简单直观&#xff0c;可以在自己的PC上搭建电路并使用软…

gdb常用命令详解

gdb常用调试命令概览和说明 run命令 在默认情况下&#xff0c;gdbfilename只是attach到一个调试文件&#xff0c;并没有启动这个程序&#xff0c;我们需要输入run命令启动这个程序&#xff08;run命令被简写成r&#xff09;。如果程序已经启动&#xff0c;则再次输入 run 命令…

从面试官角度告诉你高级性能测试工程师面试必问的十大问题

目录 1、介绍下最近做过的项目&#xff0c;背景、预期指标、系统架构、场景设计及遇到的性能问题&#xff0c;定位分析及优化&#xff1b; 2、项目处于什么阶段适合性能测试介入&#xff0c;原因是什么&#xff1f; 3、性能测试场景设计要考虑哪些因素&#xff1f; 4、对于一…

SAP MM学习笔记4-在库类型都有哪些,在库类型有哪些控制点

SAP MM模块中的在库类型有3种&#xff1a; 1&#xff0c;利用可能在库 (非限制使用库存) 2&#xff0c;品质检查中在库 &#xff08;质检库存&#xff09; 3&#xff0c;保留在库&#xff08;已冻结库存&#xff09; 这3种在库标识该物料的状态&#xff0c;是否可用。 这3种…

bugku 安全加固1

js劫持 根据题目所给出的ip访问原本应该进入一个学院的二手交易网站 但是实际进入了一个博客 flag需要去除最后的斜杆 黑客首次webshell密码 利用所给的账户密码进行登录进入www目录并且进行备份 #我们对网站进行备份 cd /var/www && tar -czvf /tmp/html.tgz html …

Kubernetes之存储管理(上)

数据持久化的主要方式简介 pod是临时的&#xff0c;pod中的数据随着pod生命周期的结束也会被一起删除。 pod想实现数据持久化主要有以下几种方式&#xff1a; emptyDir&#xff1a;类似于docker run –v /xx&#xff0c;在物理机里随机产生一个目录(这个目录其实挂载的是物理…

墨天轮2022年度数据库获奖名单

2022年&#xff0c;国家相继从高位部署、省级试点布局、地市重点深入三个维度&#xff0c;颁布了多项中国数据库行业发展的利好政策。但是我们也能清晰地看到&#xff0c;中国数据库行业发展之路道阻且长&#xff0c;而道路上的“拦路虎”之一则是生态。中国数据库的发展需要多…

如何创建发布新品上市新闻稿

推出新产品对任何企业来说都是一个激动人心的时刻&#xff0c;但向潜在客户宣传并围绕您的新产品引起轰动也可能是一个挑战。最有效的方法之一就是通过发布新品上市新闻稿。精心制作的新闻稿可以帮助我们通过媒体报道、吸引并在目标受众中引起关注。下面&#xff0c;我们将讲述…

计算机组成原理4小时速成2:计算机运算方法,原码,反码,补码,移位,加法减法,乘除法

计算机组成原理4小时速成2&#xff1a;计算机运算方法&#xff0c;原码&#xff0c;反码&#xff0c;补码&#xff0c;移位&#xff0c;加法减法&#xff0c;乘除法 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多…

OpenCV入门(二)快速学会OpenCV1图像基本操作

OpenCV入门&#xff08;一&#xff09;快速学会OpenCV1图像基本操作 不讲大道理&#xff0c;直接上干货。操作起来。 众所周知&#xff0c;OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大。今天就从读取图片&#xff0c;显示图片&#xff0c;输出图片信息和简单的…

记录自己遇到的关于Hashmap的面试题

一.麻烦讲述一下Hashmap的扩容原理 jdk1.8中的hashmap扩容原理 1.put流程图 首先贴一张图(图片来源于传送门&#xff09;&#xff0c;多谢大佬的美图&#xff0c;此图已经完美的描述了put的整个流程&#xff0c;我也就不想自己画了&#xff0c;嘿嘿: 2.hashmap中几个比较重…