Quantcast
Channel: CodeSection,代码区,Python开发技术文章_教程 - CodeSec
Viewing all articles
Browse latest Browse all 9596

OCR识别验证码

$
0
0

最近在爬某网站,老是蹦出来验证码,就想着找个OCR破了这个验证码,然后就开始了OCR探索之旅。

首先简单说一下什么是OCR

OCR是(Optical Character Recognition, 光学字符识别 )的简称,主要用途:

办公用途,用来识别图片里面的文字,可以高效率的录入图片类型文件。 识别网站验证码 详见 维基百科 或者 百度百科 OCR识别的验证码原理 采集一批验证码,根据图片特点进行初步处理(二值化/灰度化/滤波/降噪等处理) 然后分割图片,旋转图片,模板选取,训练算法,让它更准确。 有兴趣的可以看一个python实现的OCR识别验证码详细 demo , 实际操作过程挺有意思的,大家有兴趣了可以试试 OCR识别验证码的具体操作

首先我测试了一个百度开源的Node.js实现的OCR包

gitHub地址 https://github.com/netpi/baidu-ocr-api

安装也很简单直接按照 官方的文档 安装即可

发现百度的这个OCR包识别效果不太理想


OCR识别验证码

然后经过一番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

原图片


OCR识别验证码

写个简单的测试demo


OCR识别验证码

看下识别结果


OCR识别验证码

报错了, 根据报错信息来看,是确实了什么文件,或者依赖lib

我跟踪了pytesseract的代码,发现是少了C++提供的OCR服务,因为pytesseract是调用的tesseract(C++写的)

然后安装tesseract sudo apt install tesseract

再run一下代码


OCR识别验证码

整体结果还可以(倒数第四位识别错了),再训练一下准确率就更高了。

预知后事如何,且听下回分解


Viewing all articles
Browse latest Browse all 9596

Trending Articles