如何使用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 相关文章推荐
python3实现短网址和数字相互转换的方法
Apr 28 Python
Python模块包中__init__.py文件功能分析
Jun 14 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
Jun 30 Python
Python tornado队列示例-一个并发web爬虫代码分享
Jan 09 Python
python读取图片并修改格式与大小的方法
Jul 24 Python
python 3.6.2 安装配置方法图文教程
Sep 18 Python
Python动态语言与鸭子类型详解
Jul 01 Python
使用Python实现文字转语音并生成wav文件的例子
Aug 08 Python
Django 查询数据库并返回页面的例子
Aug 12 Python
python各层级目录下import方法代码实例
Jan 20 Python
如何基于python把文字图片写入word文档
Jul 31 Python
 分享一个Python 遇到数据库超好用的模块
Apr 06 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
用PHP和ACCESS写聊天室(三)
2006/10/09 PHP
标准版Eclipse搭建PHP环境的详细步骤
2015/11/18 PHP
Highslide.js是一款基于js实现的网页中图片展示插件
2020/03/30 Javascript
Apply an AutoFormat to an Excel Spreadsheet
2007/06/12 Javascript
编写高性能的JavaScript 脚本的加载与执行
2010/04/19 Javascript
Jquery中获取iframe的代码
2011/01/11 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
JavaScript中诡异的delete操作符
2015/03/12 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
2016/10/28 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
js中document.write和document.writeln的区别
2018/03/11 Javascript
详解微信小程序调起键盘性能优化
2018/07/24 Javascript
解决element UI 自定义传参的问题
2018/08/22 Javascript
对vuex中getters计算过滤操作详解
2019/11/06 Javascript
提升Python程序运行效率的6个方法
2015/03/31 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
Django实现登录随机验证码的示例代码
2018/06/20 Python
使用python将mysql数据库的数据转换为json数据的方法
2019/07/01 Python
linux下安装python3和对应的pip环境教程详解
2019/07/01 Python
python scatter函数用法实例详解
2020/02/11 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
你正在寻找的CSS3 动画技术
2011/07/27 HTML / CSS
惠普加拿大在线商店:HP加拿大
2017/09/15 全球购物
荷兰皇家航空公司官方网站:KLM Royal Dutch Airlines
2017/12/07 全球购物
c++工程师面试问题
2013/08/04 面试题
建龙钢铁面试总结
2014/04/15 面试题
主持人演讲稿范文
2013/12/28 职场文书
应聘文员自荐信范文
2014/03/11 职场文书
关于雷锋的演讲稿
2014/05/10 职场文书
帮一个朋友写的求职信
2014/08/09 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
最美乡村教师观后感
2015/06/11 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书