一、前言

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

二、Tesseract

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

1.Tesseract的安装及配置

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

有很多版本供大家选择,大家可以根据自己的需求选择。其中w32表示32位系统,w64表示64位系统,大家选择合适的版本即可。

可能下载速度比较慢,大家可以选择链接:https://pan.baidu.com/s/1jKZe_ACLQCVXiCmvHj9adw 提取码: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批量识别图片中文字_如何用Python识别图片中的文字?相关推荐

  1. python批量resize图片大小_如何用Python智能批量压缩图片?

    本文一步步为你介绍,如何用Python自动判断多张图片中哪些超出阈值需要压缩,且保持宽高比.如果你想了解Python图像处理的基础知识,欢迎动手来尝试. 痛点 我喜欢用Markdown写文稿,然后发布 ...

  2. python修改word字体颜色_如何用Python快速优雅的批量修改Word文档样式?

    作者:陈熹 来源:早起Python 大家好,又到了办公自动化系列!之前讲过很多基于Excel的数据及样式调整案例,今天分享一个Python操作Word的真实自动化需求实现过程: 「使用Python批量 ...

  3. python提取pdf文件内容_如何用Python批量提取PDF文本内容?

    本文为你展示,如何用Python把许多PDF文件的文本内容批量提取出来,并且整理存储到数据框中,以便于后续的数据分析. 问题 最近,读者们在后台的留言,愈发五花八门了. 写了几篇关于自然语言处理的文章 ...

  4. 用python做舆情分析系统_如何用Python做舆情时间序列可视化?

    如何批量处理评论信息情感分析,并且在时间轴上可视化呈现?舆情分析并不难,让我们用Python来实现它吧. 痛点 你是一家连锁火锅店的区域经理,很注重顾客对餐厅的评价.从前,你苦恼的是顾客不爱写评价.最 ...

  5. python情绪分析的意义_如何用Python和R对故事情节做情绪分析?

    想知道一部没看过的影视剧能否符合自己口味,却又怕被剧透?没关系,我们可以用情绪分析来了解故事情节是否足够跌宕起伏.本文一步步教你如何用Python和R轻松愉快完成文本情绪分析.一起来试试吧. 烦恼 追 ...

  6. python中文模糊关键词提取_如何用Python提取中文关键词?

    本文一步步为你演示,如何用Python从中文文本中提取关键词.如果你需要对长文"观其大略",不妨尝试一下. 需求 好友最近对自然语言处理感兴趣,因为他打算利用自动化方法从长文本里提 ...

  7. python判断素数的函数_如何用python求素数

    如何用python求100以内的素数? 质数(primenumber)又称素数,有无限个.质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数,如:2.3.5.7.11.13.1 ...

  8. python向数据库写入数据_如何用Python向Mysql中插入数据

    我们使用Python经常会和Postgresql进行搭配,很少将python和mysql进行搭配.下面小编给大家分享如何用Python向Mysql中插入数据. 工具/原料 Pycharm 方法/步骤 ...

  9. 怎样用python搭建简单的系统_如何用Python搭建一个简单的推荐系统?

    推荐系统的相关知识我们已在前文中提到,在这篇文章中,我们会介绍如何用Python来搭建一个简单的推荐系统. 本文使用的数据集是MovieLens数据集,该数据集由明尼苏达大学的Grouplens研究小 ...

最新文章

  1. 计算机维护常识_系统篇
  2. Nginx实现静态代理,负载均衡,前后端分离
  3. 【haproxy初始化】init_haproxy.sh
  4. es6语法-箭头函数
  5. c语言作业帮,少训练大功课C语言
  6. AI向程序员老司机学习:从眼神的变化中寻找bug
  7. Hibernate类的继承使用joined-class实现
  8. 晚安西南-----尾管悬挂与回接
  9. English trip 自习内容 英语时态
  10. FPGA之VGA转HDMI之并行串行转换模块编写
  11. 我的世界Linux服务端op,服务器,后台,单机,op必备指令大全
  12. Android_版本对应
  13. 如何用计算机语言表达我想你,表达我想你的句子情话
  14. 【Shotcut】用最短路径编辑一个视频
  15. flowjo 10.5 win mac 流式细胞分析软件安装介绍
  16. Petsc求解一维非线性微分方程,SNES对象-2
  17. 创建表空间以及用户,授予权限,查看表空间名称及大小,物理文件的名称及大小,数据库的创建日期和归档方式,数据库的版本,数据库库对象,表空间的使用情况,表空间读写
  18. Erlang和Golang区别
  19. 信用卡使用时的6点,第六点认真看一下
  20. C语言:快递费用计算

热门文章

  1. Django项目创建
  2. Spring Boot 架构中的国际化支持实践—— Spring Boot 全球化解决方案
  3. 如何进行小微信贷风控?
  4. vue关闭严格语法检查
  5. chrome浏览器 快捷键_在Google Chrome浏览器中搜索网站的关键字快捷键的完整指南...
  6. 一个人竟然撸了一个全民直播 App
  7. MAC OS下配置wget
  8. 西门子smart200和v90 pn通讯控制3轴伺服程序,触摸屏程序
  9. c语言考博真题,微观经济学考博真题与难题答案详解
  10. 屏芯智能餐饮系统v1.6PC版