图形验证码识别技术

阻碍我们爬虫的有时候正是在登录或者请求一些数据时侯的图形验证码,因此这里我们讲解一种能将图片翻译成文字的技术。将图片翻译成文字一般被成为光学文字识别(Optical Character Recognition),简写为OCR。实现OCR的库不是很多,特别是开源的。因为这块存在一定的技术壁垒(需要大量的数据、算法、机器学习、深度学习知识等),并且如果做好了具有很高的商业价值。因此开源的比较少。这里介绍一个比较优秀的图像识别开源库:Tesseract

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,那么应该设置环境变量。MacLinux在安装的时候就默认已经设置好了。在Windows下把tesseract.exe所在的路径添加到PATH环境变量中。

还有一个环境变量需要设置的是,要把训练的数据文件路径也放到环境变量中。
在环境变量中,添加一个TESSDATA_PREFIX=C:\path_to_tesseractdata\teseractdata

在命令行中使用tesseract识别图像:

如果想要在cmd下能够使用tesseract命令,那么需要把tesseract.exe所在的目录放到PATH环境变量中。然后使用命令:tesseract 图片路径 文件路径

那么就会识别出a.png中的图片,并且把文字写入到a.txt中。如果不想写入文件直接想显示在终端,那么不要加文件名就可以了。

安装语言包

如果想要识别中文,这个时候就要下载语言包,这里是链接:https://github.com/tesseract-ocr/tessdata/blob/master/chi_sim.traineddata

(他喵的谁能告诉我github下载怎么提速,wc)

下载完,直接放到安装位置的tessdata文件夹里就好了

在代码中使用tesseract识别图像:

在python代码中操作tesseract,需要安装一个库pytesseract,可以通过pip的方式安装。

pip install pytesseract

并且需要读取图片,需要借助一个第三方库叫PIL,通过pip list 看下是否安装,如果没有

pip install pillow

使用pytesseract将图片上的文字转化为文本文字的代码如下

import pytesseract
from PIL import Image
#指定tesseract.exe的路径
pytesseract.pytesseract.tesseract_cmd=r'C:/Tesseract-OCR/tesseract.exe'
img=Image.open('C:/Tesseract-OCR/demo/4.jpg')
#调用image_to_string是图片转文字
text=pytesseract.image_to_string(img)
print(text)

如果是中文简体的话,加'lang'选项

import pytesseract
from PIL import Image
pytesseract.pytesseract.tesseract_cmd=r'C:/Tesseract-OCR/tesseract.exe'
img=Image.open('C:/Tesseract-OCR/demo/6.png')
text=pytesseract.image_to_string((img), lang='chi_sim')
print(text)

(其实我感觉挺垃圾的,背景色只能是白色好像)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值