要先安装ocr技术,也就是光学符号识别,通过扫描等光学输入方式将各种票据、报刊、书籍、文稿及其他印刷品的文字转化为图像信息,再利用文字识别技术将图像信息转化为可以使用的文本的技术(我在百度百科抄的),市面上大多数的文本识别,都基本是ocr技术。那用python怎么搞呢?
1、安装环境
我们要先安装Tesseract,大家可以参考https://cuiqingcai.com/31102.html(不要安装tesserocr,有坑),大家可以按照这上面的步骤一步步安装,就是像我一样使用ubuntu的人,用git命令下载tessdata时要先下载git,然后github下载极慢,经常动不动下一半报错失败,你先输入sudo vi /etc/hosts
,抄https://www.cnblogs.com/blog-dyn/p/16071670.html里面的ip进去,之后按下esc,输入:wq(这里面的vi可以是vim,建议大家学习一下vim,效率很高),在之后刷新DNS,输入sudo systemctl restart systemd-resolved,下载应该会快一点(总之我的电脑有用),然后pip安装:
pip3 install pytesseract
还要安装Pillow库,来做图像处理:
pip3 install Pillow
如果安装过慢,可以换源,可参考https://www.cnblogs.com/HeavyShield/p/12294179.html
2、正片
如下面的程序
1 #导入 2 import pytesseract#ocr库 3 from PIL import Image#PIL库 4 5 #导入图片 6 add_image = input("图片地址......") 7 try:#异常处理 8 image = Image.open(add_image) 9 except FileNotFoundError: 10 print("no such file or dictionary!") 11 else: 12 result = pytesseract.image_to_string(image, lang="chi_sim+eng")#ocr识别 13 with open("test.txt","w") as fp: 14 fp.write(result)#存入txt
导入库应该没什么问题, image = Image.open(add_image) 来新建一个目标图片的Image对象,然后神之一笔来啦, result = pytesseract.image_to_string(image, lang="chi_sim+eng") 中image_to_string将图片中的文字转为文本,括号中第一项为目标图片的Image对象,lang设置识别的语言,这里"chi_sim+eng"为简体中文和英语。最后的结果存入result,没啦!区区几行代码,我们便识别出图像中的文字并存储到文件中
3、可以干什么
对于爬虫来说,登录的验证码需要填写才能进入网站,有一些网站还使用像
的验证码,你可以通过requests来爬取图片,然后人工填写验证码上传,如果使用ocr技术,可以大大提高爬取的效率,不必每一个验证码亲历亲为。此外还可以得到像
这样的代码,不必一个字一个字地去敲(大家可以以这两个思路来做一下作业)