网站注册费计入什么科目/爱站网关键词挖掘

网站注册费计入什么科目,爱站网关键词挖掘,新疆建设网 工程信息网站,哪个公司建设网站文章目录 前言一、代码总述&介绍1.1导入必要的库1.1.1cv21.1.2re1.1.3paddleocr 1.2初始化PaddleOCR1.3打开摄像头1.4使用 PaddleOCR 进行识别1.5定义正则表达式模式1.6打印提取结果1.7异常处理 二、正则表达式2.1简介2.2常用正则表达式模式及原理2.2.1. 快递单号模式2.2.2…

文章目录

  • 前言
  • 一、代码总述&介绍
    • 1.1导入必要的库
      • 1.1.1cv2
      • 1.1.2re
      • 1.1.3paddleocr
    • 1.2初始化PaddleOCR
    • 1.3打开摄像头
    • 1.4使用 PaddleOCR 进行识别
    • 1.5定义正则表达式模式
    • 1.6打印提取结果
    • 1.7异常处理
  • 二、正则表达式
    • 2.1简介
    • 2.2常用正则表达式模式及原理
      • 2.2.1. 快递单号模式
      • 2.2.2. 手机号模式
      • 2.2.3. 姓名模式
    • 2.3正则表达式的使用原理


前言

本文简单介绍了paddleocr中使用的到的正则化。


一、代码总述&介绍

import cv2
import re
from paddleocr import PaddleOCR# 初始化 PaddleOCR
ocr = PaddleOCR(use_angle_cls=True, lang="ch")# 打开摄像头
cap = cv2.VideoCapture(0)if not cap.isOpened():print("无法打开摄像头")exit()try:while True:# 读取摄像头帧ret, frame = cap.read()if not ret:print("无法获取帧,退出...")break# 使用 PaddleOCR 进行识别result = ocr.ocr(frame, cls=True)text = ""for line in result:for word_info in line:text += word_info[1][0] + " "# 定义正则表达式模式# 快递单号:通常是数字和字母的组合,长度可能在 10 到 20 位左右express_pattern = r'[A-Za-z0-9]{10,20}'# 手机号:以 1 开头,后面跟 10 位数字phone_pattern = r'1\d{10}'# 姓名:简单假设为 2 到 4 个汉字name_pattern = r'[\u4e00-\u9fa5]{2,4}'# 查找匹配项express_numbers = re.findall(express_pattern, text)phone_numbers = re.findall(phone_pattern, text)names = re.findall(name_pattern, text)# 打印提取结果print("快递单号:", express_numbers)print("手机号:", phone_numbers)print("姓名:", names)# 显示帧cv2.imshow('Camera Feed', frame)# 按 'q' 键退出循环if cv2.waitKey(1) & 0xFF == ord('q'):breakexcept Exception as e:print(f"发生错误: {e}")
finally:# 释放摄像头并关闭窗口cap.release()cv2.destroyAllWindows()

1.1导入必要的库

python
import cv2
import re
from paddleocr import PaddleOCR

1.1.1cv2

import cv2:导入 OpenCV 库,它是一个广泛用于计算机视觉任务的库,这里主要用于摄像头操作和图像显示

1.1.2re

import re:导入 Python 的 re 模块,用于进行正则表达式匹配,方便从识别出的文本中提取特定信息

1.1.3paddleocr

from paddleocr import PaddleOCR:从 paddleocr 库中导入 PaddleOCR 类,用于进行光学字符识别(OCR)。

1.2初始化PaddleOCR

## 初始化 PaddleOCR
ocr = PaddleOCR(use_angle_cls=True, lang="ch")
ocr = PaddleOCR(use_angle_cls=True, lang="ch"):创建一个 PaddleOCR 对象 ocr。use_angle_cls=True 表示启用角度分类功能,能更好地处理不同角度的文字;lang="ch" 表示使用中文进行识别。

1.3打开摄像头

# 打开摄像头
cap = cv2.VideoCapture(0)
------
cap = cv2.VideoCapture(0):使用 cv2.VideoCapture 函数打开默认摄像头(编号为 0),并将返回的视频捕获对象赋值给 cap。
检查摄像头是否成功打开
if not cap.isOpened():print("无法打开摄像头")exit()
------
if not cap.isOpened()::检查摄像头是否成功打开。如果 cap.isOpened() 返回 False,说明摄像头未成功打开。
print("无法打开摄像头"):若摄像头未成功打开,打印提示信息。
exit():终止程序运行。
开始循环读取摄像头帧
try:while True:
------
try::开启一个异常处理块,用于捕获可能出现的异常。
while True::创建一个无限循环,持续从摄像头读取帧。
读取摄像头帧# 读取摄像头帧ret, frame = cap.read()
------
ret, frame = cap.read():调用 cap.read() 方法从摄像头读取一帧图像。ret 是一个布尔值,表示是否成功读取到帧;frame 是读取到的图像帧。
检查是否成功读取帧if not ret:print("无法获取帧,退出...")break
------
if not ret::如果 ret 为 False,说明未成功读取到帧。
print("无法获取帧,退出..."):打印提示信息。
break:跳出循环,结束程序。

1.4使用 PaddleOCR 进行识别

 使用 PaddleOCR 进行识别result = ocr.ocr(frame, cls=True)
------
result = ocr.ocr(frame, cls=True):调用 ocr.ocr 方法对当前帧 frame 进行 OCR 识别,cls=True 表示启用角度分类。识别结果存储在 result 中。
提取识别到的文本text = ""for line in result:for word_info in line:text += word_info[1][0] + " "
------
text = "":初始化一个空字符串 text,用于存储识别到的所有文本。
for line in result::遍历识别结果 result 中的每一行。
for word_info in line::遍历每一行中的每个单词信息。
text += word_info[1][0] + " ":将每个单词的文本内容添加到 text 中,并在后面添加一个空格。

1.5定义正则表达式模式

      # 定义正则表达式模式# 快递单号:通常是数字和字母的组合,长度可能在 10 到 20 位左右express_pattern = r'[A-Za-z0-9]{10,20}'# 手机号:以 1 开头,后面跟 10 位数字phone_pattern = r'1\d{10}'# 姓名:简单假设为 2 到 4 个汉字name_pattern = r'[\u4e00-\u9fa5]{2,4}'
------
express_pattern = r'[A-Za-z0-9]{10,20}':定义快递单号的正则表达式模式,匹配由 1020 位的字母(大小写均可)和数字组成的字符串。
phone_pattern = r'1\d{10}':定义手机号的正则表达式模式,匹配以数字 1 开头,后面跟 10 位数字的字符串。
name_pattern = r'[\u4e00-\u9fa5]{2,4}':定义姓名的正则表达式模式,匹配由 24 个中文字符组成的字符串。
查找匹配项# 查找匹配项express_numbers = re.findall(express_pattern, text)phone_numbers = re.findall(phone_pattern, text)names = re.findall(name_pattern, text)
------
express_numbers = re.findall(express_pattern, text):使用 re.findall 方法在 text 中查找所有匹配快递单号模式的字符串,并将结果存储在 express_numbers 列表中。
phone_numbers = re.findall(phone_pattern, text):同理,查找所有匹配手机号模式的字符串,存储在 phone_numbers 列表中。
names = re.findall(name_pattern, text):查找所有匹配姓名模式的字符串,存储在 names 列表中。

1.6打印提取结果

      # 打印提取结果print("快递单号:", express_numbers)print("手机号:", phone_numbers)print("姓名:", names)
------
分别打印提取到的快递单号、手机号和姓名列表。
显示帧# 显示帧cv2.imshow('Camera Feed', frame)
cv2.imshow('Camera Feed', frame):使用 cv2.imshow 函数显示当前帧,窗口标题为 Camera Feed。
按 'q' 键退出循环# 按 'q' 键退出循环if cv2.waitKey(1) & 0xFF == ord('q'):break
------
cv2.waitKey(1):等待 1 毫秒,检测是否有按键事件。
cv2.waitKey(1) & 0xFF == ord('q'):检查按下的键是否为 'q'。如果是,则跳出循环。

1.7异常处理

except Exception as e:print(f"发生错误: {e}")
------
except Exception as e::捕获所有异常,并将异常对象赋值给 e。
print(f"发生错误: {e}"):打印错误信息。
释放摄像头并关闭窗口
finally:# 释放摄像头并关闭窗口cap.release()cv2.destroyAllWindows()
------
finally::无论是否发生异常,都会执行 finally 块中的代码。
cap.release():释放摄像头资源。
cv2.destroyAllWindows():关闭所有由 OpenCV 创建的窗口。

二、正则表达式

2.1简介

正则表达式是一种用于匹配字符串模式的工具,在处理文本数据时非常有用。

2.2常用正则表达式模式及原理

2.2.1. 快递单号模式

express_pattern = r'[A-Za-z0-9]{10,20}'

原理剖析:
[A-Za-z0-9]:这是一个字符类,它表示匹配方括号内任意一个字符。A-Z 代表所有大写字母,a-z 代表所有小写字母,0-9 代表所有数字。所以这个字符类可以匹配任意一个字母(大小写均可)或者数字。
{10,20}:这是一个量词,它规定了前面字符类(也就是 [A-Za-z0-9])出现的次数范围。{10,20} 表示前面的字符类至少出现 10 次,最多出现 20 次。
综合起来,[A-Za-z0-9]{10,20} 可以匹配由 10 到 20 位字母(大小写均可)和数字组成的字符串,比较符合常见快递单号的特征。

2.2.2. 手机号模式

phone_pattern = r'1\d{10}'

原理剖析:
1:这是一个普通字符,它直接匹配字符 1。在中国,手机号码都是以数字 1 开头的。
\d:这是一个元字符,它代表任意一个数字,等价于 [0-9]。
{10}:这是一个量词,它规定了前面的 \d 必须出现 10 次。
综合起来,1\d{10} 可以匹配以数字 1 开头,后面跟着 10 位数字的字符串,符合中国手机号码的格式。

2.2.3. 姓名模式

name_pattern = r'[\u4e00-\u9fa5]{2,4}'

原理剖析:
[\u4e00-\u9fa5]:这是一个字符类,\u4e00 到 \u9fa5 是 Unicode 编码中汉字的范围,所以这个字符类可以匹配任意一个中文字符。
{2,4}:这是一个量词,它规定了前面的字符类(也就是 [\u4e00-\u9fa5])至少出现 2 次,最多出现 4 次。
综合起来,[\u4e00-\u9fa5]{2,4} 可以匹配由 2 到 4 个中文字符组成的字符串,简单模拟了常见姓名的长度。

2.3正则表达式的使用原理

在 Python 里,re 模块提供了正则表达式的支持。常用的函数有 re.findall、re.search、re.match 等。在你的代码中,使用了 re.findall 函数:

express_numbers = re.findall(express_pattern, text)
phone_numbers = re.findall(phone_pattern, text)
names = re.findall(name_pattern, text)

re.findall(pattern, string):该函数会在 string 中查找所有匹配 pattern 的子字符串,并将它们作为一个列表返回。例如,re.findall(express_pattern, text) 会在 text 中查找所有符合 express_pattern 模式的子字符串,然后把这些子字符串组成一个列表赋值给 express_numbers。
正则表达式的匹配过程通常是从字符串的开头开始,依次尝试匹配模式。如果匹配成功,就记录下匹配的子字符串,然后继续从匹配结束的位置往后匹配,直到字符串结束。

综上所述,这段代码实现了从摄像头实时读取帧,使用 PaddleOCR 进行文字识别,并通过正则表达式提取快递单号、手机号和姓名的功能。用户可以通过按 ‘q’ 键退出程序。


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

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

相关文章

JavaScript DOM与元素操作

目录 DOM 树、DOM 对象、元素操作 一、DOM 树与 DOM 对象 二、获取 DOM 元素 1. 基础方法 2. 现代方法(ES6) 三、修改元素内容 四、修改元素常见属性 1. 标准属性 2. 通用方法 五、通过 style 修改样式 六、通过类名修改样式 1. className 属…

大模型学习:从零到一实现一个BERT微调

目录 一、准备阶段 1.导入模块 2.指定使用的是GPU还是CPU 3.加载数据集 二、对数据添加词元和分词 1.根据BERT的预训练,我们要将一个句子的句头添加[CLS]句尾添加[SEP] 2.激活BERT词元分析器 3.填充句子为固定长度 代码解释: 三、数据处理 1.…

10组时尚复古美学自然冷色调肖像电影照片调色Lightroom预设 De La Mer – Nautical Lightroom Presets

De La Mer 预设系列包含 10 种真实的调色预设,适用于肖像、时尚和美术。为您的肖像摄影带来电影美学和个性! De La Mer 预设非常适合专业人士和业余爱好者,可在桌面或移动设备上使用,为您的摄影项目提供轻松的工作流程。这套包括…

机器学习的一百个概念(4)下采样

前言 本文隶属于专栏《机器学习的一百个概念》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见[《机器学习的一百个概念》 ima 知识库 知识库广场搜索&…

数据安全系列4:密码技术的应用-接口调用的身份识别

传送门 数据安全系列1:开篇 数据安全系列2:单向散列函数概念 数据安全系列3:密码技术概述 什么是认证? 一谈到认证,多数人的反应可能就是"用户认证" 。就是应用系统如何识别用户的身份,直接…

STL之map和set

1. 关联式容器 vector、list、deque、 forward_list(C11)等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。 关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是结…

Vue3 其它API Teleport 传送门

Vue3 其它API Teleport 传送门 在定义一个模态框时,父组件的filter属性会影响子组件的position属性,导致模态框定位错误使用Teleport解决这个问题把模态框代码传送到body标签下

《Python Web网站部署应知应会》No4:基于Flask的调用AI大模型的高性能博客网站的设计思路和实战(上)

基于Flask的调用AI大模型的高性能博客网站的设计思路和实战(上) 摘要 本文详细探讨了一个基于Flask框架的高性能博客系统的设计与实现,该系统集成了本地AI大模型生成内容的功能。我们重点关注如何在高并发、高负载状态下保持系统的高性能和…

力扣刷题-热题100题-第27题(c++、python)

21. 合并两个有序链表 - 力扣(LeetCode)https://leetcode.cn/problems/merge-two-sorted-lists/description/?envTypestudy-plan-v2&envIdtop-100-liked 常规法 创建一个新链表,遍历list1与list2,将新链表指向list1与list2…

AI加Python的文本数据情感分析流程效果展示与代码实现

本文所使用数据来自于梯田景区评价数据。 一、数据预处理 数据清洗 去除重复值、空值及无关字符(如表情符号、特殊符号等)。 提取中文文本,过滤非中文字符。 统一文本格式(如全角转半角、繁体转简体)。 中文分词与去停用词 使用 jieba 分词工具进行分词。 加载自定义词…

Microi吾码界面设计引擎之基础组件用法大全【内置组件篇·上】

🎀🎀🎀 microi-pageengine 界面引擎系列 🎀🎀🎀 一、Microi吾码:一款高效、灵活的低代码开发开源框架【低代码框架】 二、Vue3项目快速集成界面引擎 三、Vue3 界面设计插件 microi-pageengine …

【多线程】单例模式和阻塞队列

目录 一.单例模式 1. 饿汉模式 2. 懒汉模式 二.阻塞队列 1. 阻塞队列的概念 2. BlockingQueue接口 3.生产者-消费者模型 4.模拟生产者-消费者模型 一.单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,其核心思想是确保…

Vuex状态管理

Vuex Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式管理应用的所有组件状态,并以相应的规则保证状态以一种可预测的方式发生变化。(类似于在前端的数据库,这里的数据存储在内存当中) 一、安装并配置 在项目的…

从代码学习深度学习 - 使用块的网络(VGG)PyTorch版

文章目录 前言一、VGG网络简介1.1 VGG的核心特点1.2 VGG的典型结构1.3 优点与局限性1.4 本文的实现目标二、搭建VGG网络2.1 数据准备2.2 定义VGG块2.3 构建VGG网络2.4 辅助工具2.4.1 计时器和累加器2.4.2 准确率计算2.4.3 可视化工具2.5 训练模型2.6 运行实验总结前言 深度学习…

Baklib激活企业知识管理新动能

Baklib核心技术架构解析 Baklib的底层架构以模块化设计为核心,融合知识中台的核心理念,通过分布式存储引擎与智能语义分析系统构建三层技术体系。数据层采用多源异构数据接入协议,支持文档、音视频、代码片段等非结构化数据的实时解析与分类…

C之(16)scan-build与clang-tidy使用

C之(16)scan-build与clang-tidy使用 Author: Once Day Date: 2025年3月29日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: Linux实践记录_Once_da…

在 Vue 项目中快速集成 Vant 组件库

目录 引言一、找到 src 下的App.js 写入代码。二、安装Vant三、解决 polyfill 问题四、查看依赖五、配置webpack六、引入 Vant七、在组件中使用 Vant八、在浏览器中查看样式总结 引言 在开发移动端 Vue 项目时,选择一个高效、轻量且功能丰富的组件库是提升开发效率…

(二)GEE基础学习初探及案例详解【20250330】

Google Earth Engine(GEE)是由谷歌公司开发的众多应用之一。借助谷歌公司超强的服务器运算能力以及与NASA的合作关系,GEE平台将Landsat、MODIS、Sentinel等可以公开获取的遥感图像数据存储在谷歌的磁盘阵列中,使得GEE用户可以方便的提取、调用和分析海量…

妙用《甄嬛传》中的选妃来记忆概率论中的乘法公式

强烈推荐最近在看的不错的B站概率论课程 《概率统计》正课,零废话,超精讲!【孔祥仁】 《概率统计》正课,零废话,超精讲!【孔祥仁】_哔哩哔哩_bilibili 其中概率论中的乘法公式,老师用了《甄嬛传…

蓝桥杯备考---->并查集之 Lake Counting

这道题就统计有多少个连通块就行了 这时候我们又需要把二维转成一维了,也就是把每一个格子都给一个编号 当我们合并连通块的时候,其实是只需要四个方向的 因为我们是从上往下遍历的,我们遍历到某个位置的时候,它已经和上面部分…