OCR
OCR,即Optical Character Recognition,光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程。对于图形验证码来说,它们都是一些不规则的字符,这些字符确实是由字符稍加扭曲变换得到的内容。
tesserocr是Python的一个OCR识别库,但其实是对tesseract做了一层Python API的封装,所以它的核心是tesseract。因此,在安装tesserocr之前,我们需要先安装tesseract。
Windows下的安装
在Windows下,首先需要下载tesseract,它为tesserocr提供了支持。
tesseract下载地址:http://digi.bib.uni-mannheim.de/tesseract
进入下载页面,可以看到有各种.exe文件的下载列表,这里可以选择下载4.0的版本。
其中文件名带dev的为开发版本,不带dev的为稳定版本,可以选择下载不带dev的稳定版本。
下载完成后双击,此时会出现如图所示的页面。
此时可以勾选Additional language data(download)选项来安OCR识别支持的语言包,这样OCR便可以识别多国语言。然后一路点击Next安装即可。安装完成之后需要配置两个环境变量:path里面添加一个值:安装路径,然后设置一个新变量名为TESSDATA_PREFIX,值是语言包(一个名为tessdata的文件夹,应该在安装目录)的目录。
接下来,再安装tesserocr即可,此时直接使用pip安装:
pip install tesserocr pillow
Windows10cmd执行完命令之后会出现如图所示的错误。
具体怎么解决这个问题,我也尝试了很多办法,在这里我直接给出正确的解决方案。参考:https://anaconda.org/simonflueckiger/tesserocr,直接使用conda安装:
conda install -c simonflueckiger/label/tesseract-4.0.0-master tesserocr
验证安装
接下来,我们可以用tesseract和tesserocr来分别进行测试。下面我们以如图所示的图片为样例进行测试。
首先在命令行用tesseract命令进行测试:
tesseract ChenZhiHao.png result -l eng && type result.txt
运行结果如下:
这里我们调用了tesseract命令,其中第一个参数为图片名称,第二个参数result为结果保存的目标文件的名称,-l指定使用的语言包,在此使用英文(eng)。然后再用type命令将结果输出。
运行结果便是图片的识别结果:ChenZhiHao。可以看到,这时已经成功将图片文字转为电子文本了。
然后还可以利用Python代码来测试,这里就需要借助tesserocr库了,测试代码如下。
代码语言:javascript复制 import tesserocr
from PIL import Image
image = Image.open('ChenZhiHao.png')
print(tesserocr.image_to_text(image))
运行结果:
另外我们还可以直接调用file_to_text()方法,这可以达到同样的效果:
代码语言:javascript复制 import tesserocr
print(tesserocr.file_to_text('ChenZhiHao.png'))
运行结果:
如果成功输出结果,则证明tesseract和tesserocr都已经安装成功。