如何利用Python识别图片中的文字详解

 更新时间:2021年05月28日 11:28:53   作者:克金森沐沐  
不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制.这个时候我们就会选择截图保存,但是当我们想用到里面的文字时,还是要一个字一个字打出来,那么能不能直接识别图片中的文字呢?答案是肯定的,需要的朋友可以参考下

一、Tesseract

文字识别是ORC的一部分内容,ORC的意思是光学字符识别,通俗讲就是文字识别。Tesseract是一个用于文字识别的工具,我们结合Python使用可以很快的实现文字识别。但是在此之前我们需要完成一个繁琐的工作。

(1)Tesseract的安装及配置

Tesseract的安装我们可以移步到该网址 https://digi.bib.uni-mannheim.de/tesseract/,我们可以看到如下界面:

在这里插入图片描述

有很多版本供大家选择,大家可以根据自己的需求选择。其中w32表示32位系统,w64表示64位系统,大家选择合适的版本即可,可能下载速度比较慢,安装时我们需要知道我们安装的位置,将安装目录配置到系统path变量当中,我们路径是D:\CodeField\Tesseract-OCR

在这里插入图片描述

我们右击我的电脑/此电脑->属性->高级系统设置->环境变量->Path->编辑->新建然后将我们的路径复制进去即可。添加好系统变量后后我们还需要依次点确定,这样才算配置好了。

(2)下载语言包

Tesseract默认是不支持中文的,如果想要识别中文或者其它语言需要下载相应的语言包,下载地址如下:https://tesseract-ocr.github.io/tessdoc/Data-Files ,进入网站后我们往下翻:

在这里插入图片描述

其中有两个中文语言包,一个Chinese-Simplified和Chinese-Traditional,它们分别是简体中文和繁体中文,我们选择需要的下载即可。下载完成后我们需要放到Tesseract的路径下的tessdata目录下,我们路径是D:\CodeField\Tesseract-OCR\tessdata

(3)其它模块下载

除了上面的步骤,我们还需要下载两个模块:

pip install pytesseract
pip install pillow

第一个是用于文字识别的,第二个是用于图片读取的。接下来我们就可以进行文字识别了。

二、文字识别

(1)单张图片识别

接下来的操作就要简单的多,下面是我们要识别的图片:

在这里插入图片描述

接下来就是我们文字识别的代码:

import pytesseract
from PIL import Image
# 读取图片
im = Image.open('sentence.jpg')
# 识别文字
string = pytesseract.image_to_string(im)
print(string)

识别结果如下:

Do not go gentle into that good night!

因为默认是支持英文的,所以我们可以直接识别,但是当我们要识别中文或其它语言时就需要做些修改:

import pytesseract
from PIL import Image
# 读取图片
im = Image.open('sentence.png')
# 识别文字,并指定语言
string = pytesseract.image_to_string(im, lang='chi_sim')
print(string)

在识别时,我们设置lang='chi_sim',也就是把语言设置为简体中文,只有当你的tessdata目录下有简体中文包该设置才会生效。下面是我们用来识别的图片:

在这里插入图片描述

识别结果如下:

不 要 温 顺 的 走 进 那 个 良 夜

图片内容被准确识别出来了。有一点我们需要知道,在我们将语言设置为简体中文或其它语言后,Tesseract还是可以识别出英文字符。

(2)批量图片识别

既然我们把单张图片识别列出来了,就肯定还有批量图片识别这个功能,这就需要我们准备一个txt文件了,比如我有文件,text.txt内容如下:

sentence1.jpg
sentence2.jpg

我们将代码修改为如下:

import pytesseract
# 识别文字
string = pytesseract.image_to_string('text.txt', lang='chi_sim')
print(string)

但是这样自己写一个txt文件难免有些麻烦,因此我们又可以进行如下修改:

import os
import pytesseract
# 文字图片的路径
path = 'text_img/'
# 获取图片路径列表
imgs = [path + i for i in os.listdir(path)]
# 打开文件
f = open('text.txt', 'w+', encoding='utf-8')
# 将各个图片的路径写入text.txt文件当中
for img in imgs:
    f.write(img + '\n')
# 关闭文件
f.close()
# 文字识别
string = pytesseract.image_to_string('text.txt', lang='chi_sim')
print(string)

这样我们只需要传入一个文字图片的根目录就可以批量进行识别了。在测试过程中发现,Tesseract对手写体、行楷等飘逸的字体识别不准确,对一些复杂的字识别也有待提升。但是宋体、印刷体等笔画严谨的字体识别准确率很高。另外如果图片的倾斜大于一定的角度,识别结果也会有很大差别。

到此这篇关于如何利用Python识别图片中的文字详解的文章就介绍到这了,更多相关Python识别图片中的文字内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python+pandas编写命令行脚本操作excel的tips详情

    Python+pandas编写命令行脚本操作excel的tips详情

    这篇文章主要介绍了Python+pandas编写命令行脚本操作excel的tips详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • python一些性能分析的技巧

    python一些性能分析的技巧

    这篇文章主要介绍了python一些性能分析的技巧,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-08-08
  • 在python 不同时区之间的差值与转换方法

    在python 不同时区之间的差值与转换方法

    今天小编就为大家分享一篇在python 不同时区之间的差值与转换方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python实现人机五子棋

    python实现人机五子棋

    这篇文章主要为大家详细介绍了python实现人机五子棋,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • Python实现双轴组合图表柱状图和折线图的具体流程

    Python实现双轴组合图表柱状图和折线图的具体流程

    这篇文章主要介绍了Python双轴组合图表柱状图+折线图,Python绘制双轴组合的关键在plt库的twinx()函数,具体实例代码跟随小编一起看看吧
    2021-08-08
  • Python中的__slots__示例详解

    Python中的__slots__示例详解

    在python新式类中,可以定义一个变量__slots__,它的作用是阻止在实例化类时为实例分配dict,下面这篇文章主要给大家介绍了关于Python中__slots__的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-07-07
  • Python装饰器用法实例总结

    Python装饰器用法实例总结

    这篇文章主要介绍了Python装饰器用法,结合实例形式总结分析了Python常用装饰器的概念、功能、使用方法及相关注意事项,需要的朋友可以参考下
    2018-02-02
  • Python中threading模块join函数用法实例分析

    Python中threading模块join函数用法实例分析

    这篇文章主要介绍了Python中threading模块join函数用法,以实例形式较为详细的分析了join函数的功能与使用方法,需要的朋友可以参考下
    2015-06-06
  • python实现信号时域统计特征提取代码

    python实现信号时域统计特征提取代码

    今天小编就为大家分享一篇python实现信号时域统计特征提取代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python字符串的修改方法实例

    Python字符串的修改方法实例

    这篇文章主要介绍了Python字符串的修改方法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12

最新评论