如何使用Python进行OCR识别图片中的文字


Posted in Python onApril 01, 2019

朋友需要一个工具,将图片中的文字提取出来。我帮他在网上找了一些OCR的应用,都不好用。所以准备自己研究,写一个Web APP供他使用。

OCR1,全称Optical character recognition,或者optical character reader,中文译名叫做光学文字识别。它是把图像文件中的手写文本,打印文本转换为机器编码文本的一种方法。

OCR技术广泛用于识别打印纸张中的文字数据 -- 比如护照,支票,银行声明,收据,统计表单,邮件等。OCR的早期版本,需要对图片中的每个文字都进行训练,一次只能作用于一种字体。高级的版本增加了很大的识别率,可以同时识别现在很多流行的字体,支持不同种类格式的图片文件。一些系统可以生成接近于原来图片格式的输出,包括图片,排版,以及其它非文本组件,这也叫做版面还原。

工具

Tesseract

现在最出名,最常用的OCR就是谷歌的tesseract OCR engine2。最新的版本是Tesseract4。Tesseract的主要开发者是Ray Smith3.

Tesseract支持unicode(UTF-8),安装后即可识别超过100种语言。

Tesseract支持不同的输出可是:普通文本,hOCR(html),PDF,TSV,invisible-text-only PDF。在master分支,还试验性地支持ALTO(XML)格式。

请记住,在大多数情况下,为了获得更好的OCR结果,你需要为提供给Tesseract的图片提升质量4.

Tesseract可以通过训练来识别其它语言和其它字体5.

另外,有很多第三方的Tesseract GUI应用。可以直接下载使用6。

pytesseract

Python-tesseract7(pytesseract)是Google Tesseract ORC引擎的封装。首次commit的2014年。用这个库,可以很方便地编写脚本,可以用它来识别所有可以由PIL识别的图片格式,包括jpeg, png, gif, bmp, tiff等, 而tesseract-orc本来只支持tiff和bmp两种格式。

如果在脚本中使用,识别的文本可以输出为Python字符串,而不是直接输出到文件中。

另外,这个代码库只有一个文件,400行代码。如果有任何疑问,可以直接翻看源代码。

tesserocr

tesserocr8也是一个TesseractOCR的封装库。它的首次commit是2015年。

这个库相对于pytesseract的优势在于9,这个库是使用Cython来直接调用Tesseract的C++ API。使用它和threading模块来处理图片,可以释放GIL,达到正常的并发执行。

1.Wiki: OCR

2.Github: tesseract OCR engine

3.Tesseract作者 Ray Smith,美国计算机科学家,计算机图形学的先驱. 他的中文名字叫做匠白光. ↩

4.Wiki: 为Tesseract提升图片质量

5.Wiki: 训练Tesseract

6.Tesseract第三方GUI应用列表

7.Github: Python-tesseract

8.Github: tesserocr

9.Hacknews: 关于pytesseract, tesserocr的区别

总结

以上所述是小编给大家介绍的如何使用Python进行OCR识别图片中的文字,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python群发邮件实例代码
Jan 03 Python
python使用pyhook监控键盘并实现切换歌曲的功能
Jul 18 Python
Python中让MySQL查询结果返回字典类型的方法
Aug 22 Python
python实现端口转发器的方法
Mar 13 Python
python将文本转换成图片输出的方法
Apr 28 Python
浅谈python中的__init__、__new__和__call__方法
Jul 18 Python
关于Tensorflow中的tf.train.batch函数的使用
Apr 24 Python
python库lxml在linux和WIN系统下的安装
Jun 24 Python
python使用adbapi实现MySQL数据库的异步存储
Mar 19 Python
Django使用redis缓存服务器的实现代码示例
Apr 28 Python
python实现五子棋程序
Apr 24 Python
Python代码覆盖率统计工具coverage.py用法详解
Nov 25 Python
Python datetime和unix时间戳之间相互转换的讲解
Apr 01 #Python
详解Python网络框架Django和Scrapy安装指南
Apr 01 #Python
详解python的argpare和click模块小结
Mar 31 #Python
linux安装python修改默认python版本方法
Mar 31 #Python
Django中使用Whoosh进行全文检索的方法
Mar 31 #Python
Python实现的爬取小说爬虫功能示例
Mar 30 #Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
Mar 30 #Python
You might like
DSP接收机前端设想
2021/03/02 无线电
php关于array_multisort多维数组排序的使用说明
2011/01/04 PHP
PHP会员找回密码功能的简单实现
2016/09/05 PHP
Laravel5.1自定义500错误页面示例
2016/10/09 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
2017/04/19 PHP
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
jquery 页面全选框实践代码
2010/04/02 Javascript
基于jQuery选择器的整理集合
2013/04/26 Javascript
使用JS实现jQuery的addClass, removeClass, hasClass函数功能
2014/10/31 Javascript
js+css实现上下翻页相册代码分享
2015/08/18 Javascript
非常实用的12个jquery代码片段
2015/11/02 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
2016/07/04 Javascript
jQuery Validate插件实现表单验证
2016/08/19 Javascript
Vue中的数据监听和数据交互案例解析
2017/07/12 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
2018/12/18 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
2019/08/08 Javascript
jQuery实现查看图片功能
2020/12/01 jQuery
wxpython学习笔记(推荐查看)
2014/06/09 Python
matplotlib subplots 设置总图的标题方法
2018/05/25 Python
python面向对象 反射原理解析
2019/08/12 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
2019/08/13 Python
python实现矩阵和array数组之间的转换
2019/11/29 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
HomeAway英国:全球领先的度假租赁在线市场
2020/02/03 全球购物
毕业自我评价范文
2013/11/17 职场文书
汽车专业人才自我鉴定范文
2013/12/29 职场文书
英语专业学生的自我评价
2013/12/30 职场文书
入党积极分子思想汇报范文
2014/01/05 职场文书
《陶罐和铁罐》教学反思
2014/02/19 职场文书
地球一小时活动总结
2015/02/27 职场文书
单独二胎证明
2015/06/24 职场文书
大学开学典礼新闻稿
2015/07/17 职场文书
2019大学生实习报告
2019/06/21 职场文书
Python实现单例模式的5种方法
2021/06/15 Python
Nginx开源可视化配置工具NginxConfig使用教程
2022/06/21 Servers