如何使用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实现爬虫统计学校BBS男女比例之数据处理(三)
Dec 31 Python
Python实现FTP上传文件或文件夹实例(递归)
Jan 16 Python
简单谈谈Python中的几种常见的数据类型
Feb 10 Python
ubuntu中配置pyqt4环境教程
Dec 27 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
Python requests模块实例用法
Feb 11 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
Apr 26 Python
关于Python内存分配时的小秘密分享
Sep 05 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
Oct 30 Python
python根据文本生成词云图代码实例
Nov 15 Python
Python爬虫实现自动登录、签到功能的代码
Aug 20 Python
python3.7.2 tkinter entry框限定输入数字的操作
May 22 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+java实现自动新闻滚动窗口
2006/10/09 PHP
PHP文件打开、关闭、写入的判断与执行代码
2011/05/24 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
php将字符串转化成date存入数据库的两种方式
2014/04/28 PHP
php输入流php://input使用浅析
2014/09/02 PHP
ThinkPHP3.2.3实现分页的方法详解
2016/06/03 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
javascript中substr,substring,slice.splice的区别说明
2010/11/25 Javascript
Javascript中拼接大量字符串的方法
2015/02/05 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
在javascript中创建对象的各种模式解析
2016/05/16 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
jquery 实现拖动文件上传加载进度条功能
2018/03/18 jQuery
jQuery插件Validation表单验证详解
2018/05/26 jQuery
vue删除html内容的标签样式实例
2018/09/13 Javascript
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
微信小程序实现订单倒计时
2020/11/01 Javascript
详解JWT token心得与使用实例
2019/08/02 Javascript
[04:15]DOTA2-DPC中国联赛1月19日Recap集锦
2021/03/11 DOTA
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
Python的mysql数据库的更新如何实现
2017/07/31 Python
python生成圆形图片的方法
2020/03/25 Python
python-django中的APPEND_SLASH实现方法
2019/06/21 Python
实例详解Python模块decimal
2019/06/26 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
python的数学算法函数及公式用法
2020/11/18 Python
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
求职面试个人自我评价
2014/02/28 职场文书
保密承诺书
2014/03/27 职场文书
复试通知单模板
2015/04/24 职场文书
2015年电话客服工作总结
2015/05/18 职场文书
外出考察学习心得体会
2016/01/18 职场文书
python基础之类方法和静态方法
2021/10/24 Python
java executor包参数处理功能 
2022/02/15 Java/Android
SQLServer RANK() 排名函数的使用
2022/03/23 SQL Server