Python实现识别图片为文字的示例代码
作者:Sir?老王 发布时间:2022-01-02 14:57:48
本来想着做一个将图片识别为文字的小功能,本想到Google上面第一页全是各种收费平台的广告。
这些平台提供的基本都是让我们通过调用相关的三方接口实现的,本着坚决不想花一分钱的态度,在论坛找有没有可以免费解决的方案。
果然,有大佬早就做出开源框架pytesseract,差点让我损失了一笔巨款,哈哈~
这次只为实现将图片识别为文字的业务功能,就不使用PyQt5做页面应用了。后面若是需要做成UI应用朋友比较多,我有时间会将这个小工具封装开发成一个PyQ5界面应用的小工具。
1、环境准备
还是老规矩吧,像一些比较有歧义的环境准备工作,我都会将我使用到的python库的版本列出来,防止小伙伴们走一些弯路。
操作系统:windows7
python版本:3.8.10
pytesseract版本:0.3.9
首先需要安装两个三方模块,一个是PIL图片处理库,另一个是pytesseract识别文字用到的python库。
pip install PIL -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install pytesseract -i https://pypi.tuna.tsinghua.edu.cn/simple/
安装好这两个python非标准库以后,还有一个比较重要的操作就是需要额外的安装一个工具Tesseract-OCR,这个工具实际上是我们用来识别图片必须的一个工具。
为了防止丢失,我将Tesseract-OCR工具的安装包和其需要的中文语言包放在了百度网盘中,在公众号内回复'Tesseract-OCR'工具可以获取网盘下载链接感兴趣的小伙伴直接去下载就好了。
下载完成以后直接进行解压即可,解压完成后的文件目录是下面这样的。
解压完成后直接安装Tesseract-OCR工具,双击打开就可以进行安装了,傻瓜式安装即可。
下面这个是我在给大家测试的时候截图的一张安装过程中的图。
安装完成后,我们需要将上面下载的中文包加入到安装好的Tesseract-OCR工具主目录下面的\tessdata文件夹中。
下面是我已经将中文语言包放入到../Tesseract-OCR/tessdata文件中了。
中文语言包放好后,就可以直接进入下一步的操作了,那就是修改环境相关的配置,实际上只要需要一个相关的参数就OK了。
找到本地的python环境的安装位置,找到我们前面安装好的pytesseract的位置去修改参数一个叫做tesseract_cmd变量的值,具体操作是这样的。
上面是我的pytesseract库的安装位置,找到之后打开pytesseract.py文件将tesseract_cmd变量的值替换为我们安装的Tesseract-OCR工具的tesseract.exe应用程序的路径。
默认Tesseract-OCR工具的安装位置是下面这样这个路径,小伙伴们可以根据自己的位置设置。
C:/Program Files (x86)/Tesseract-OCR/tesseract.exe
这是我已经修改好的pytesseract.py文件中tesseract_cmd变量的值。
tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/tesseract.exe'
至此,准备工作终于做完了,接下来就是我们大显身手的时间了,来轻松实现一个图片到文字的转换吧!
2、业务实现
代码实现过程相当简单,比较上面的安装配置过程简直就是小菜一碟了,导入相关的python模块中实际上只需要一行代码就可以实现将图片内容识别为文字了。
# 导入python非标准模块
from PIL import Image
import pytesseract as pyt
# 读取图片中的文字内容
text = pyt.image_to_string(Image.open('chinese-image.jpg'), lang='chi_sim')
# 打印文字内容
print(text)
3、效果展示
为了测试一下效果,我用本地的画图软件画了一张图,图片上写上文字,文字内容是:
大家好,我是 Python 集中营!下面是我的测试图片。
下面执行上面的图片识别代码块产生的效果,直接一字不差的就将文字读取的出来,简直是满满的成就感,晚上可以好好睡个觉了,没有bug的梦估计很甜!
# 大家好 , 我是 Python 集中营 !
来源:https://mp.weixin.qq.com/s/Aa5UnqilqfLX_quUpakFcQ


猜你喜欢
- 本文实例讲述了Python实现的远程登录windows系统功能。分享给大家供大家参考,具体如下:首先安装wmi 命令:pip install
- 之前整理发表了《XMLHTTPRequest的属性和方法简介》,它ajax要使用的核心的技术之一,现在就来实际运用它。这个Ajax标签导航,
- Pytorch凭借动态图机制,获得了广泛的使用,大有超越tensorflow的趋势,不过在工程应用上,TF仍然占据优势。有的时候我们会遇到这
- python书籍信息爬虫示例,供大家参考,具体内容如下背景说明需要收集一些书籍信息,以豆瓣书籍条目作为源,得到一些有效书籍信息,并保存到本地
- 摘要本文主要介绍了利用python的 threading和queue库实现多线程编程,并封装为一个类,方便读者嵌入自己的业务逻辑。最后以机器
- 下面是Python字符串的一些微妙的特性,绝对会让你大吃一惊。案例一:案例二:案例三:很好理解, 对吧?说明:这些行为是由于 Cpython
- 1、余弦相似度余弦相似度衡量的是2个向量间的夹角大小,通过夹角的余弦值表示结果,因此2个向量的余弦相似度为:余弦相似度的取值为[-1,1],
- linux系统中 linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题。 解决mysql导入导出数据乱码问
- 目录引言response响应元组形式响应make_response函数返回json格式数据其他特殊响应redirect() 重定向abort
- vue动态添加表单validateField验证,代码如下所示:<template> <el-f
- from urllib.request import urlopen  
- 如下所示:a[:, np.newaxis] # 给a最外层中括号中的每一个元素加[]a[np.newaxis, :] # 给a最外层中括号中
- 一、安 * rew终端上运行 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubus
- print(X.shape):查看矩阵的行列号print(len(X)):查看矩阵的行数print(X.ndim):查看矩阵的维数1 查看矩
- 控制字符控制字符(Control Character),或者说非打印字符,出现于特定的信息文本中,表示某一控制功能的字符,如控制符:LF(换
- 最近一直在研究网页特效,看到qq界面的折叠菜单,于是冒出个想法,自己写一个类似的,上网查了一下,发现已经有不少类似的菜单效果,不管那么多,先
- 工具安装主要调用win32库实现分辨率获取和读写,需要安装pywin32示例中是从execl列表中读取需要设置的分辨率,需要安装xlrd用到
- 每年意甲德甲英超西甲各大联赛的赛程表都是球迷们的必看之物,想起之前写过的一段生成赛程表的代码,用Python来写这类东西太舒服了。这个算法叫
- 我们在使用ASP 内置的ADO组件进行数据库编程时,通常是在脚本的开头打开一个连接,并在脚本的最后关闭它,但是就较大脚本而言,在多数情况下连
- 前言安全性是所有数据库管理系统的一个重要特征。理解安全性问题是理解数据库管理系统安全性机制的前提。最近和同事在做数据库权限清理的事情,主要是