本周在学习崔庆才的《Python 网络爬虫开发实践》 的验证码识别,本计划这周整理一份公众号文章,不料在第一节安装tesserocr 时就遇到了麻烦,查了各种资料就是装不上。在查找过程中,又遇到一种处理验证码图片的包 opencv ,又是安装失败。接二连三的挫败让自己很是郁闷,中间又遇到其他的问题,会在公众号(foreverxin)中介绍。直到周四晚上终于通过anaconda 把这两个包都成功安装了,但还是有点迷糊,于是各种卸载重装,现整理一下笔记。
首先简单介绍一下anaconda、opencv、tesserocr、tesseract。
anaconda的主要用途:有java开发经验的都知道,不同的项目可能需要不同的JDK版本,不同的python程序对应的python版本可能也不同,anaconda 就是用来维护不同版本的python解释器(环境)和包的。然后在开发工具(pycharm)中给每个项目设置相应python环境即可。
opencv 主要实现了图像处理和计算机视觉方面的很多通用算法;tesseract 是由 HP 实验室开发由 Google 维护的开源 OCR(Optical Character Recognition , 光学字符识别)引擎,可以不断的训练库,使图像转换文本的能力不断增强;还可以以它为模板,开发出符合自身需求的OCR引擎。tesserocr 是 python 对 tesseract 的封装。所以安装 tesserocr 需要先下载安装tesseract 。
以下是安装步骤及遇到的问题:
一)、anaconda 安装及使用
1、下载安装anaconda ,下载地址(https://www.anaconda.com/download/),选择版本:
2、一路next:
3、设置安装路径
4、是否安装vscode,Skip 跳过即可:
5、安装成功后,会在计算机开始栏中多出如下内容,其中,Anaconda Navigator 和 Anaconda Prompt用的比较多:
6、打开Anaconda Navigator ,选择python版本,创建Python 环境:
二)、通过anaconda 安装包opencv
1、选择需要安装的包,比如opencv,下载过程中会将其依赖的包一并下载安装:
2、通过 anaconda 安装opencv后,在anaconda 和 Anaconda Prompt 命令窗口(依次执行命令:activate python3(激活环境)--> conda list(查看已安装的包)),都显示opencv 已经安装成功,但进入python编辑环境,执行import cv2 ,报错。推测opencv 与 python 的版本不一致:
3、执行命令 conda uninstall opencv 将opencv卸载,换种方式安装。下载对应版本的 .whl 文件,地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/ ,盗图一张:https://blog.csdn.net/iracer/article/details/80498732
4、将 .whl 文件放到环境 python3 的site-packages 下,路径见图,在 Anaconda Prompt 窗口,执行 pip install opencv-xxx.whl 文件:
5、再测试,打印出opencv 的版本,安装成功。
6、终于安装成功,欢天喜地去 pycharm 开发。首先设置使用新创建的环境:File --> Settings --> Project Interpreter 选择环境 Python3 下的python.exe:
7、新建文件,内容如下:
import cv2
img = cv2.imread("code.jpg")
imgGrey = cv2.imread("code.jpg", 0)
cv2.imshow("img", img)
cv2.imshow("imgGrey", imgGrey)
cv2.waitKey()
cv2.imwrite("Copy.jpg", imgGrey)
执行……,我那个擦,报错:
8、经查询,是numpy版本不对,哎,那就升级 numpy 版本,进入Anaconda Prompt 窗口,执行 pip install -U numpy:
再测试,弹出灰度前后的图片,嗯嗯 终于成功。
三)、通过anaconda 安装包tesserocr
1、首先安装tesseract,下载地址:https://sourceforge.net/projects/tesseract-ocr/,默认一步步安装即可。
2、通过anaconda navigator 搜索 tesserocr 没有找到,所以还是通过opencv 方式下载安装tesserocr-2.4.0-cp37-cp37m-win_amd64.whl(选择适合的版本),此处不再赘述。
3、通过tesserocr 处理图片时,用到PIL,所以通过 anaconda navigator 搜索安装 pillow。
4、安装成功后,在pycharm 中编辑内容:
import tesserocr
from PIL import Image
image = Image.open('Copy.jpg')//该py文件路径下的Copy.jpg
result = tesserocr.image_to_text(image)
print(result)
哎呀,我那个擦,又报错:
又是版本不正确,所以通过命令方式下载安装:
在pycharm 中看到 pillow 版本从5.2 升级到了5.4,运行程序成功。
5、至此,可以成功解析部分验证码,但是正确率有待提高,比如:5 与 S,8 与 B,0 与 Q O等。后续整理……