在Python中我们可以利用光学识别验证码模块tesserocr和pytesseract来进行识别验证码,他们的核心是tesseract
一:安装tesseract
1:windows安装tesseract
(1):下载并安装tesseract
tesseract下载地址:https://digi.bib.uni-mannheim.de/tesseract/
选择你需要的版本进行下载,这里注意:tesseract 版本在3.0以下的不支持中文识别,下载包上带有dev的表示不稳定版本,下载时最好下载不带有dev字符的下载包,这里我下载的是tesseract-ocr-w64-setup-v4.0.0.20181030版本,将下载下来的tesseract双击进行安装即可
(2):tesseract配置语言包
语言包下载地址:https://github.com/tesseract-ocr/tessdata/
将下载下来的语言包解压之后,将解压包中的所有文件复制到安装目录的tessdata目录下就可以了
(3):配置环境变量
右击我的电脑/计算机,选择属性,然后选择高级属性设置,选择环境变量,在系统变量的path变量中添加你的tesseract 安装目录就可以了
(4):验证安装
tesseract --version
如上表示安装成功
tesseract --list-langs #查看已安装的语言包
2:linux安装tesseract
(1):tesseract安装
依赖安装
yum install -y automake autoconf libtool gcc gcc-c++
安装leptonica:http://www.leptonica.org/download.html
wget http://www.leptonica.org/source/leptonica-1.74.4.tar.gz
tar -zxvf leptonica-1.74.4.tar.gz
cd leptonica-1.74.4/
./configure
make && make install
安装tesseract:https://github.com/tesseract-ocr/tesseract
wget https://github.com/tesseract-ocr/tesseract/archive/3.04.zip
unzip 3.04.zip
cd tesseract-3.04/
./autogen.sh
./configure
make && make install
(2):语言包安装
语言包地址:https://github.com/tesseract-ocr/tessdata
wget --no-check-certificate https://github.com/tesseract-ocr/tessdata/raw/master/eng.traineddata #下载英文语言包
wget --no-check-certificate https://github.com/tesseract-ocr/tessdata/raw/master/chi_sim.traineddata #下载中文简体语言包
wget --no-check-certificate https://github.com/tesseract-ocr/tessdata/raw/master/chi_tra.traineddata #下载中文繁体语言包
将语言包下载下来之后将语言包移到tesseract安装目录下
mv *.traineddata /usr/local/share/tessdata/
3:tesseract简单使用
tesseract image.png result (tesseract 图片名称 生成文件名称)
这时候就可以在命令行目录下看到一个名为result.txt的文件,文件内就为图片识别的文字内容
二:python安装pytesseract拓展
pip install pytesseract
三:python实现图片文字识别示例
简单示例
import pytesseract
from PIL import Image
im=Image.open('test.png')#需要识别的验证码图片
print(pytesseract.image_to_string(im))
上面的代码可以获取到图片中的文字信息,但是许多图标比较复杂,如果直接识别的话会很难识别出来,这时候我们需要对图片进行灰度处理和二值化处理
import pytesseract
from PIL import Image
save_path = 'test.png'
image = cv2.imread(save_path)
# 将图片转换为灰度图
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 应用阈值化以突出显示白色文字
_, thresh = cv2.threshold(gray, 200, 255, cv2.THRESH_BINARY_INV)
# 保存处理后的图像(可选)
processed_image_path = save_path
cv2.imwrite(processed_image_path, thresh)
# 使用Pillow加载处理后的图像
processed_image = Image.open(processed_image_path)
# 使用pytesseract将图片转换为文字
text = pytesseract.image_to_string(processed_image)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。