如何使用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 正则式 概述及常用字符
May 07 Python
python实现socket端口重定向示例
Feb 10 Python
python创建一个最简单http webserver服务器的方法
May 08 Python
Python文件读写保存操作的示例代码
Sep 14 Python
python爬虫之urllib库常用方法用法总结大全
Nov 14 Python
Python计算时间间隔(精确到微妙)的代码实例
Feb 26 Python
python多线程与多进程及其区别详解
Aug 08 Python
python使用 request 发送表单数据操作示例
Sep 25 Python
python批量将excel内容进行翻译写入功能
Oct 10 Python
python 扩展print打印文件路径和当前时间信息的实例代码
Oct 11 Python
python 实现兔子生兔子示例
Nov 21 Python
Python基于pyecharts实现关联图绘制
Mar 27 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中长文章分页显示实现代码
2012/09/29 PHP
php编写的抽奖程序中奖概率算法
2015/05/14 PHP
关于PHP开发的9条建议
2015/07/27 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
用javascript实现的激活输入框后隐藏初始内容
2007/06/29 Javascript
jquery中的sortable排序之后的保存状态的解决方法
2010/01/28 Javascript
Safari5中alert的无限循环BUG
2011/04/07 Javascript
javascript的字符串按引用复制和传递,按值来比较介绍与应用
2012/12/28 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
2014/07/14 Javascript
如何调试异步加载页面里包含的js文件
2014/10/30 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
JQuery中serialize()用法实例分析
2015/02/06 Javascript
javascript异步处理工作机制详解
2015/04/13 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
js 获取经纬度的实现方法
2016/06/20 Javascript
详解AngularJS验证、过滤器、指令
2017/01/04 Javascript
JavaScript实现的select点菜功能示例
2017/01/16 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
js弹性势能动画之抛物线运动实例详解
2017/07/27 Javascript
js实现随机点名系统(实例讲解)
2017/10/18 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
Vue 实现双向绑定的四种方法
2018/03/16 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
python3图片转换二进制存入mysql
2013/12/06 Python
Python AES加密模块用法分析
2017/05/22 Python
python高阶爬虫实战分析
2018/07/29 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
2019/08/05 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
小学生竞选班长演讲稿
2014/04/24 职场文书
MySQL系列之四 SQL语法
2021/07/02 MySQL
tp5使用layui实现多个图片上传(带附件选择)的方法实例
2021/11/17 PHP
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers