最近在爬某网站,总是蹦出来验证码,就想着找个OCR破了这个验证码,而后就开始了OCR探索之旅。node
OCR是(Optical Character Recognition,光学字符识别)的简称,主要用途:git
采集一批验证码,根据图片特色进行初步处理(二值化/灰度化/滤波/降噪等处理)api
而后分割图片,旋转图片,模板选取,训练算法,让它更准确。测试
有兴趣的能够看一个Python实现的OCR识别验证码详细demo,实际操做过程挺有意思的,你们有兴趣了能够试试网站
首先我测试了一个百度开源的Node.js实现的OCR包
gitHub地址 https://github.com/netpi/baidu-ocr-apiurl
安装也很简单直接按照官方的文档安装便可
发现百度的这个OCR包识别效果不太理想spa
![node_ocr.png][1]
而后通过一番Google和小伙伴们的推荐 选择一个Google开源的tesseract这个是C++写的,直接融合到爬虫里不太方便,__有外国朋友基于tesseract封装了一个Python的包pytesseract__,直接开箱即用,融入爬虫程序中。
百闻不如一run
**ps(这里使用的操做系统是Ubuntu16.04;Python版本是2.7)** 直接 `pip install pytesseract` 而后Python图片处理要用到PIL(Python Imaging Library) `pip install PIL` 原图片
写个简单的测试demo ![code.png][3] 看下识别结果 ![error.png][4] 报错了, 根据报错信息来看,是确实了什么文件,或者依赖lib 我跟踪了pytesseract的代码,发现是少了C++提供的OCR服务,由于pytesseract是调用的tesseract(C++写的) 而后安装tesseract ```sudo apt install tesseract``` 再run一下代码
总体结果还能够(倒数第四位识别错了),再训练一下准确率就更高了。
预知后事如何,且听下回分解