如何用python运用ocr技术来识别文字

blogray / 2024-04-29 / 原文

要先安装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

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技术,可以大大提高爬取的效率,不必每一个验证码亲历亲为。此外还可以得到像

 这样的代码,不必一个字一个字地去敲(大家可以以这两个思路来做一下作业)