【Python实战】如何优雅地实现文字 二维码检测?
前几篇,和大家分享了如何通过 Python 和相关库,自动化处理 PDF 文档,提高办公效率。
- 【Python实战】自动化处理 PDF 文档,完美实现 WPS 会员功能
- 【Python实战】如何优雅地实现 PDF 去水印?
- 【Python实战】一键生成 PDF 报告,图文并茂,代码全公开
实操的同学发现,无论是 fitz 还是 PyPDF2 都无法搞定图片中的文字 & 二维码。
今天,继续给大家分享两个库,完美解决上述问题,亲测好用。
目录
- 1. 文字检测-PPOCR
- 1.1 安装
- 1.2 调用
- 2. 二维码检测-pyzbar
- 2.1 安装
- 2.2 调用
- 写在最后
1. 文字检测-PPOCR
文字检测OCR(光学字符识别)广泛应用于文档数字化、自动化数据输入、车牌识别等领域。现代 OCR 利用深度学习和图像处理算法,能够处理各种字体和语言。随着 AI 的发展,OCR 的准确率和处理速度已近乎完美。
本文采用的是 PPOCR 这个库,来自百度飞桨团队,模型轻量,处理速度也相当感人。
1.1 安装
安装也非常简单,因为依赖 paddlepaddle,所以需要一并安装:
pip install paddlepaddle==2.6.1
pip install ppocr
1.2 调用
安装完成后,几行代码实现调用:
def img_ocr(img_path=None, img_data=None):if img_data is not None:img = img_dataelse:img = cv2.imread(img_path)result = ppocr.ocr(img, cls=True)[0]texts = []if result:for line in result:box = line[0]text = line[1][0]texts.append([text, box])return texts
注意:首次使用,paddleocr 会将模型下载到你的本地目录:C:\Users\xxx\.paddleocr\,后续使用将直接调用本地模型。
我们随便找一张图片来测试下:

将结果打印出来:

❌第二行出现了一个识别错误:江苏手机阅读显,把二维码识别成了显,看来单纯靠 OCR 还是不太可靠😂~
✔️看来还得用 GPT 来排查一下文字错误。
2. 二维码检测-pyzbar
二维码应该说是一种标准化的信息存储方式,通常由黑白方块组成,广泛应用于支付、商品追踪和信息共享等场景。
展示在图像中,二维码检测具有非常显著的特点,但因为二维码形式多样,简单的图像处理方法无法很好地识别各种类型二维码。
这里我们采用 pyzbar 这个库,实现二维码检测。
2.1 安装
安装这里有个坑,尝试了两种方式,都无法调用成功。
一开始尝试 pip 安装:
pip install pyzbar
报错提示依赖库没有成功安装,尝试了 conda 安装:
conda install -c conda-forge pyzbar # 还是失败
最终在官方仓库中找到解决方案:需要安装 vcredist_x64.exe。
再次调用就没问题了。
2.2 调用
示例代码如下:
def qrcode_detect(image, left=0.12, right=1.12, top=0.15, bottom=1.25):gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)codes = decode(gray_image)results = [] for code in codes:x, y, w, h = code.rect.left, code.rect.top, code.rect.width, code.rect.heightresults.append([x, y, w, h])return image
codes 中包含了所有的二维码信息,包括二维码中编码的 url/文本等信息。
我们把检测结果打印出来看下:

写在最后
本文给大家带来了一种最简单的文字 & 二维码检测方法,亲测在白底黑字的文档场景中有效。
欢迎有其他解决方案的小伙伴,评论区交流下啊~
如果本文对你有帮助,欢迎点赞收藏备用。
相关文章:
【Python实战】如何优雅地实现文字 二维码检测?
前几篇,和大家分享了如何通过 Python 和相关库,自动化处理 PDF 文档,提高办公效率。 【Python实战】自动化处理 PDF 文档,完美实现 WPS 会员功能【Python实战】如何优雅地实现 PDF 去水印?【Python实战】一键生成 PDF…...
行为型设计模式3:模板方法/备忘录/解释器/迭代器
设计模式:模板方法/备忘录/解释器/迭代器 (qq.com)...
思源笔记软件的优缺点分析
在过去一年里,我用了很多款笔记,从word文档到onenote到语雀再到思源,最后坚定的选择了思源笔记 使用感受 首先是用word文档来记笔记,主要是开始时不知道笔记软件怎么好用,等到笔记越来越膨胀的时候我发现,…...
追问试面试系列:Dubbo
欢迎来到Dubbo系列,在面试中被问到Dubbo相关的问题时,大部分都是简历上写了Dubbo,或者面试官想尝试问问你对Dubbo是否了解。 本系列主要是针对面试官通过一个点就使劲儿往下问的情况。 面试官:说说你们项目亮点 好的面试官 我们这个项目的技术亮点在于采用了Spring Cloud…...
动手学深度学习V2每日笔记(卷积层)
本文主要参考沐神的视频教程 https://www.bilibili.com/video/BV1L64y1m7Nh/p2&spm_id_from333.1007.top_right_bar_window_history.content.click&vd_sourcec7bfc6ce0ea0cbe43aa288ba2713e56d 文档教程 https://zh-v2.d2l.ai/ 本文的主要内容对沐神提供的代码中个人不…...
qcom ucsi probe
ucsi glink 注册一个ucsi 设备,和pmic glink进行通信,ucsi作为pmic glink的一个client。 lkml的patch https://lkml.org/lkml/2023/1/30/233 dtsi中一般会定义 qcom,ucsi-glink 信息,用于和驱动进行匹配 static const struct of_device_id …...
flask和redis配合
对于涉及数据提交的场景,比如更新用户信息,你可能会使用POST或PUT请求。但是,这些操作通常与直接从Redis缓存中检索数据不同,因为它们可能涉及到对后端数据库或其他存储系统的修改。并且可能需要将更新后的数据同步回Redis缓存&am…...
深度学习中的早停法
早停法(Early Stopping)是一种用于防止模型过拟合的技术,在训练过程中监视验证集(或者测试集)上的损失值。具体设立早停的限制包括两个主要参数: Patience(耐心):这是指验…...
科普文:JUC系列之多线程门闩同步器CountDownLatch的使用和源码
CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他10个线程的任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。 CountDownLatch是通过一个计数器来实现…...
foreach循环和for循环在PHP中各有什么优势
在PHP中,foreach循环和for循环都是用来遍历数组的常用结构,但它们各有其优势和使用场景。 foreach循环的优势 简化代码:foreach循环提供了一种更简洁的方式来遍历数组,不需要手动控制索引或指针。易于阅读:对于简单的…...
巧用casaos共享挂载自己的外接硬盘为局域网共享
最近入手了个魔改机顶盒,已经刷好了的armbian,虽然是原生的,但是我觉得挺强大的,内置了很多 常用的docker和应用,只需要armbian-software 安装就行,缺点就是emmc太小了。 买到之后第一时间装上了casaos和1p…...
标题:解码“八股文”:助力、阻力,还是空谈?
标题:解码“八股文”:助力、阻力,还是空谈? 在程序员的面试与职场发展中,“八股文”一直是一个备受争议的话题。它既是求职者展示自己技术功底的途径,也是一些公司筛选人才的标准之一。但“八股文”在实际…...
语言无界,沟通无限:2024年好用在线翻译工具推荐
随着技术的发展现在的翻译在线工具从基础词句翻译到复杂的文章翻译都不在话下。为了防止你被五花八门的工具挑花眼,我给你介绍几款我用过的便捷、高效、准确的翻译工具吧。 1.福晰翻译端 链接直通:https://www.foxitsoftware.cn/fanyi/ 这个软件支持…...
【Golang 面试 - 进阶题】每日 3 题(十八)
✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…...
二分+dp,CF 1993D - Med-imize
一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 D - Med-imize 二、解题报告 1、思路分析 对于n < k的情况直接排序就行 对于n > k的情况 最终的序列长度一定是 (n - 1) % k 1 这个序列是原数组的一个子序列 对于该序列的第一个元素࿰…...
三十种未授权访问漏洞复现 合集( 三)
未授权访问漏洞介绍 未授权访问可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷,导致其他用户可以直接访问,从而引发重要权限可被操作、数据库、网站目录等敏感信息泄露。---->目录遍历 目前主要存在未授权访问漏洞的有:NFS服务&a…...
数据湖和数据仓库核心概念与对比
随着近几年数据湖概念的兴起,业界对于数据仓库和数据湖的对比甚至争论就一直不断。有人说数据湖是下一代大数据平台,各大云厂商也在纷纷的提出自己的数据湖解决方案,一些云数仓产品也增加了和数据湖联动的特性。但是数据仓库和数据湖的区别到…...
探索WebKit的奥秘:打造高效、兼容的现代网页应用
1. 简介 1.1. 主要特点 WebKit 是一个开源的浏览器引擎,它允许开发者构建高性能、功能丰富的 web 应用程序。WebKit 与 Mozilla Firefox 等使用的 Gecko 引擎、Internet Explorer 使用的 Trident 引擎以及 EdgeHTML 引擎共同构成了现代 web 浏览器的核心技术。 1.2. 学习资…...
【leetcode】平衡二叉树、对称二叉树、二叉树的层序遍历(广度优先遍历)(详解)
Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:数据结构、LeetCode专栏 📚本系…...
最短路径算法:Floyd-Warshall算法
引言 在图论中,Floyd-Warshall算法是一种用于计算任意两点之间最短路径的动态规划算法。它适用于加权有向图和无向图,可以处理带有负权重边的图,但要求图中不能有负权重环。本文将详细介绍Floyd-Warshall算法的定义、步骤及其实现。 Floyd-…...
丹青幻境效果展示:宣纸底纹UI下生成图像与界面美学统一性视觉报告
丹青幻境效果展示:宣纸底纹UI下生成图像与界面美学统一性视觉报告 1. 设计理念与视觉定位 丹青幻境的设计理念源于传统东方美学与现代数字艺术的完美融合。这款基于Z-Image架构打造的数字艺术创作工具,彻底摒弃了传统AI工具冰冷的技术感,将…...
HDRI-Generator: 环境贴图生成AI
在 3D 渲染中,环境光通常比模型本身更难处理。 很多开发者或设计师都有类似经验:即使模型质量很高,如果光照不合理,最终效果仍然会显得不真实。HDRI(High Dynamic Range Image)长期以来是解决这一问题的核…...
数据自主权:WeChatMsg让微信聊天记录回归用户掌控
数据自主权:WeChatMsg让微信聊天记录回归用户掌控 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg…...
能源在线监测管理系统平台[fu源码]
EMS能源管理系统 基于 Vue3 / Spring Boot/Spring Cloud & Alibaba 微服务架构 项目技术框架 RuoYi-Cloud 基础框架上开发而成 源智优控AI能源大脑,能源AI版,即将上线 仓库地址: https://gitee.com/guangdong122/energy-management …...
【原创改进代码】考虑电动汽车移动储能特性的多区域电网功率波动平抑优化调控附python代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子…...
小米智能家居跨区域协同控制技术指南
小米智能家居跨区域协同控制技术指南 【免费下载链接】ha_xiaomi_home Xiaomi Home Integration for Home Assistant 项目地址: https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home 随着智能家居设备数量的快速增长,多区域设备协同工作已成为提升居住体…...
探索偏心轮飞剪的 Codesys 程序奥秘:基于偏心轮加滑块机构
偏心轮 飞剪 电子凸轮 codesys程序源码 适用于偏心轮加滑块机构 在自动化控制领域,偏心轮飞剪系统凭借其独特的运动特性和高效的切割能力,在众多生产场景中发挥着关键作用。今天咱们就深入探讨基于偏心轮加滑块机构的偏心轮飞剪的 Codesys 程序源码&…...
VOOHU沃虎:从SFP到SFP28不同光模块如何选笼子?
在高速通信设备的设计中,SFP光模块笼子是一个看似简单却至关重要的组件。随着数据传输速率从1G演进到10G、25G乃至更高,光模块对笼子的要求也在发生质的变化。SFP(1G)、SFP(10G)、SFP28(25G&…...
前端开发者的福音:5分钟用Mergely.js给你的网页加个在线文本对比器
零成本打造专业级文本对比工具:Mergely.js全攻略 在代码审查、合同修订或是配置管理场景中,文本差异对比是个高频刚需。传统方案要么需要后端支持,要么功能简陋。现在,只需5分钟和几行JavaScript代码,你就能为Web项目嵌…...
三极管信号滤波原理与工程实践
1. 三极管在信号滤波中的独特应用作为一名嵌入式硬件工程师,我经常需要处理各种传感器信号。最近在无刷电机驱动项目中,遇到了霍尔信号毛刺干扰的问题。传统教科书上总是强调三极管的放大作用,但实际工程中,我发现三极管在信号滤波…...
