Python识别图片中的文字

  • 前言
  • Tesseract
    • (1)Tesseract的安装及配置
    • (2)下载语言包
    • (3)其它模块下载
  • 文字识别
    • (1)单张图片识别
    • (2)批量图片识别

前言

不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制。或者像百度文档一样,只能复制一部分,这个时候我们就会选择截图保存。但是当我们想用到里面的文字时,还是要一个字一个字打出来。那么我们能不能直接识别图片中的文字呢?答案是肯定的。

Tesseract

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

(1)Tesseract的安装及配置

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

有很多版本供大家选择,大家可以根据自己的需求选择。其中w32表示32位系统,w64表示64位系统,大家选择合适的版本即可,可能下载速度比较慢,大家可以选择链接:pan.baidu.com/s/1jKZe_ACL… 提取码:ayel下载。安装时我们需要知道我们安装的位置,将安装目录配置到系统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识别图片中的文字相关推荐

  1. 如何用Python识别图片中的文字?

    如何用Python识别图片中的文字? 转:https://mp.weixin.qq.com/s/wXDJoAAI8y1mtbUuwATngQ 以下文章来源于微信公众号:新建文件夹X ,作者ZackSo ...

  2. 用 Python 识别图片中的文字

    一.前言 不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制.或者像百度文档一样,只能复制一部分,这个时候我们就会选择截图保存.但是当我们想用到里面的 ...

  3. python批量识别图片中文字_如何用Python识别图片中的文字?

    一.前言 不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制.或者像百度文档一样,只能复制一部分,这个时候我们就会选择截图保存.但是当我们想用到里面的 ...

  4. python保存图片到指定路径_用 Python 识别图片中的文字

    (给Python开发者加星标,提升Python技能) 来源:ZackSock 一.前言 不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制.或者像百度 ...

  5. python识别图片文字_如何利用Python识别图片中的文字

    一.前言 不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制.或者像百度文档一样,只能复制一部分,这个时候我们就会选择截图保存.但是当我们想用到里面的 ...

  6. python识别图片上的文字_怎么用python识别图片中的文字-百度经验

    在网上看了很多用python进行文字识别的文章,就只有两个字的体会:乱.差.因为很多模块,我都不知道怎么安装,弄得焦头烂额,反而因此浪费了很多时间,而且到最后也是没能成功. 在文章中插入大量BUG,让 ...

  7. python识别汉字笔画_Python识别图片中的文字

    Python识别图片中的文字 一.前言 不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制.或者像百度文档一样,只能复制一部分,这个时候我们就会选择截 ...

  8. python识别图片上的文字_Python如何识别图片中的文字 【转】

    Python如何识别图片中的文字,这里给个案例并附上详细步骤: 模块包的安装: 1.安装PIL:pip install Pillow 2.安装pytesser3:pip install pytesse ...

  9. python如何识别中文_python如何识别图片中的文字

    python如何识别图片中的文字,这里给个案例并附上详细步骤: 模块包的安装: 1.安装PIL:pip install Pillow 2.安装pytesser3:pip install pytesse ...

  10. python 图片识别_Python—识别图片中的文字

    一.前言 不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制.或者像百度文档一样,只能复制一部分,这个时候我们就会选择截图保存.但是当我们想用到里面的 ...

最新文章

  1. 【java】兴唐第二十五节课小程序学生卡转账小系统(自己写的异常)
  2. 用C语言解“12-24小时制”题
  3. 微软回应Windows 7用户账号控制安全质疑 称将调整
  4. windows聚焦壁纸不更新_技术编辑示范win10系统锁屏壁纸聚焦不更新的处理教程
  5. Qt文档阅读笔记-官方Form Extractor Example实例解析
  6. AI(2)---高通人工智能
  7. 常用的排序算法总结(一)
  8. Eclipse是否必需要安装jdk,jre
  9. 朴素贝叶斯-垃圾邮件(英文的)处理
  10. LoadRunner压力测试:测试报告
  11. 运动会比赛计分系统c语言课程设计,c语言课程设计运动会比赛计分系统(含任务书).doc...
  12. 智能配电系统监控解决方案在长白山机场配电工程的研究与应用
  13. 压力变送器matlab,总结压差变送器三种不同故障以及处理方法[理论结合实际]
  14. Android实现TTS文字转语音功能
  15. 计算机房需要排风吗,机房新风排风系统怎么样 机房新风排风系统原理介绍【详解】...
  16. 市政协调研组:建议设大数据管理局
  17. [SMOJ1810]基因测试
  18. 提取视频音乐的简单方法
  19. 静态方法中调用非静态方法
  20. UCI Susy Data set

热门文章

  1. 蓝桥杯python青少年_让孩子参加蓝桥杯大赛好吗
  2. PPT、EXCEL、SPSS、水晶易表教程与学习资料汇总
  3. 华为USB线刷工具的使用
  4. Webmax简易入门操作手册(一)
  5. 软件使用疑难杂症解决记录篇——科瑞工程量计算簿
  6. pid控制算法c语言,PID控制算法的C语言实现(三)
  7. iec611313标准下载_iec611313编程标准.ppt
  8. 高中计算机教师学期论文,高中信息技术教学论文范文
  9. [经典力学]牛顿自然哲学的数学原理论文解读
  10. xy坐标转换经纬度C语言,经纬度与坐标转换公式