当前位置: 首页 > news >正文

windows系统搭建OCR半自动标注工具PaddleOCR

深度学习


文章目录

  • 深度学习
  • 前言
  • 一、环境搭建准备
    • 方式1:安装Anaconda搭建
      • 1. Anaconda下载地址: [点击](https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?C=M&O=D)
      • 2. 创建新的conda环境
    • 方式2. 直接安装python
  • 二、安装CPU版本
    • 1. 安装PaddlePaddle
    • 2、安装PaddleOCR whl包
      • 提示:
    • 验证安装
    • 如何卸载
  • 三、安装和运行标注工具PPOCRLabel
    • 1. 获取源代码
    • 2. 安装运行
    • 3. 使用PPOCRLabel
  • 问题汇总


前言

PaddleOCR是一个基于飞桨开发的OCR(Optical Character Recognition,光学字符识别)系统。其技术体系包括文字检测、文字识别、文本方向检测和图像处理等模块。

一、环境搭建准备

Windows和Mac用户推荐使用Anaconda搭建Python环境,Linux用户建议使用docker搭建Python环境。
已搭建过查看环境:
确认python的版本是否满足要求:python --version
确认 pip 的版本是否满足要求:python -m ensurepip
同时查看:python -m pip --version
注:pip 版本为 20.2.2 或更高版本

方式1:安装Anaconda搭建

python集成环境Anaconda工具包,安装完Anaconda后,可以安装python环境,以及numpy等所需的工具包环境

1. Anaconda下载地址: 点击

默认安装位置为C盘,建议将安装位置更改到D盘,勾选conda加入环境变量,忽略警告,
安装完成后,打开终端并创建conda环境:左下角Windows Start Menu -> Anaconda3 -> Anaconda Prompt启动控制台:

2. 创建新的conda环境

在命令行输入以下命令(此处为加速下载,使用清华源)

conda create --name paddle_env python=3.10 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

该命令会创建1个名为paddle_env、python版本为3.10的可执行环境,根据网络状态,需要花费一段时间。

方式2. 直接安装python

python下载地址:https://www.python.org/downloads/

点击Download后进入版本界面,根据系统选择合适的版本,

windows installer:exe可执行文件,安装比较方便。(windows下可执行文件一般是exe,msi等);

windows embeddable package:

注:安装Python尽量选择最新版本的上一版本,本人使用最新版各种出错,无奈卸载重新下载另一版本才成功。

安装Python时记得勾选Add Python To Path。

安装完成进入Windows终端测试Python是否安装成功:若出现"不是内部或外部命令,也不是可运行的程序", 请及时检查环境变量中是否存在 python安装的路径。
手动添加环境变量:右键【此电脑】属性–高级系统设置----高级–环境变量

二、安装CPU版本

1. 安装PaddlePaddle

执行以下命令(速度快):

python -m pip install paddlepaddle==2.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

或者

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

速度慢:

python3 -m pip install paddlepaddle==2.6.0 -i https://mirror.baidu.com/pypi/simple

如果提示升级pip,执行以下命令(三选一):

python -m pip install --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip

注:请确认需要安装 PaddlePaddle 的 Python 是您预期的位置,因为您计算机可能有多个 Python。根据您的环境您可能需要将说明中所有命令行中的 python 替换为具体的 Python 路径。

2、安装PaddleOCR whl包

执行以下命令:推荐使用2.6.0以上版本(最新版是2.7,所以我写的是大于版本2.6.0)

pip install "paddleocr>=2.6.0"

对于Windows环境用户:直接通过pip安装的shapely库可能出现“找不到指定模块”的问题。建议下载shapely安装包完成安装。
1.下载安装whl以及确定Python适配版本(请自行搜索)
2.将 wheel 包下载到本地:

python -m pip download paddlepaddle==2.6.0 -f https://www.paddlepaddle.org.cn/whl/windows/openblas/avx/stable.html --no-index --no-deps

3.再本地安装:

python -m pip install [name].whl    #([name]为 wheel 包名称)

提示:

如果同时使用whl包安装了paddleocr,其优先级大于通过paddleocr.py调用PaddleOCR类,whl包未更新时会导致程序异常。
如果出现 module ‘cv2’ has no attribute 'INTER_NEAREST’错误,需要首先删除所有opencv相关包,然后重新安装4.2.0.32版本的headless opencv:pip install opencv-contrib-python-headless==4.2.0.32。

验证安装

需要先在终端里打开python,在Python在运行

import paddle
paddle.utils.run_check()

如果出现PaddlePaddle is installed successfully!,即成功。
注:需要先在终端里运行python,然后再输入运行。

如何卸载

python -m pip uninstall paddlepaddle

三、安装和运行标注工具PPOCRLabel

1. 获取源代码

PaddleOCR2.7版本:https://github.com/PaddlePaddle/PaddleOCR
在PaddleOCR2.7文件夹下打开终端运行:

pip3 install -r requirements.txt    #安装第三方依赖库

2. 安装运行

(1) 方法1:终端运行(通过whl包安装与运行)

pip install PPOCRLabel # 安装

在PaddleOCR2.7文件夹下打开终端运行

PPOCRLabel --lang ch # 启动【普通模式】,用于打【检测+识别】场景的标签
PPOCRLabel --lang ch --kie True # 启动 【KIE 模式】,用于打【检测+识别+关键字提取】场景的标签。

注:如若出现了类似反馈, ppocr WARNING: When args.layout is false, args.ocr is automatically set to false,可以忽略,能正常使用。

此后会弹出PPOCRLabel窗口。

注:通过whl包安装PPOCRLabel会自动下载paddleocr whl包,其中shapely依赖可能会出现找不到指定模块的问题。建议从https://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely下载shapely安装包完成安装。

3. 使用PPOCRLabel

1、打开文件夹:在菜单栏点击 “文件”–"打开目录"选择待标记图片的文件夹。只能选择文件夹,不能选择单个文件。
2、自动标注:点击“自动标注”,使用PP-OCR超轻量模型对图片文件名前图片状态为“X” 的图片进行自动标注。
3、手动标注:点击“矩形标注”(推荐直接在英文模式下点击键盘中的“W”),用户可对当前图片中模型未检出的部分进行手动绘制标记框。点击键盘Q,则使用多点标注模式,用户依次点击4个点后,双击左键表示标注完成。
4、注:在使用矩形标注时如果经常性闪退,建议使用多点标注,结合实际更换方法。
标记框绘制完成后,用户点击“确认”,检测框会先被预分配一个“待识别”标签,可以在框选的文字右键–重识别此区块。“待识别”内容就会更新。
5、重新识别:将图片中的所有检测画绘制/调整完成后,点击“重新识别”,PP-OCR模型会对当前图片中的所有检测框重新识别。
6、内容更改:单击识别结果,对不准确的识别结果进行手动更改。
7、确认标记:点击 “确认”,图片状态切换为“√,跳转至下一张。
8、删除:点击“删除图像”,图片将会被删除至回收站。
9、导出结果:用户可以通过菜单中“文件-导出标记结果”手动导出,同时也可以点击“文件-自动导出标记结果”开启自动导出。自动导出:点击“文件 - 自动导出标记结果”后,用户每确认过一张图片,程序自动将标记结果写入Label.txt中。若未开启此选项,则检测到用户手动确认过5张图片后进行自动导出。默认情况下自动导出功能为关闭状态。
10、手动确认过的标记将会被存放在所打开图片文件夹下的Label.txt中。在菜单栏点击 “文件”–"导出识别结果"后,会将此类图片的识别训练数据保存在crop_img文件夹下,识别标签保存在rec_gt.txt中。

Label.txt:检测标签,可直接用于PPOCR检测模型训练。用户每确认5张检测结果后,程序会进行自动写入。当用户关闭应用程序或切换文件路径后同样会进行写入。
fileState.txt:图片状态标记文件,保存当前文件夹下已经被用户手动确认过的图片名称。
Cache.cach:缓存文件,保存模型自动识别的结果。
rec_gt.txt:识别标签。可直接用于PPOCR识别模型训练。需用户手动点击菜单栏文件–导出识别结果后产生。
crop_img:识别数据。按照检测框切割后的图片。与rec_gt.txt同时产生。

注:PPOCRLabel不支持对纯中文文件名的图片进行自动标注。

提示:修改识别结果时,文字如果出现突然不能输入中文,或者输入法不出现等,建议先对已标注进行保存,然后重置界面与保存地址,退出程序,再次运行即可正常(内容少的临时解决方法:复制粘贴文字进行修改)。

问题汇总

如果标注时打框就闪退,
修改以下文件
1、D:\Python310\Lib\site-packages\PPOCRLabel\libs\canvas.py(根据自己的Python安装位置找)中

p.drawRect(leftTop.x(), leftTop.y(), rectWidth, rectHeight
改为
p.drawRect(int(leftTop.x()), int(leftTop.y()), int(rectWidth), int(rectHeight))p.drawLine(self.prevPoint.x(), 0, self.prevPoint.x(), self.pixmap.height())
改为
p.drawLine(int(self.prevPoint.x()), 0, int(self.prevPoint.x()), self.pixmap.height())p.drawLine(0, self.prevPoint.y(), self.pixmap.width(), self.prevPoint.y())
改为
p.drawLine(0, int(self.prevPoint.y()), self.pixmap.width(), int(self.prevPoint.y()))

2、D:\Python310\Lib\site-packages\PPOCRLabel\PPOCRLabel.py 中

bar.setValue(bar.value() + bar.singleStep() * units)
改为
bar.setValue(int(bar.value() + bar.singleStep() * units))

建议:如果下载验证中途出现各种问题建议彻底删除相关所有软件再重新安装,本人使用中因为版本及软件卸载遗留的问题等出现了多种莫名的问题,无奈选择彻底卸载重装重来一遍就OK了!!
3、启动报错
添加环境变量
os.environ[“KMP_DUPLICATE_LIB_OK”]=“TRUE”`

相关文章:

windows系统搭建OCR半自动标注工具PaddleOCR

深度学习 文章目录 深度学习前言一、环境搭建准备方式1:安装Anaconda搭建1. Anaconda下载地址: [点击](https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?CM&OD)2. 创建新的conda环境 方式2. 直接安装python 二、安装CPU版本1. 安装PaddlePaddle2、安装…...

01、ArcGIS For JavaScript 4.29对3DTiles数据的支持

综述 Cesium从1.99版本开始支持I3S服务的加载,到目前位置,已经支持I3S的倾斜模型、3D Object模型以及属性查询的支持。Cesium1.115又对I3S标准的Building数据实现了加载支持。而ArcGIS之前一直没有跨越对3DTiles数据的支持,所以在一些开发过…...

Spark_SparkSql写入Oracle_Undefined function.....将长字符串写入Oracle中方法..

在使用Spark编写代码将读库处理然后写入Oracle中遇到了诸多小bug,很磨人,好在解决了。shit!! 实测1:TO_CLOB(a3) 代码样例 --这是一个sparksql写入hive的一个小逻辑,我脱敏了噻 SELECT a1, a2, TO_CLOB(a3) AS clob_data, TO_DATE(a4) AS …...

2023数据要素白皮书(免费下载)

【1】关注本公众号,转发当前文章到微信朋友圈 【2】私信发送 【2023年数据资源入表白皮书】 【3】获取本方案PDF下载链接,直接下载即可。 如需下载本方案PPT原格式,请加入微信扫描以下方案驿站知识星球,获取上万份PPT解决方案&a…...

kafka学习记录

文章目录 windows单机版kafka搭建步骤主题的增删改查操作消息的生产与消费 Windows集群版kafka搭建步骤 prettyZoo 尚硅谷Kafka教程,2024新版kafka视频,零基础入门到实战 【尚硅谷】Kafka3.x教程(从入门到调优,深入全面&#xff0…...

无线网络2.4和5G的区别

无线网络2.4和5的区别 无线网络2.4GHz和5GHz的主要区别在于频率、覆盖范围、传输速度、干扰能力和穿透性。以下是详细介绍:12 频率不同。2.4GHz的频率较低,而5GHz的频率较高。频率越低,信号在传播过程中的损失越小,因此覆盖范围…...

大模型笔记:Prompt tuning

1 NLP模型的几个阶段 1.1 第一阶段(在深度学习出现之前) 通常聚焦于特征工程(feature engineering)利用领域知识从数据中提取好的特征 1.2 第二阶段(在深度学习出现之后) 特征可以从数据中习得——>…...

【Ambari】Ansible自动化部署大数据集群

目录 一.版本说明和介绍信息 1.1 大数据组件版本 1.2 Apache Components 1.3 Databases支持版本 二.安装包上传和说明 三.服务器基础环境配置 3.1global配置修改 3.2主机名映射配置 3.3免密用户名密码配置 3.4 ansible安装 四. 安…...

RTSP/Onvif视频安防监控平台EasyNVR调用接口返回匿名用户名和密码的原因排查

视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入,并能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。平台拓展性强、支持二次开发与集成,可应用在景区、校园、水利、社区、工地等场…...

opencv基础图行展示

"""试用opencv创建画布并显示矩形框(适用于目标检测图像可视化) """ # 创建一个黑色的画布,图像格式(BGR) img np.zeros((512, 512, 3), np.uint8)# 画一个矩形:给定左上角和右下角坐标&#xff0…...

GIF在线生成器

上传图片就能生成GIF的前端WEB工具 源码也非常简单 <!DOCTYPE html> <html lang"zh" class"dark"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1, m…...

使用JavaScript制作一个简单的天气应用

随着Web开发技术的不断发展&#xff0c;JavaScript已经成为前端开发中不可或缺的一部分。它不仅可以用于创建动态和交互式的用户界面&#xff0c;还可以用于处理各种复杂的任务&#xff0c;如数据验证、动态内容更新、实时通信等。以下是一个使用JavaScript来创建一个简单天气应…...

说说对WebSocket的理解?应用场景?

文章目录 一、是什么二、特点全双工二进制帧协议名握手优点 三、应用场景参考文献 一、是什么 WebSocket&#xff0c;是一种网络传输协议&#xff0c;位于OSI模型的应用层。可在单个TCP连接上进行全双工通信&#xff0c;能更好的节省服务器资源和带宽并达到实时通迅 客户端和…...

网路维护基础知识

1、路由器 路由器&#xff1a;路由器就是将一个可以接入互联网的网路地址分成若干个网路地址可供终端设备连接的网路设备&#xff0c;设备既可以通过有线连接也可以通过无线连接进入互联网 2、交换机 交换机&#xff1a;个人感觉交换机只是为那些有线网路设计的&#xff0c;…...

【GD32】MQ-3酒精检测传感器

2.31 MQ-3酒精检测传感器 MQ-3气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(Sn0)。当传感器所处环境中存在酒精蒸气时&#xff0c;传感器的电导率随空气中酒精蒸气浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。…...

如何在极狐GitLab 启用依赖代理功能

本文作者&#xff1a;徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了如何在[极狐GitLab…...

ES6中 Promise的详细讲解

文章目录 一、介绍状态特点流程 二、用法实例方法then()catchfinally() 构造函数方法all()race()allSettled()resolve()reject() 三、使用场景# 参考文献 一、介绍 Promise&#xff0c;译为承诺&#xff0c;是异步编程的一种解决方案&#xff0c;比传统的解决方案&#xff08;…...

网站建设也会涉及商标侵权,需要注意些!

以前普推知产老杨碰到建站涉及知识产权侵权的&#xff0c;但是大多数是其它方面的&#xff0c;前几天看到某同行说由于给客户建设网站&#xff0c;由于网站名称涉及商标被起诉要索赔几十万。 当时同行给做网站时还看了下营业执照&#xff0c;上面的主体名称与网站名称也是一致…...

Leetcode算法训练日记 | day25

一、组合总和Ⅲ 1.题目 Leetcode&#xff1a;第 216 题 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺…...

第23次修改了可删除可持久保存的前端html备忘录:增加了百度引擎

第22次修改了可删除可持久保存的前端html备忘录视频背景分离&#xff0c;增加了本地连接&#xff0c;增加了纯CSS做的折叠隐藏修改说明 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

使用SSE解决获取状态不一致问题

使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件&#xff0c;这个上传文件是整体功能的一部分&#xff0c;文件在上传的过程中…...

Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解

文章目录 一、开启慢查询日志&#xff0c;定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...

命令行关闭Windows防火墙

命令行关闭Windows防火墙 引言一、防火墙:被低估的"智能安检员"二、优先尝试!90%问题无需关闭防火墙方案1:程序白名单(解决软件误拦截)方案2:开放特定端口(解决网游/开发端口不通)三、命令行极速关闭方案方法一:PowerShell(推荐Win10/11)​方法二:CMD命令…...

【技巧】dify前端源代码修改第一弹-增加tab页

回到目录 【技巧】dify前端源代码修改第一弹-增加tab页 尝试修改dify的前端源代码&#xff0c;在知识库增加一个tab页"HELLO WORLD"&#xff0c;完成后的效果如下 [gif01] 1. 前端代码进入调试模式 参考 【部署】win10的wsl环境下启动dify的web前端服务 启动调试…...

STM32 低功耗设计全攻略:PWR 模块原理 + 睡眠 / 停止 / 待机模式实战(串口 + 红外 + RTC 应用全解析)

文章目录 PWRPWR&#xff08;电源控制模块&#xff09;核心功能 电源框图上电复位和掉电复位可编程电压监测器低功耗模式模式选择睡眠模式停止模式待机模式 修改主频一、准备工作二、修改主频的核心步骤&#xff1a;宏定义配置三、程序流程&#xff1a;时钟配置函数解析四、注意…...

【动态规划】B4336 [中山市赛 2023] 永别|普及+

B4336 [中山市赛 2023] 永别 题目描述 你做了一个梦&#xff0c;梦里有一个字符串&#xff0c;这个字符串无论正着读还是倒着读都是一样的&#xff0c;例如&#xff1a; a b c b a \tt abcba abcba 就符合这个条件。 但是你醒来时不记得梦中的字符串是什么&#xff0c;只记得…...