PaddleOCR对于手写符号识别,从零开始搭建(包括期间遇到的所有问题)

2023-11-01

需求:需要对手写图片进行识别 勾,叉,圈,识别成对于的 v,x,o 其他的符号识别成 e

搭建环境: win10 gpu模式(用cpu搭建过一版,但是cpu训练太慢,搭建cpu期间的问题比gpu问题的少)

使用gpu的需要有一块N卡(英伟达)。我使用的是2060s,显卡算力需要超过3.5。( 第一次训练使 用i5—1135G7 cpu模式 需要两天多时间,第二次训练使用2060s 需要两个小时)

python环境:3.7

cuda:11.6

cudnn:8.8.0.121

pycharm:2020.1.5

pip也要更新到最新版本

安装PaddleOCR前,需要把环境先搭建好

官方代码库(gitee)PaddleOCR: 基于飞桨的OCR工具库,包含总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别、竖排文本识别、长文本识别。同时支持多种文本检测、文本识别的训练算法。

过程:本次识别模型建立,使用识别素材850张图片,验证素材446张图片,通过PaddleOCR算法成功建立了一个手写符号识别模型。

PaddlePaddle安装

安装PaddleORC前,需要先安装好PaddlePaddle

安装地址:开始使用_飞桨-源于产业实践的开源深度学习平台

我东西下载完后,期间验证的时候报错了,错误没有截图

主要问题是 显卡驱动——》cuda驱动——》cudnn驱动,三个的版本关系没有对应好。

首先要确定显卡的驱动,然后根据显卡驱动来选择cuda的驱动,然后根据cuda驱动选择cudnn驱动。

PaddleOCR安装

PaddlePaddle安装好后,可以安装PaddleOCR了

地址doc/doc_ch/quickstart.md · PaddlePaddle/PaddleOCR - Gitee.com

(如果是win搭建的话,图中的python3命令都可以换成python)

其中 win运行这个命令,下载一堆东西后,会报错的,原因有些包下载不下来。官方提供的额外安装包也不够用

主要是“lanms_neo-1.0.2”这个包下载不下来

可以手动下载,解压,地址:

https://download.csdn.net/download/kobe24livemvp/87369709?utm_medium=distribute.pc_relevant_download.none-task-download-2~default~OPENSEARCH~Rate-2-87369709-download-87429869.pc_dl_relevant_base1&depth_1-utm_source=distribute.pc_relevant_download.none-task-download-2~default~OPENSEARCH~Rate-2-87369709-download-87429869.pc_dl_relevant_base1&dest=https%3A%2F%2Fdownload.csdn.net%2Fdownload%2Fkobe24livemvp%2F87369709&spm=1003.2020.3001.6616.2

下载下来是whI结尾的文件,可以把后缀名改成zip压缩包的形式,进行解压。解压地址:python安装包里的/lib/sit-packages里面

其他的包应该就可以手动pip进行下载了,如果还是不行。可能需要下载C++的环境,参考:

解决PaddleOCR安装lanms-neo时报错,Could not build wheels for lanms-neo ..._樱阙诗汀的博客-CSDN博客

然后就可以下载官方的图片包了,切换路径后,识别图片

我当时这里出现了问题,原因是没有装cudnn和cuda驱动里少了zlibwapi。zlibwapi需要手动进行下载然后放入cuda里面

到此图片就可以正常识别了。

模型训练

地址

doc/doc_ch/recognition.md · PaddlePaddle/PaddleOCR - Gitee.com

首先建立素材库,文档中给出来的素材库结构不正确,和代码中的不对应。

这个需要注意

我是训练新的内容,所以我这边要新建立一个字典。

我是将原先的字典复制一个,然后在这个字典上修改

然后还修改了这个文件的地址路径,后续用的上(应该,忘了为啥改这里了):

启动训练:

训练模型自己下载下来放在pretrain_models包里然后解压就行了,地址:https://paddleocr.bj.bcebos.com/PP-OCRv3/english/en_PP-OCRv3_rec_train.tar

我这边是进行单卡训练的:

python tools/train.py -c configs/rec/PP-OCRv3/en_PP-OCRv3_rec.yml -o Global.pretrained_model=./pretrain_models/en_PP-OCRv3_rec_train/best_accuracy

但是单卡训练应该要改参数,文档中没有说,改之前,我一直训练不成功

batch_size_per_card: 128
num_workers: 4

改成了:

batch_size_per_card: 64
num_workers: 1

然后就跑起来了,跑了两个小时,模型生成了出来

生成的模板在/output/v3_en_mobile里面,best_accuracy表示最好的模型

然后用这个命令,导出模型: python tools/export_model.py -c configs/rec/PP-OCRv3/en_PP-OCRv3_rec.yml -o Global.pretrained_model=./output/v3_en_mobile/best_accuracy Global.save_inference_dir=./inference/en_PP-OCRv3_rec/

导出的模型在/inference/en_PP-OCRv3_rec里面

然后新建测试图片集合:

用命令进行测试: python tools/infer/predict_rec.py --image_dir="./ppocr_img/imgs_en/1.jpg" --rec_model_dir="./inference/en_PP-OCRv3_rec" --rec_image_shape="3, 48, 320" --rec_char_dict_path="ppocr/utils/en_dict.txt"

我这边放了50张图片进行测试,前30张为较正常的勾,叉,圈。全部识别出来。后20张为离谱的勾,叉,圈,识别出来17张,错了3张。

图片名称

真实符号

检测符号

确认率

识别图片

1

v

v

0.99

2

v

v

0.99

3

v

v

0.99

4

v

v

0.81

5

v

v

0.99

6

v

v

0.99

7

v

v

0.99

8

v

v

0.99

9

v

v

0.98

10

v

v

0.99

11

x

x

0.99

12

x

x

0.99

13

x

x

0.69

14

x

x

0.99

15

x

x

0.99

16

x

x

0.98

17

x

x

0.99

18

x

x

0.99

19

x

x

0.99

20

x

x

0.99

21

o

o

0.99

22

o

o

0.99

23

o

o

0.99

24

o

o

0.99

25

o

o

0.99

26

o

o

0.99

27

o

o

0.99

28

o

o

0.99

29

o

o

0.99

30

o

o

0.99

31

e

e

0.94

32

e

e

0.80

33

x

x

0.99

34

x

e

0.99

35

e

e

0.99

36

v

v

0.99

37

e

e

0.99

38

e

e

0.87

39

e

o

0.42

40

o

o

0.99

41

o

o

0.99

42

v

v

0.59

43

e

e

0.99

44

e

e

0.99

45

e

e

0.99

46

o

o

0.99

47

e

e

0.96

48

v

v

0.97

49

x

x

0.99

50

e

o

0.98

注:标色的为识别错误符号。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PaddleOCR对于手写符号识别,从零开始搭建(包括期间遇到的所有问题) 的相关文章

  • xlrd.biffh.XLRDError:Excel xlsx 文件;不支持[重复]

    这个问题在这里已经有答案了 我正在尝试使用读取启用宏的 Excel 工作表pandas read excel与 xlrd 库 它在本地运行良好 但是当我尝试将其推送到 PCF 时 我收到此错误 2020 12 11T21 09 53 441
  • Python从int到string的快速转换

    我正在用 python 求解大量阶乘 并发现当我完成计算阶乘时 需要相同的时间才能转换为字符串以保存到文件中 我试图找到一种将 int 转换为字符串的快速方法 我将举一个计算和 int 转换时间的例子 我正在使用通用的 a str a 但感
  • Tweepy StreamListener 到 CSV

    我是 python 新手 我正在尝试开发一个应用程序 使用 Tweepy 和 Streaming API 从 Twitter 检索数据并将数据转换为 CSV 文件 问题是此代码不会创建输出 CSV 文件 也许是因为我应该将代码设置为在实现例
  • 当我在 Pandas 中使用 df.corr 时,我的一些列丢失了

    这是我的代码 import numpy as np import pandas as pd import seaborn as sns import matplotlib pyplot as plt data pd read csv dea
  • 登录网站并使用 python 请求下载文件

    我有一个带有 HTML 表单的网站 登录后 它会将我带到 start php 站点 然后将我重定向到overview php 我想从该服务器下载文件 当我单击 ZIP 文件的下载链接时 链接后面的地址是 getimage php path
  • 可以用 Django 制作移动应用程序吗?

    我想知道我是否可以在我的网站上使用 Django 代码 并以某种方式在移动应用程序 Flutter 等框架中使用它 那么是否可以使用我现在拥有的 Django 后端并在移动应用程序中使用它 所以就像models views etc 是的 有
  • 如何将 self 传递给装饰器?

    我该如何通过self key下面进入装饰器 class CacheMix object def init self args kwargs super CacheMix self init args kwargs key func Cons
  • Apache Spark 中的高效字符串匹配

    我使用 OCR 工具从屏幕截图中提取文本 每个大约 1 5 句话 然而 当手动验证提取的文本时 我注意到时不时会出现一些错误 鉴于文本 你好 我真的很喜欢 Spark 我注意到 1 像 I 和 l 这样的字母被 替换 2 表情符号未被正确提
  • PySide6.1 与 matplotlib 3.4 不兼容

    当我只安装PySide6时 GUI程序运行良好 但是一旦我安装了matplotlib及其依赖包 包括pyqt5 则GUI程序将无法运行并输出以下错误消息 This application failed to start because no
  • 为什么我无法在 Mac OS X Terminal.app 上的 Python 解释器中显示 unicode 字符?

    如果我尝试粘贴 unicode 字符 例如中间的点 在我的 python 解释器中它什么也不做 我在 Mac OS X 上使用 Terminal app 当我只是在 bash 中时 我没有遇到任何问题 但在解释器中 python Pytho
  • 如何使用 Django 项目设置 SQLite?

    我已阅读 Django 文档 仅供参考 https docs djangoproject com en 1 3 intro tutorial01 https docs djangoproject com en 1 3 intro tutor
  • django-admin.py makemessages 不起作用

    我正在尝试翻译一个字符串 load i18n trans Well Hello there how are you to Hola amigo que tal 我的 settings py 文件有这样的内容 LOCALE PATHS os
  • 将文本注释到轴并对齐为圆

    我正在尝试在轴上绘制文本并将该文本与圆对齐 更准确地说 有一些具有不同坐标 x y 的点位于该圆内 并使用以下命令创建 ax scatter x y s 100 我想用圆圈连接并标记每个点 Cnameb 文本的坐标由 xp yp 定义 因此
  • Python 类型安全吗?

    根据维基百科 https en wikipedia org wiki Type system Type safety and memory safety 如果一种语言不允许违反类型系统规则的操作或转换 计算机科学家就认为该语言是 类型安全的
  • Python 声音(“铃声”)

    我想让一个 python 程序在完成任务时通过发出嘟嘟声来提醒我 目前 我使用import os然后使用命令行语音程序说 进程完成 我更愿意它是一个简单的 铃 我知道有一个函数可以用于Cocoa apps NSBeep 但我认为这与此没有太
  • 无法在 python 3.8 上将带有 webapp 的 python 部署到 azure

    我正在尝试使用部署一个测试项目Flask使用以下方法将框架迁移到 Azure 云中Azure CLI https learn microsoft com en us azure app service containers quicksta
  • 检测 IDLE 的存在/如何判断 __file__ 是否未设置

    我有一个脚本需要使用 file 所以我了解到 IDLE 没有设置这个 有没有办法从我的脚本中检测到 IDLE 的存在 if file not in globals file is not set 如果你想做一些特别的事情 file 未设置
  • 如何使用 matplotlib 为圆柱体的每个单独面添加颜色

    我正在尝试为圆柱体的每个面着色 但是我不确定如何进行 我尝试了以下方法 for i in range 10 col append for i in range 10 for j in range 20 col i append plt cm
  • Python 通过从现有 csv 文件中过滤选定的行来写入新的 csv 文件

    只是一个问题 我试图将 csv 文件中的选定行写入新的 csv 文件 但出现错误 我试图读取的 test csv 文件是这样的 两列 2013 9 1 2013 10 2 2013 11 3 2013 12 4 2014 1 5 2014
  • 如何循环遍历字典列表并打印特定键的值?

    我是 Python 新手 有一个问题 我知道这是一个非常简单的问题 运行Python 3 4 我有一个需要迭代并提取特定信息的列表 以下是列表 称为部分 的示例 已截断 数千个项目 state DEAD id phwl type name

随机推荐

  • SSM商城项目实战:物流管理

    SSM商城项目实战 物流管理 在SSM商城项目中 物流管理是一个重要的功能模块 通过物流管理 可以实现订单的配送 运输和签收等操作 本文将介绍如何在SSM商城项目中实现物流管理功能的思路和步骤代码 实现SSM商城项目中物流管理的思路总结如下
  • ORACLE 11G R2 DGBROKER 之TAF

    ORACLE 11G R2 DGBROKER 之TAF 经过前面的实验我们已经搞定了服务器端的SWITCH OVER 和FAST FAILE OVER 那现在我们来搞定客户端或者是应用服务器端的自动切换到合适的数据库服务器上 当主数据库无法
  • 向量化执行引擎框架 Gluten 正式开源!

    近日举办的 Databricks Data AI Summit 2022 上 来自 Intel 的陈韦廷和来自 Kyligence 的张智超共同分享了 Intel 和 Kyligence 两家企业自 2021 年合作共建的全新开源项目 Gl
  • keil中出现了莫名其妙的error: #18: expected a “)“错误

    今天在使用keil进行编程时 突然出现了error 18 expected a 的错误 查看出现错误的地方时却发现并没有出现错误 最终发现 原因 使用sprintf时 表示的双引号未使用转义字符 解决方法 在要表示的双引号前添加转义字符
  • 安装Anaconda/Python3.9/Tensorflow

    安装Anaconda Python3 9 Tensorflow 安装Anaconda 官网安装 开梯子 Download即可 打开下载好的安装包 按照提示 一路 Next 选择安装路径 这里官方并没有推荐自动配置环境变量 自动或手动配置均可
  • 【python量化】将极限学习机(Extreme Learning Machine)用于股票价格预测

    写在前面 下面的这篇文章首先将介绍极限学习机 Extreme Learning Machine ELM 的基本原理 然后通过python实现ELM 并将其用于股票价格预测当中 原代码在文末进行获取 1 极限学习机的基本原理 极限学习机 Ex
  • scrapy爬取链接

    近期因为工作需要 开始学习和写爬虫 学习到了很多内容 就整理了一下发上来 需求 这里爬虫的目的是检测网站的漏洞 因此希望做成类似于burpSuit的历史记录一样的 初步需求是简单地爬取网站的链接 去重 尝试绕过反爬虫 更进一步的是希望像bu
  • React既在constructor内部写state又在外部写了state的情况

    React既在constructor内部写state又在外部写了state的情况下 state到底是里面生效还是外面生效 查了一下 没有说这俩同时的帖子 所以自己验证的时候第一个想法是考虑代码的顺序 还有constructor的特殊性 看了
  • 今天在做微信分享功能的时候,遇到项目部署后出现 config:invalid url domain 弹窗提示的解决办法

    产生此错误的原因是微信公众号后台配置的微信安全网址跟当前页面的域名不一致导致的 要解决这种情况就需要在公众号的后台设置js接口安全域名 打开微信公众平台 把MP verify sfpa0ES1106ZRXnp txt 这个文件放到你的服务器
  • Codeforces 808G(KMP+DP)

    转移的时候要注意对于S 0 i 后缀的最长匹配 如果最长匹配为整个T串 那么就可以开始转移 转移时新出现的T可以从上一个完整的T的公共前缀的next转移加1过来 这就相当于用上一个T中的后缀作为当前T的前缀 不断求NEXT求出一个最大的转移
  • 蛇形矩阵/算法

    常见的蛇形矩阵 1 回性蛇形矩阵 2 上三角s型蛇形矩阵 3 完整s型蛇形矩阵 回型蛇形矩阵 输入数据 x是作为横坐标起点 y纵坐标起点 思路 四个方向右下左上 顺时针填进数字 每一次都可以用while循环一行一列依次填写 每次判断下要填的
  • Android ANR问题定位 实战

    在Android开发过程中 ANR问题可能是非常常见的一个问题 下面我分享一个亲身经历的ANR问题以及解决方法 1 发生ANR 必然会有log日志 在系统的data anr目录下 我们将所有的anr log日志pull出来 由于权限的原因
  • Lua实现定时器

    Lua实现定时器 An highlighted block local index 1 local delays local elasped 0 local function SetTimeout delay fn table insert
  • Dynamics CRM2011自定义框架解决方案

    Dynamics CRM2011自定义框架解决方案 解决方案文件下载 一 目的 许多客户习惯之前系统自定义开发的页面 操作习惯或界面风格 但使用了Dynamics CRM2011后只能使用产品自带的风格 为解决此类问题提供了此解决方案 在C
  • 阿里巴巴为什么不用 ZooKeeper 做服务发现?

    转载自 https developer aliyun com article 601745 历史的迷思 站在未来的路口 回望历史的迷途 常常会很有意思 因为我们会不经意地兴起疯狂的念头 例如如果当年某事提前发生了 而另外一件事又没有发生会怎
  • 面向对象的程序设计思想

    面向对象是当今主流的一种程序设计理念和设计规范 它取代了早期的 结构化 过程设计开发技术 主张一切皆为对象 程序以人的思维模式去解决问题 面向对像的程序是由类组成的 每个类包含对用户公开的特定功能部分和隐藏的实现部分 面向对象 Object
  • 人工智能练习题 + 知识点汇总(期末复习版)

    目录 第一章 人工智能绪论 第二章 知识与谓词 第三章 谓词与自然演绎推理 第四章 语义网表示法和框架表示法 第五章 归结原理 第六章 置换和合一 第七章 定理证明和问题求解 第八章 状态空间法和问题归约法 第九章 启发式搜索 第十章 与或
  • vite+element-plus项目基础搭建

    vite element plus项目基础搭建 1 引言 2 为什么是Vite 3 为什么是Element plus 4 项目搭建 5 参考文献 1 引言 其实本来不应该写这种CSDN比较多的博文的 主要是因为比较多 然后想解决问题的时候有
  • 设置ssh登录Linux服务器和git上ssh的使用

    设置ssh登录Linux服务器 前言 环境 配置 客户端 服务器端 可能碰到的问题 使用密钥命令登录依然提示输入密码 git如何使用ssh key 前言 我们在远程Linux服务器或者使用git的时候都需要输入密码登录后进行操作 在进行频繁
  • PaddleOCR对于手写符号识别,从零开始搭建(包括期间遇到的所有问题)

    需求 需要对手写图片进行识别 勾 叉 圈 识别成对于的 v x o 其他的符号识别成 e 搭建环境 win10 gpu模式 用cpu搭建过一版 但是cpu训练太慢 搭建cpu期间的问题比gpu问题的少 使用gpu的需要有一块N卡 英伟达 我