前几篇,和大家分享了如何通过 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_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
注意:首次使用,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.height
results.append([x, y, w, h])
return image
codes
中包含了所有的二维码信息,包括二维码中编码的 url/文本等信息。
我们把检测结果打印出来看下:
写在最后
本文给大家带来了一种最简单的文字 & 二维码检测方法,亲测在白底黑字的文档场景中有效。
欢迎有其他解决方案的小伙伴,评论区交流下啊~
如果本文对你有帮助,欢迎点赞收藏备用。