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


Posted in Python onMay 31, 2020

一、前言

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

二、Tesseract

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

(1)Tesseract的安装及配置

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

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

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

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

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

(2)下载语言包

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

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

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

(3)其它模块下载

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

pip install pytesseract
pip install pillow

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

三、文字识别

(1)单张图片识别

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

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

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

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目录下有简体中文包该设置才会生效。下面是我们用来识别的图片:

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

识别结果如下:

不 要 温 顺 的 走 进 那 个 良 夜

图片内容被准确识别出来了。有一点我们需要知道,在我们将语言设置为简体中文或其它语言后,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 相关文章推荐
centos 下面安装python2.7 +pip +mysqld
Nov 18 Python
Python 遍历列表里面序号和值的方法(三种)
Feb 17 Python
python OpenCV学习笔记实现二维直方图
Feb 08 Python
Python日期时间对象转换为字符串的实例
Jun 22 Python
Python OOP类中的几种函数或方法总结
Feb 22 Python
Python 窗体(tkinter)按钮 位置实例
Jun 13 Python
python在新的图片窗口显示图片(图像)的方法
Jul 11 Python
scikit-learn线性回归,多元回归,多项式回归的实现
Aug 29 Python
python实现FTP循环上传文件
Mar 20 Python
解决Django no such table: django_session的问题
Apr 07 Python
TensorFlow的reshape操作 tf.reshape的实现
Apr 19 Python
python munch库的使用解析
May 25 Python
Python模拟登入的N种方式(建议收藏)
May 31 #Python
Python多线程正确用法实例解析
May 30 #Python
PyQt5实现简单的计算器
May 30 #Python
PyQt5实现登录页面
May 30 #Python
Python网页解析器使用实例详解
May 30 #Python
PyQt5实现画布小程序
May 30 #Python
Java ExcutorService优雅关闭方式解析
May 30 #Python
You might like
apache php模块整合操作指南
2012/11/16 PHP
PHP程序级守护进程的实现与优化的使用概述
2013/05/02 PHP
php自动加载方式集合
2016/04/04 PHP
详解PHP中foreach的用法和实例
2016/10/25 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
2017/11/03 PHP
用javascript做拖动布局的思路
2008/05/31 Javascript
JavaScript 全面解析各种浏览器网页中的JS 执行顺序
2009/02/17 Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
JavaScript职责链模式概述
2016/09/17 Javascript
100行代码理解和分析vue2.0响应式架构
2017/03/09 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
详解Vue2.0组件的继承与扩展
2018/11/23 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
2019/09/03 jQuery
原生JS实现pc端轮播图效果
2020/12/21 Javascript
Javascript实现关闭广告效果
2021/01/29 Javascript
[04:00]DOTA2解说界神雕侠侣 CJ第四天谷子现场过生日
2013/07/30 DOTA
[01:09]DOTAPLUS——DOTA2的新时代
2018/04/04 DOTA
python 把列表转化为字符串的方法
2018/10/23 Python
树莓派与PC端在局域网内运用python实现即时通讯
2019/06/22 Python
Django 开发环境配置过程详解
2019/07/18 Python
pycharm + django跨域无提示的解决方法
2020/12/06 Python
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
美国顶级奢侈茶:Mighty Leaf Tea(美泰茶)
2016/11/26 全球购物
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
会计专业推荐信
2013/10/29 职场文书
庆六一文艺汇演活动方案
2014/08/26 职场文书
2014最新预备党员思想汇报范文:中国梦,我的梦
2014/10/25 职场文书
2015年医生个人工作总结
2015/04/25 职场文书
大学校园餐饮创业计划书
2019/08/07 职场文书
react如何快速设置文件路径别名
2021/04/28 Javascript
新手必备Python开发环境搭建教程
2021/05/28 Python
Python中文纠错的简单实现
2021/07/07 Python