赞
踩
最近在研究 Python 的一些功能 , 也尝试了一些有趣实现, 这一篇就从实践的角度来研究一下 Python 如何实现图片识别。
众所周知 , Python 的库真的老多了,其中在图像识别上比较突出的就是 OpenCV.
那么基于这个库我们能实现什么功能呢?
OpenCV :一个开源的跨平台计算机视觉库 , 支持 C++ ,Java 和 Python
读取
,写入
,转换
,图像增强
, 特征提取
等等Tesseract : 光学字符识别 (OCR) 的开源引擎 ,用于讲图像转换为可读的文本
java 复制代码 // S1 : 安装依赖 pip install numpy matplotlib // S2 : 安装 OpenCV pip install opencv-python // S3 : 安装物理机上面的 tesseract https://github.com/UB-Mannheim/tesseract/wiki - PS : 此处默认使用的是 English 语言包 ,如果需要中文,这里要下载新的语言包 - https://tesseract-ocr.github.io/tessdoc/Data-Files.html - 下载完成后把文件解压到 /Tesseract-OCR/tessdata 中 // S4 :准备环境变量 @ https://blog.csdn.net/qq_40147863/article/details/82285920 - 环境变量 系统变量 和 用户变量 里面 加上对应的 Path 即可 ## S4 : 安装 Python OCR 识别 pip install pytesseract //============================ // 扩展功能 : // 测试一 : 中文包安装情况 > tesseract --list-langs - 如果中文包安装成功,就可以看到多个结果
python 复制代码 import cv2 import os import pytesseract # S1 : 读取图片 image_path = "C:\Users\zzg\Desktop\test.png" # S2 : 识别图片 image = cv2.imread(image_path) # S3 : 使用 OCR 识别文字 text = pytesseract.image_to_string(image,lang='chi_sim') # 打印文字 print("识别出文字内容:"+text)
大概率是识别不出来的
英文文字
, 使用英文模型的效果还是很好的,一段复杂的代码基本上能够识别清楚中文文字
,整体效果就比较差了识别了又好像没识别,这说明在不进行任何优化的前提下,文字识别的准确率并不高
。所以在生产上使用之前,我们要在代码和模型层面进行一定的优化
,以达到预期的效果。
将一幅彩色图像转换为灰度图像的过程 ,一般情况下灰度图像只会包含一个通道。
java
复制代码
// 灰度化图像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
// 展示图像
cv2.imshow("Image", gray_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
问题一 :通道是什么 ?
图像中有很多分量
用来描述一些信息
,常见的有颜色通道 ,深度通道 , alpha 通道等。
一般常规的彩色图像包含三个颜色通道 :红色、绿色和蓝色(或多或少都听过,这就是三原色)。
问题二 : 为什么要灰度化 ?
颜色过于复杂
,处理难度更大
之前在环境配置的时候也提到过,为了更好的识别中文,需要添加语言包。
Tesseract 的语言包可以帮助 Tesseract 引擎识别特定语言文本的模型文件。
我们需要下载特定的语言包,放在 tessdata
目录下即可。 Tesseract 可以同时兼容多个语言包。也可以自己训练语言包。
@ tesseract-ocr.github.io/tessdoc/Dat…
如果真的需要深度使用,建议认真阅读官方文档 ,在官方文档中提供了大量提高质量的案例 :
其中常见的方式包括 :
通常最常见的就是图像的缩放处理
解决的方案是对图片进行缩放或者切割 ,首先我们看一下图像缩放后的效果 :
Tesseract 同样是一种基于机器学习计算的实现功能 , 在使用上一样基于大模型实现。
java 复制代码 import cv2 import os import pytesseract # 读取图片 image_path = "C:\Users\zzg\Desktop\test2.png" # 检查文件是否存在 if not os.path.isfile(image_path): print("错误:图像文件未找到!") exit() image = cv2.imread(image_path) # 灰度化图片 gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 对图片进行缩放 image_big = cv2.resize(gray_image, dsize=(None, None), fx=3, fy=3, interpolation=cv2.INTER_CUBIC) # 降噪图片 denoised_image = cv2.GaussianBlur(image_big, (5, 5), 0) # 使用 OCR 识别文字 text = pytesseract.image_to_string( denoised_image,lang='chi_sim') # 打印文字 print("识别出文字内容:"+text)
这篇是第一篇学习的文档 ,重在了解这种使用方式。
后续会扩展到 复杂图像
以及 业务级使用
。欢迎关注。
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。