如何使用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文件操作类操作实例详解
Jul 11 Python
Python中优化NumPy包使用性能的教程
Apr 23 Python
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
Jan 20 Python
设计模式中的原型模式在Python程序中的应用示例
Mar 02 Python
Python实现Smtplib发送带有各种附件的邮件实例
Jun 05 Python
详解Python读取yaml文件多层菜单
Mar 23 Python
numpy求平均值的维度设定的例子
Aug 24 Python
python随机数分布random均匀分布实例
Nov 27 Python
基于pytorch中的Sequential用法说明
Jun 24 Python
Django xadmin安装及使用详解
Oct 26 Python
python基于openpyxl生成excel文件
Dec 23 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 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 高效率写法 推荐
2010/02/21 PHP
PHP连接MySQL的2种方法小结以及防止乱码
2014/03/11 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
2014/06/26 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
在js中单选框和复选框获取值的方式
2009/11/06 Javascript
探讨JavaScript中声明全局变量三种方式的异同
2013/12/03 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
2014/04/06 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
2018/11/13 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
2020/01/14 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
jQuery HTML css()方法与css类实例详解
2020/05/20 jQuery
python模拟新浪微博登陆功能(新浪微博爬虫)
2013/12/24 Python
Python自动重试HTTP连接装饰器
2015/04/28 Python
Python同时向控制台和文件输出日志logging的方法
2015/05/26 Python
Python中的变量和作用域详解
2016/07/13 Python
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
python远程连接服务器MySQL数据库
2018/07/02 Python
python 常用的基础函数
2018/07/10 Python
从DataFrame中提取出Series或DataFrame对象的方法
2018/11/10 Python
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
2014/09/26 面试题
精彩的大学生自我评价
2013/11/17 职场文书
客户经理岗位职责
2013/12/08 职场文书
七年级英语教学反思
2014/01/15 职场文书
同学聚会老师邀请函
2014/01/28 职场文书
知识竞赛活动方案
2014/02/18 职场文书
工商治理实习生的自我评价分享
2014/02/20 职场文书
个人贷款担保书
2014/04/01 职场文书
反对四风问题自我剖析材料
2014/09/29 职场文书
工程资料员岗位职责
2015/04/13 职场文书
离婚起诉书范文2015
2015/05/19 职场文书
杨善洲观后感
2015/06/04 职场文书
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers