如何使用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 14 Python
Python获取服务器信息的最简单实现方法
Mar 05 Python
Python实现单词拼写检查
Apr 25 Python
对Python3.x版本print函数左右对齐详解
Dec 22 Python
Python流行ORM框架sqlalchemy安装与使用教程
Jun 04 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
May 11 Python
python 实现图像快速替换某种颜色
Jun 04 Python
浅谈Python3中print函数的换行
Aug 05 Python
python获得命令行输入的参数的两种方式
Nov 02 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
Dec 04 Python
python实现b站直播自动发送弹幕功能
Feb 20 Python
使用python创建股票的时间序列可视化分析
Mar 03 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
完美实现GIF动画缩略图的php代码
2011/01/02 PHP
CI框架自动加载session出现报错的解决办法
2014/06/17 PHP
基于Laravel5.4实现多字段登录功能方法示例
2017/08/11 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
ThinkPHP5 框架引入 Go AOP,PHP AOP编程项目详解
2020/05/12 PHP
基于MooTools的很有创意的滚动条时钟动画
2010/11/14 Javascript
动态加载外部javascript文件的函数代码分享
2011/07/28 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
JavaScript和CSS通过expression实现Table居中显示
2013/06/28 Javascript
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
jQuery实现流动虚线框的方法
2015/01/29 Javascript
Underscore.js常用方法总结
2015/02/28 Javascript
jQuery制作效果超棒的手风琴折叠菜单
2015/04/03 Javascript
微信小程序 教程之wxapp视图容器 scroll-view
2016/10/19 Javascript
Bootstrap源码解读导航条(7)
2016/12/23 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
vue项目中全局引入1个.scss文件的问题解决
2019/08/01 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
python实现360的字符显示界面
2014/02/21 Python
python中list循环语句用法实例
2014/11/10 Python
Python中方法链的使用方法
2016/02/23 Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
Python利用Django如何写restful api接口详解
2018/06/08 Python
Python3.5局部变量与全局变量作用域实例分析
2019/04/30 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
如何将json数据转换为python数据
2020/09/04 Python
英国卫浴商店:Ergonomic Design
2019/09/22 全球购物
春节联欢晚会主持词范文
2014/03/24 职场文书
祖国在我心中的演讲稿
2014/05/04 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
杜甫草堂导游词
2015/02/03 职场文书
仓库管理制度范本
2015/08/04 职场文书
《司马光》教学反思
2016/02/22 职场文书
Python基础详解之描述符
2021/04/28 Python
MySQL分库分表详情
2021/09/25 MySQL