首页 > 编程语言 >如何用python运用ocr技术来识别文字

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

时间:2024-04-28 23:22:06浏览次数:25  
标签:识别 python image pytesseract ocr 安装 Image

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

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

 

标签:识别,python,image,pytesseract,ocr,安装,Image
From: https://www.cnblogs.com/blogray/p/18164737

相关文章

  • 揭秘Python中的JSON数据格式与Requests模块
    From: https://mp.weixin.qq.com/s/QgGyn2efYtVKI65RwXoiEA------------------------------------------------------------------------------------importpytestimportjsonimportrequestsfromrequests.authimportHTTPBasicAuthfromrequests.adaptersimportHTTPA......
  • Python中lambda表达式的用法
    lambda表达式本身是一个非常基础的python函数语法,其基本功能跟使用def所定义的python函数是一样的,只是lambda表达式基本在一行以内就完整的表达了整个函数的运算逻辑。这里我们简单展示一些lambda表达式的使用示例,以供参考。二元求和首先我们尝试一个最简单的二元求和的ipython......
  • python使用迭代生成器yield减少内存占用的方法
    在python编码中for循环处理任务时,会将所有的待遍历参量加载到内存中。其实这本没有必要,因为这些参量很有可能是一次性使用的,甚至很多场景下这些参量是不需要同时存储在内存中的,这时候就会用到本文所介绍的迭代生成器yield。1.基本使用首先我们用一个例子来演示一下迭代生成器yi......
  • Python多线程编程深度探索:从入门到实战
    title:Python多线程编程深度探索:从入门到实战date:2024/4/2818:57:17updated:2024/4/2818:57:17categories:后端开发tags:多线程并发编程线程安全Python异步IO性能优化实战项目第1章:Python基础知识与多线程概念Python简介:Python是一种高级、通用、解释......
  • python读取文件指定行的三种方法
    1.行遍历实现在python中如果要将一个文件完全加载到内存中,通过file.readlines()即可,但是在文件占用较高时,我们是无法完整的将文件加载到内存中的,这时候就需要用到python的file.readline()进行迭代式的逐行读取:filename='hello.txt'withopen(filename,'r')asfile:l......
  • 在Python中将字典转为成员变量的方法
    当我们在Python中写一个class时,如果有一部分的成员变量需要用一个字典来命名和赋值,此时应该如何操作呢?这个场景最常见于从一个文件(比如json、npz之类的文件)中读取字典变量到内存当中,再赋值给一个类的成员变量,或者已经生成的实例变量。使用__dict__定义成员变量在python中直接支......
  • python裁切视频后三秒
    代码: importsubprocessfromdatetimeimporttimedeltaimportosdefparse_time(time_str):"""将时间字符串解析为秒"""hours,minutes,seconds=map(int,time_str.split(':'))returntimedelta(hours=hours,minutes......
  • 第一章 python基础
    1.变量1.1变量的概念可以改变的量就是变量,实际上指代码的是内存的一块空间在内存中,变量默认一次只能指向一个值,当一个值没有任何变量指向的时候,内存会自动把数据从内存释放1.2变量的命名字母、数字、下划线,首字符不能为数字严格区分大小写,且不能使用关键字变量命......
  • Python-PyQt5接口压测工具分享
    1、页面介绍  2、运行效果 ......
  • python主题LDA建模和t-SNE可视化
    原文链接:http://tecdat.cn/?p=4261原文出处:拓端数据部落公众号 使用潜在Dirichlet分配(LDA)和t-SNE中的可视化进行主题建模。本文中的代码片段仅供您在阅读时更好地理解。有关完整的工作代码,请参阅完整资料。我们将首先介绍主题建模和t-SNE,然后将这些技术应用于两个数据集:20个......