如何使用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计算三维矢量幅度的方法
Jun 15 Python
Python利用matplotlib生成图片背景及图例透明的效果
Apr 27 Python
Python3调用微信企业号API发送文本消息代码示例
Nov 10 Python
替换python字典中的key值方法
Jul 06 Python
python3实现小球转动抽奖小游戏
Apr 15 Python
详解用python写网络爬虫-爬取新浪微博评论
May 10 Python
python中bytes和str类型的区别
Oct 21 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
Feb 12 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
Jun 17 Python
详解pyinstaller生成exe的闪退问题解决方案
Jun 19 Python
常用的10个Python实用小技巧
Aug 10 Python
Python数据可视化常用4大绘图库原理详解
Oct 23 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 empty(),isset(),is_null()的实例测试详解
2013/06/06 PHP
php配合jquery实现增删操作具体实例
2013/12/12 PHP
YII使用url组件美化管理的方法
2015/12/28 PHP
JavaScript 异步调用框架 (Part 1 - 问题 & 场景)
2009/08/03 Javascript
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
2015/04/05 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
利用python分析access日志的方法
2016/10/26 Javascript
JavaScript交换两个变量值的七种解决方案
2016/12/01 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
2017/02/14 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
JS通过位运算实现权限加解密
2018/08/14 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
2019/04/25 Javascript
[01:22:42]2014 DOTA2华西杯精英邀请赛 5 24 DK VS LGD
2014/05/26 DOTA
[05:36]DOTA2 2015国际邀请赛中国区预选赛第四日TOP10
2015/05/29 DOTA
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
2017/07/25 Python
在PyCharm导航区中打开多个Project的关闭方法
2019/01/17 Python
python pprint模块中print()和pprint()两者的区别
2020/02/10 Python
浅谈django框架集成swagger以及自定义参数问题
2020/07/07 Python
Kaufmann Mercantile官网:家居装饰、配件、户外及更多
2018/09/28 全球购物
Madewell澳大利亚官方网站:美国休闲服饰品牌
2019/07/18 全球购物
英文商务邀请信
2014/01/22 职场文书
CAD制图设计师自荐信
2014/01/29 职场文书
毕业生如何写自我鉴定
2014/03/15 职场文书
学生社团文化节开幕式主持词
2014/03/28 职场文书
环保建议书200字
2014/05/14 职场文书
节能环保演讲稿
2014/08/28 职场文书
教师工作决心书
2015/02/04 职场文书
2019银行竞聘书
2019/06/21 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书
MySql新手入门的基本操作汇总
2021/05/13 MySQL
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL
springboot 启动如何排除某些bean的注入
2021/08/02 Java/Android