一、前言

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

二、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 pytesseractpip install pillow

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

三、文字识别

(1)单张图片识别

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

在这里插入图片描述

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

import pytesseractfrom 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 pytesseractfrom 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.jpgsentence2.jpg

我们将代码修改为如下:

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

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

import osimport 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提取图片中的文字信息,腾讯内部技术,一行代码搞定!...

    用过手机QQ就知道,点击一个图片会弹出一个小功能,那就是提取图片中的文字.非常方便实用,那么很难实现吗? 利用Python提取图片中的文字信息,只需要一行代码就能搞定! 当然,这是吹牛皮的,但是真正的 ...

  2. python文字识别算法_Python图像处理之图片文字识别(OCR)

    OCR与Tesseract介绍 将图片翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR).可以实现OCR 的底层库并不多,目前很多库都是使用共同的几 ...

  3. python 识别登陆验证码图片(完整代码)_python 识别登录验证码图片功能的实现代码(完整代码)...

    在编写自动化测试用例的时候,每次登录都需要输入验证码,后来想把让python自己识别图片里的验证码,不需要自己手动登陆,所以查了一下识别功能怎么实现,做一下笔记. 首选导入一些用到的库,re.Imag ...

  4. python人脸识别代码_Python不用10行代码就可实现人脸识别,还可辨别真假,太棒了!...

    人脸识别技术大致由人脸检测和人脸识别两个环节组成.之所以要有人脸检测,不光是为了检测出照片上是否有人脸,更重要的是把照片中人脸无关的部分删掉,否则整张照片的像素都传给f(x)识别函数肯定就不可用了.人 ...

  5. python图片识别论文_Python识别文字,实现看图说话 | CSDN博文精选

    原标题:Python识别文字,实现看图说话 | CSDN博文精选 作者 | 张小腿 来源 | CSDN博客 现在写文件很多网站都不让复制了,所以每次都是截图然后发到QQ上然后用手机QQ的文字识别再发回 ...

  6. python调用摄像头人脸识别代码_Python使用 opencv调用笔记本摄像头进行人脸识别...

    首先需要导入opencv库pip install  -i https://pypi.tuna.tsinghua.edu.cn/simple/   opencv-python 上代码#万码学堂Pytho ...

  7. 人脸识别代码_Python人脸识别源代码可自动识别出年龄、性别等

    利用百度AI进行人脸识别,可自动识别出年龄.性别等信息,准确率非常高. 运行程序前请安装需要的模块. import base64from aip import AipFaceimport cv2# 配 ...

  8. python摄像头人脸识别代码_python 实现摄像头人脸识别

    1.window安装dlib.face_recognition ace_recognition简介 face_recognition是Python的一个开源人脸识别库,支持Python 3.3+和Py ...

  9. python二维码生成识别代码_Python学习案例之二维码生成识别

    前言 在 JavaWeb 开发中,一般使用 Zxing 来生成和识别二维码,但是,Zxing 的识别有点差强人意,不少相对模糊的二维码识别率很低.不过就最新版本的测试来说,识别率有了现显著提高. 对比 ...

最新文章

  1. 一些惹起热烈争议的PCB布线经验法则
  2. /dev/null 位桶
  3. Http://selboo.com.cn
  4. mac插网线不能上网_实现两个无线路由器之间的连接,最稳定的方式是使用网线连接...
  5. Python学习:集合
  6. .NET Core开发实战(第9课:命令行配置提供程序)--学习笔记
  7. Java Web整体异常处理
  8. storyboard搭建项目_swift项目第五天:swift中storyBoard Reference搭建主界面
  9. MySQL运维实战 之 PHP访问MySQL你使用对了吗
  10. jquery ajax实例 php,jquery中各个ajax实例操作
  11. 字节跳动和OPPO:机器翻译等智能时代算法技术如何落地?
  12. opencv cvhog详解
  13. !和!!的区别和用法
  14. 磁盘占用率100%——多番尝试
  15. 【终端快捷键】Linux terminal 终端常用快捷键
  16. 游戏玩家的程序猿之路
  17. C语言实现汉诺塔问题(保姆式讲解)
  18. @用Python的turtle库画一个奥运五环!
  19. 【统计学习方法】第7章 支持向量机
  20. [Python]... 和pass

热门文章

  1. PyTorch 实现孪生网络识别面部相似度
  2. 51nod1238 最小公倍数之和 V3
  3. 区块链应用 | 用区块链颠覆视频直播,与视频卡顿、缓冲说再见!
  4. javascript全局观
  5. mysql主从状态异常解决办法
  6. Linux大文件处理,伪分区
  7. Office 365强势来袭PART1:云中Outlook体验
  8. LINUX DNS服务的配置(一)
  9. (转)C# 3.0 LINQ 的演变及其对 C# 设计的影响
  10. spyder jupyter集成