首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

【Python实战】如何优雅地实现文字 & 二维码检测?

  • 25-03-02 13:44
  • 2349
  • 9354
blog.csdn.net

前几篇,和大家分享了如何通过 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 paddleocr
  • 1
  • 2

1.2 调用

安装完成后,几行代码实现调用:

def img_ocr(img_path=None, img_data=None):
    if img_data is not None:
        img = img_data
    else:
        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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

注意:首次使用,paddleocr 会将模型下载到你的本地目录:C:\Users\xxx\.paddleocr\,后续使用将直接调用本地模型。

我们随便找一张图片来测试下:

将结果打印出来:

❌第二行出现了一个识别错误:江苏手机阅读显,把二维码识别成了显,看来单纯靠 OCR 还是不太可靠?~

✔️看来还得用 GPT 来排查一下文字错误。

2. 二维码检测-pyzbar

二维码应该说是一种标准化的信息存储方式,通常由黑白方块组成,广泛应用于支付、商品追踪和信息共享等场景。

展示在图像中,二维码检测具有非常显著的特点,但因为二维码形式多样,简单的图像处理方法无法很好地识别各种类型二维码。

这里我们采用 pyzbar 这个库,实现二维码检测。

2.1 安装

安装这里有个坑,尝试了两种方式,都无法调用成功。

一开始尝试 pip 安装:

pip install pyzbar
  • 1

报错提示依赖库没有成功安装,尝试了 conda 安装:

conda install -c conda-forge pyzbar # 还是失败
  • 1

最终在官方仓库中找到解决方案:需要安装 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.height
        results.append([x, y, w, h])
    return image
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

codes 中包含了所有的二维码信息,包括二维码中编码的 url/文本等信息。

我们把检测结果打印出来看下:

写在最后

本文给大家带来了一种最简单的文字 & 二维码检测方法,亲测在白底黑字的文档场景中有效。

欢迎有其他解决方案的小伙伴,评论区交流下啊~

如果本文对你有帮助,欢迎点赞收藏备用。

猴哥的AI知识库
微信公众号
AI全栈工程师,帮助零基础编程小白入门AI
注:本文转载自blog.csdn.net的AI码上来的文章"https://blog.csdn.net/u010522887/article/details/140901297"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top