如何使用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求列表交集的方法汇总
Nov 10 Python
Flask框架的学习指南之开发环境搭建
Nov 20 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
Feb 13 Python
python多进程实现文件下载传输功能
Jul 28 Python
python的pip安装以及使用教程
Sep 18 Python
Python Pandas 转换unix时间戳方式
Dec 07 Python
Python urlopen()和urlretrieve()用法解析
Jan 07 Python
django3.02模板中的超链接配置实例代码
Feb 04 Python
python框架Django实战商城项目之工程搭建过程图文详解
Mar 09 Python
python3 deque 双向队列创建与使用方法分析
Mar 24 Python
简单的命令查看安装的python版本号
Aug 28 Python
教你如何用Python实现人脸识别(含源代码)
Jun 23 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实现定时生成HTML网站首页实例代码
2008/11/20 PHP
php生成N个不重复的随机数实例
2013/11/12 PHP
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
php格式化电话号码的方法
2015/04/24 PHP
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
php查找字符串中第一个非0的位置截取
2017/02/27 PHP
php curl获取到json对象并转成数组array的方法
2018/05/31 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
2019/06/08 PHP
js继承的实现代码
2010/08/05 Javascript
JavaScript实现网页图片等比例缩放实现代码及调用方式
2013/02/25 Javascript
JS延迟加载加快页面打开速度示例代码
2013/12/30 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
2016/05/13 Javascript
bootstrap组件之按钮式下拉菜单小结
2017/01/19 Javascript
js实现延迟加载的几种方法
2017/04/24 Javascript
Nodejs搭建wss服务器教程
2017/05/24 NodeJs
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
Javascript实现运算符重载详解
2018/04/07 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
vue 使用lodash实现对象数组深拷贝操作
2020/09/10 Javascript
Python实现基于二叉树存储结构的堆排序算法示例
2017/12/08 Python
解决Python pandas df 写入excel 出现的问题
2018/07/04 Python
python的flask框架难学吗
2020/07/31 Python
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
KEEN美国官网:美国人气户外休闲鞋品牌
2021/03/09 全球购物
shell变量的作用空间是什么
2013/08/17 面试题
甜美蛋糕店创业计划书
2014/01/30 职场文书
志愿者宣传口号
2014/06/17 职场文书
公司行政专员岗位职责
2014/08/24 职场文书
大学生党性分析材料
2014/12/19 职场文书
公司放假通知范文
2015/04/14 职场文书
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS