最近在爬某网站,老是蹦出来验证码,就想着找个 OCR 破了这个验证码,然后就开始了 OCR 探索之旅。
首先简单说一下什么是 OCR
OCR 是(Optical Character Recognition,光学字符识别)的简称,主要用途:
OCR 识别的验证码原理
- 采集一批验证码,根据图片特点进行初步处理(二值化/灰度化/滤波/降噪等处理)
- 然后分割图片,旋转图片,模板选取,训练算法,让它更准确。
- 有兴趣的可以看一个 Python 实现的 OCR 识别验证码详细 demo,实际操作过程挺有意思的,大家有兴趣了可以试试
OCR 识别验证码的具体操作
-
首先我测试了一个百度开源的 Node.js 实现的 OCR 包
gitHub 地址 https://github.com/netpi/baidu-ocr-api
安装也很简单直接按照官方的文档安装即可
发现百度的这个 OCR 包识别效果不太理想
-
然后经过一番 Google 和小伙伴们的推荐 选择一个 Google 开源的 tesseract 这个是 C++ 写的,直接融合到爬虫里不太方便,有外国朋友基于 tesseract 封装了一个 Python 的包 ,直接开箱即用,融入爬虫程序中。
-
百闻不如一 run
ps(这里使用的操作系统是 Ubuntu16.04;Python 版本是 2.7)
直接pip install pytesseract
然后 Python 图片处理要用到 PIL(Python Imaging Library)pip install PIL
原图片
写个简单的测试 demo
看下识别结果
报错了, 根据报错信息来看,是确实了什么文件,或者依赖 lib
我跟踪了 pytesseract 的代码,发现是少了 C++ 提供的 OCR 服务,因为 pytesseract 是调用的 tesseract(C++ 写的)
然后安装 tesseractsudo apt install tesseract
再 run 一下代码
整体结果还可以(倒数第四位识别错了),再训练一下准确率就更高了。
预知后事如何,且听下回分解
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于