图片验证码现在已经不怎么多了,打码平台都已经没什么市场了,现在随便一个现成的通杀库都可以识别所有类型的图片验证码,于是乎稍微大一点的网站都会使用滑块、点选这些行为验证来防刷、防爬了!
一般很多图片验证码、各种滑块都是使用Python来训练的,往大了说这些都属于神经网络的事情了,需要大量的数据、算法、机器学习、深度学习知识等,并且如果做好了具有很高的商业价值,因此开源的比较少。
这里介绍一个比较优秀的图像识别开源库:Tesseract
将图片翻译成文字一般被成为光学文字识别(Optical Character Recognition),简写为OCR
Tesseract
Tesseract是一个OCR库,目前由谷歌赞助,Tesseract是目前公认最优秀、最准确的开源OCR库。Tesseract具有很高的识别度,也具有很高的灵活性,他可以通过训练识别任何字体。
安装
Windows系统:
在以下链接下载可执行文件,然后一顿点击下一步安装即可(放在不需要权限的纯英文路径下):https://github.com/tesseract-ocr/
Linux系统:
可以在以下链接下载源码自行编译:
https://github.com/tesseract-ocr/tesseract/wiki/Compiling
或者在ubuntu下通过以下命令进行安装:
sudo apt install tesseract-ocr
Mac系统:
用Homebrew即可方便安装:
brew install tesseract
设置环境变量:
安装完成后,如果想要在命令行中使用Tesseract,需要设置环境变量
Mac和Linux在安装的时候就默认已经设置好了
Windows下把tesseract.exe所在的路径添加到PATH环境变量中即可
还有一个环境变量也需要设置:训练用的数据文件路径
在环境变量中,添加 ESSDATA_PREFIX=D:\path_to_tesseractdata\teseractdata
在命令行中使用tesseract识别图像
识别图片:
设置好环境变量后,使用命令:tesseract 图片路径 文件路径
tesseract a.png a
会识别出a.png中的图片,并且把文字写入到a.txt中。如果不想写入文件直接想显示在终端,不加文件名就可以了
查看tesseract下的一些属性和方法:
tesseract -h
查看当前有哪些识别库:
tesseract --list-langs