Skip to content

Latest commit

 

History

History
87 lines (61 loc) · 2.84 KB

57.md

File metadata and controls

87 lines (61 loc) · 2.84 KB

关于验证码图像的识别

图像验证码大多出现在网站登录的地方, 通用来讲大多用于验证合法性的地方,图像识别是人工智能领域的一个研究方向,而我们这里讲的比较简单,主要是针对一些可以转换成文本信息的图片,在python中有一个专门处理类似图片的识别库 - tesserocr , 它是Python的一个OCR识别库,所谓 OCR 即Optical Character Recognition, 光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程。

tesserocr 安装

在安装tesserocr前都需要先安装tesseract

  • Mac 环境 (默认是python3的环境)

    • $pip3 install tesserocr
    • $pip3 install pillow
    • 注意:在mac下安装tesserocr ,需要先安装下面的软件
    • $ brew install tesseract
    • $ brew install imagemagick
  • Ubuntu、Debian 系统下先安装:

    • $ sudo apt-get intall -y tesseract-ocr libtesseract-dev libleptonica-dev
  • CentOS、Red Hat 系统:

    • $ yum install -y tesseract
  • 在windows系统下:

    • tesserocr前要先安装:tesseract 他是为tesserocr提供支持的
    • 下载目录:https://digi.bib.uni-mannheim.de/tesseract/ 会有很多下载文件,下载一个3.0版本的exe文件即可
    • 在安装中要勾选上Additional language data(download)选项来安装OCR识别支持的语言包

简单使用

测试代码如下:

# 验证识别测试
import tesserocr
from PIL import Image

# 打开图片 注意测试时你的路径保持和你的环境一致(图片位置正确)
image = Image.open("./xx/1.png") # 之后测试时分别替换为: 2.png、3.png、4.png 等其他测试图像

# 进行转换
result = tesserocr.image_to_text(image)

print(result)

测试结果显示不太准确

验证码的深度处理

如转灰度、二值化等操作

代码转换如下:

import tesserocr
from PIL import Image

image = Image.open("./xx/2.png") # 保证正确的路径
# 1) 灰度处理 (将图像转化为灰色)
image = image.convert("L")
# image.save("./pic/2-1.png", None) # 此处用于保存转换后的图片进行对比测试

# 2) 二值化处理 (将图像转化为黑白色)
threshold = 128
table = []
for i in range(256):
    if i < threshold:
        table.append(0)
    else:
        table.append(1)
image = image.point(table,'1')
# image.save("./pic/2-2.png", None) # 此处用于保存转换后的图片进行对比测试

# 将图像转化为文本
result = tesserocr.image_to_text(image)

print(result)

效果有大的提升,但仍有一些图片无法准确识别

总结

在我们识别图像的时候,如果一些功能不能达到满意的效果,可以综合几项技能并用

  1. 使用图片第三方付费代理识别服务 (推荐)
  2. tesserocr工具(python程序,功能相对有限)
  3. 人工识别