python爬虫-31-python图形验证码进阶,识别中文(二)

python爬虫-31-python图形验证码进阶,识别中文(二)_第1张图片

有些验证码是中文的,使用的时候可能发现了,并不能支持识别中文,那么我们应该如何解决呢?

1、python识别图片中的中文字符-old

先来看下默认的情况下识别中文是什么样子的呢,比如我们要识别下图:

python爬虫-31-python图形验证码进阶,识别中文(二)_第2张图片

然后我们写出如下代码:

import pytesseract
from PIL import Image

pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files (x86)\Tesseract-OCR\tesseract.exe"
image = Image.open(r"C:\Users\22768\Desktop\gzh\chinese_0.jpg")
text = pytesseract.image_to_string(image, lang='eng+osd')
print(text)

运行结果:

ffi’:

赖荤
蝴

可以看到并没有识别出来,是乱码;

2、安装tesseract新版本+tesseract语言包

python通过tesseract识别图形中文乱码,是因为你安装的时候没有选择合适的语言进行安装,上一文中我们是直接默认下一步安装的,且安装版本是tesseract-ocr-setup-3.02.02.exe,这个版本在安装的时候确实可以选择其他语言进行支持,但是你只能选择,并没办法进行下载。且官网也没有对应该版本的语言支持包,所以我这里重新找了一个**5.1.0**版本的程序包进行安装,这个软件包是没有问题的;

获取tesseract软件包的方式为:

微信公众号“运维家”,后台回复:resseract软件包

即可获取tesseract软件包的网盘下载地址了;

tesseract这个软件安装的过程中,windows安装路径必须选择:

C:\Program Files (x86)\Tesseract-OCR

如果是windows务必选择以上路径进行安装哈;

我们可以选择语言,点击Additional language data(download)前面的符号,就会展示出来很多语言,如果识别的内容比较复杂,建议全选,将所有的语言包都下载下来,我这里为了演示,只选择了和中文有关的,也就是抬头是“Chinese”的;

python爬虫-31-python图形验证码进阶,识别中文(二)_第3张图片

然后点击下一步即可,这里我们会看到下图的安装界面,可能会比较慢,因为他会一个个下载语言包,这里我们耐心等待即可;

python爬虫-31-python图形验证码进阶,识别中文(二)_第4张图片

出现下面的界面就表示安装成功了;

python爬虫-31-python图形验证码进阶,识别中文(二)_第5张图片

tesseract软件无法下载语言包,或者tesseract下载语言包失败,如果有这种问题,是因为啥呢?那简单了,就是因为他的语言包在国外,网络不稳定所导致的,那么我们如何解决呢,我这里准备了一份完整的语言包,直接解压覆盖你resseract安装路径中的tessdata这个文件夹即可。

获取tesseract 5.1.0语言包的方式为:

微信公众号“运维家”,后台回复:tesseract语言包

即可获取tesseract语言包的网盘下载地址了;

然后我们需要将C:\Program Files (x86)\Tesseract-OCR\tessdata这个路径下的内容全部拷贝到C:\Program Files (x86)\Tesseract-OCR目录下方可,不然会报错以下信息:

pytesseract.pytesseract.TesseractError: (1, 'Error opening data file C:\\Program Files (x86)\\Tesseract-OCR\\eng.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory. Failed loading language \'eng\' Tesseract couldn\'t load any languages! Could not initialize tesseract.')

3、再次使用tesseract进行中文识别

先来看下他现在支持多少种语言了吧;

import pytesseract
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files (x86)\Tesseract-OCR\tesseract.exe"
print(pytesseract.get_languages())

运行结果如下:

['chi_sim', 'chi_sim_vert', 'chi_tra', 'chi_tra_vert', 'eng', 'osd']

当使用我上面提供的语言包之后,就会发现支持的语言变成了下面这么多:

['afr', 'amh', 'ara', 'asm', 'aze', 'aze_cyrl', 'bel', 'ben', 'bod', 'bos', 'bre', 'bul', 'cat', 'ceb', 'ces', 'chi_sim', 'chi_sim_vert', 'chi_tra', 'chi_tra_vert', 'chr', 'cos', 'cym', 'dan', 'deu', 'div', 'dzo', 'ell', 'eng', 'enm', 'epo', 'equ', 'est', 'eus', 'fao', 'fas', 'fil', 'fin', 'fra', 'frk', 'frm', 'fry', 'gla', 'gle', 'glg', 'grc', 'guj', 'hat', 'heb', 'hin', 'hrv', 'hun', 'hye', 'iku', 'ind', 'isl', 'ita', 'ita_old', 'jav', 'jpn', 'jpn_vert', 'kan', 'kat', 'kat_old', 'kaz', 'khm', 'kir', 'kmr', 'kor', 'lao', 'lat', 'lav', 'lit', 'ltz', 'mal', 'mar', 'mkd', 'mlt', 'mon', 'mri', 'msa', 'mya', 'nep', 'nld', 'nor', 'oci', 'ori', 'osd', 'pan', 'pol', 'por', 'pus', 'que', 'ron', 'rus', 'san', 'sin', 'slk', 'slv', 'snd', 'spa', 'spa_old', 'sqi', 'srp', 'srp_latn', 'sun', 'swa', 'swe', 'syr', 'tam', 'tat', 'tel', 'tgk', 'tha', 'tir', 'ton', 'tur', 'uig', 'ukr', 'urd', 'uzb', 'uzb_cyrl', 'vie', 'yid', 'yor']

这个时候我们再次来识别文章最开始的时候的图片,来看看是否识别出来了吧。

import pytesseract
from PIL import Image

pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files (x86)\Tesseract-OCR\tesseract.exe"
image = Image.open(r"C:\Users\22768\Desktop\gzh\1654881934269.jpg")
text = pytesseract.image_to_string(image, lang='chi_sim+chi_sim_vert+chi_tra+chi_tra_vert')
print(text)

运行结果如下:

运维家

那么我们再来识别一张字比较多的图片再试试呢,例如:

运行代码

import pytesseract
from PIL import Image

pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files (x86)\Tesseract-OCR\tesseract.exe"
image = Image.open(r"C:\Users\22768\Desktop\gzh\1654882172968.jpg")
text = pytesseract.image_to_string(image, lang='chi_sim+chi_sim_vert+chi_tra+chi_tra_vert')
print(text)

结果:

钟山风雨起苔划,百万雄师过大江。
虎跟龙盘今胜苦,天翻地覆慨而慷。
二将剩筋追穷坪,不可沽名学等王。
天吞有情天订老,人间正道是沧对 。

不可避免有一些错字,但是已经很少了。

至此,本文结束。相关内容每日更新。

更多内容请转至VX公众号 “运维家” ,获取最新文章。

------ “运维家” ------
------ “运维家” ------
------ “运维家” ------

linux系统下,mknodlinux,linux目录写权限,大白菜能安装linux吗,linux系统创建文件的方法,领克linux系统怎么装软件,linux文本定位;
ocr识别linux,linux锚定词尾,linux系统使用记录,u盘有linux镜像文件,应届生不会Linux,linux内核64位,linux自启动管理服务;
linux计算文件夹大小,linux设备名称有哪些,linux能用的虚拟机吗,linux系统进入不了命令行,如何创建kalilinux,linux跟so文件一样吗。

你可能感兴趣的:(python爬虫,爬虫)