如何使用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 Trie树实现字典排序
Mar 28 Python
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
Aug 25 Python
Python将xml和xsl转换为html的方法
Mar 10 Python
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
Apr 09 Python
在Python操作时间和日期之asctime()方法的使用
May 22 Python
讲解Python中fileno()方法的使用
May 24 Python
Python装饰器使用实例:验证参数合法性
Jun 24 Python
一文总结学习Python的14张思维导图
Oct 17 Python
python读取文本中的坐标方法
Oct 14 Python
Python 带有参数的装饰器实例代码详解
Dec 06 Python
python爬取音频下载的示例代码
Oct 19 Python
关于python pygame游戏进行声音添加的技巧
Oct 24 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中根据变量的类型 选择echo或dump
2012/07/05 PHP
解析数组非数字键名引号的必要性
2013/08/09 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
2015/10/09 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
2017/01/16 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
Ajax+Json 级联菜单实现代码
2009/10/27 Javascript
jquery isType() 类型判断代码
2011/02/14 Javascript
多浏览器兼容性比较好的复制到剪贴板的js代码
2011/10/09 Javascript
js的匿名函数使用介绍
2013/12/11 Javascript
js+html5实现可在手机上玩的拼图游戏
2015/07/17 Javascript
使用JQuery FancyBox插件实现图片展示特效
2015/11/16 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
Bootstrap整体框架之CSS12栅格系统
2016/12/15 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
JavaScript在控件上添加倒计时功能的实现代码
2017/07/04 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
使用react context 实现vue插槽slot功能
2019/07/18 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
深入讲解Python编程中的字符串
2015/10/14 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
Python实现字符串匹配的KMP算法
2019/04/04 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
python使用writerows写csv文件产生多余空行的处理方法
2019/08/01 Python
金宝贝童装官网:Gymboree
2016/08/31 全球购物
资生堂美国官网:Shiseido美国
2016/09/02 全球购物
GLAMGLOW格莱魅美国官网:美国知名的面膜品牌
2016/12/31 全球购物
乌克兰在线药房:Аптека24
2019/10/30 全球购物
上海方立数码笔试题
2013/10/18 面试题
Windows和Linux动态库应用异同
2016/04/17 面试题
酒店员工职业生涯规划
2014/02/25 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
2016年寒假社会实践活动总结
2015/03/27 职场文书