如何使用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 相关文章推荐
详解C++编程中一元运算符的重载
Jan 19 Python
python的dataframe和matrix的互换方法
Apr 11 Python
python 字符串和整数的转换方法
Jun 25 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
Jul 25 Python
Python中GeoJson和bokeh-1的使用讲解
Jan 03 Python
python opencv将图片转为灰度图的方法示例
Jul 31 Python
Django ORM 自定义 char 类型字段解析
Aug 09 Python
django实现支付宝支付实例讲解
Oct 17 Python
pycharm部署、配置anaconda环境的教程
Mar 24 Python
Python 在局部变量域中执行代码
Aug 07 Python
Python使用for生成列表实现过程解析
Sep 22 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
Dec 31 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中Session的概念
2006/10/09 PHP
Phpbean路由转发的php代码
2008/01/10 PHP
swfupload 多文件上传实现代码
2008/08/27 PHP
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
怎么在Windows系统中搭建php环境
2013/08/31 PHP
php判断一个数组是否为有序的方法
2015/03/27 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
2015/04/15 PHP
Javascript的闭包
2009/12/31 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
让低版本浏览器支持input的placeholder属性(js方法)
2013/04/03 Javascript
location.href用法总结(最主要的)
2013/12/27 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
angular+webpack2实战例子
2017/05/23 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
JS获取填报扩展单元格控件的值的解决办法
2017/07/14 Javascript
React-Native中禁用Navigator手势返回的示例代码
2017/09/09 Javascript
jquery select插件异步实时搜索实例代码
2017/10/20 jQuery
小程序组件之自定义顶部导航实例
2019/06/12 Javascript
基于vue 动态菜单 刷新空白问题的解决
2020/08/06 Javascript
JS实现购物车基本功能
2020/11/08 Javascript
python使用代理ip访问网站的实例
2018/05/07 Python
基于python的BP神经网络及异或实现过程解析
2019/09/30 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
2020/03/19 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
2020/12/03 Python
Python爬虫爬取ts碎片视频+验证码登录功能
2021/02/22 Python
澳洲的UGG雪地靴超级市场:Uggs.com.au
2020/04/06 全球购物
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
大学新生军训个人的自我评价
2013/10/03 职场文书
公立医院改革实施方案
2014/03/14 职场文书
公司年会策划方案
2014/05/17 职场文书
音乐会主持人开场白
2015/05/28 职场文书
2016年世界艾滋病日宣传活动总结
2016/04/01 职场文书