Python如何基于Tesseract实现识别文字功能


Posted in Python onJune 05, 2020

机器视觉

从Google的无人驾驶汽车到可以识别假钞的自动售卖机,机器视觉一直都是一个应用广泛且具有深远的影响和雄伟的愿景的领域。

这里我们将重点介绍机器视觉的一个分支:文字识别。介绍如何用一些Python库来识别和使用在线图片中的文字。

我们可以很轻松的阅读图片里的文字,但是机器阅读这些图片就会非常困难,利用这种人类用户可以正常读取但是大多数存贮器没法读取的图片,这时验证码(CAPTCHA)就出现了。验证码读取的难易程序也大不相同。

将图像翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR)。可以实现OCR的底层库并不多,目前很多库都是使用共同的几个底层OCR库,或者是在上面进行定制。

OCR库概述

在读取和处理图像、图像相差的机器学习以及创建图像等任务中,Python一直都是非常出色的语言。虽然有很多库可以进行图像处理,但是这里我们只介绍Tesseract库。

Tesseract

Tesseract是一个OCR库,目前由Google赞助。Tesseract是目前公认最优秀、最精确的开源OCR系统。除了极高的精确度,Tesseract也具有很高的灵活性。它可以通过训练识别出任何字体,也可以识别出任何Unicode字符。

安装Tesseract:Windows系统

下载可执行安装文件安装即可。

安装pytesseract

Tesseract是一个Python的命令行工具,不是通过import语句导入的库。安装之后,要用tesseract命令在Python的外面运行,但我们可以通过pip安装支持Python版本的Tesseract库:

pip install pytesseract

处理规范的文字

你要处理的大多数文字都是比较干净、格式规范的。格式霍英东的文字通常具有以下特点:

使用统一的标准字体(不包含手写体、草书或者十分“花哨”的字体),复印或者拍照但是字体清晰、没有多余的痕迹或者污点。

排列整齐,没有歪歪斜斜的字。

没有超出图片范围,也没有残缺不全,或紧紧贴在图片的边缘。

文字的一些格式问题在图片预处理时可以进行解决。例如,可以把图片转换成灰度图,调整亮度和对比度,还可以根据需要进行裁剪和旋转,在这里不作介绍。

示例:

英文:

Python如何基于Tesseract实现识别文字功能

F:DE209_F>tesseract english.jpg text
Tesseract Open Source OCR Engine v4.00.00alpha with Leptonica
 
F:DE209_F>type text.txt
This is some text, written in Arial, that will be read by
Tesseract. Here are some symbols: !@#$%"&*()

识别结果的准确率还是挺高的。

通过Python代码实现

英文:

Python如何基于Tesseract实现识别文字功能

中文:

Python如何基于Tesseract实现识别文字功能

#!/usr/bin/python3
# -*- coding:utf-8 -*- 
import pytesseract
from PIL import Image
 
# 打开图像:英文
image = Image.open('english.jpg')
 
# OCR识别:lang默认英文
text = pytesseract.image_to_string(image)
 
# 打印识别后的文本
print(text)
 
# 我是分割线
print("*" * 30)
 
# 打开图像:英文
image = Image.open('china.png')
 
# OCR识别:lang指定中文
text = pytesseract.image_to_string(image, lang = 'chi_sim')
 
# 打印识别后的文本
print(text)

运行结果:

This is some text, written in Arial, that will be read by
Tesseract. Here are some symbols: !@#$%"&*()
******************************
中 华 人 民 共 和 国

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python生成随机密码的示例分享
Feb 18 Python
Python+MongoDB自增键值的简单实现
Nov 04 Python
利用Anaconda简单安装scrapy框架的方法
Jun 13 Python
vue.js实现输入框输入值内容实时响应变化示例
Jul 07 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
Aug 05 Python
Python异常处理操作实例详解
Aug 28 Python
Python pickle模块实现对象序列化
Nov 22 Python
python 实现二维字典的键值合并等函数
Dec 06 Python
如何在python中执行另一个py文件
Apr 30 Python
Python with语句用法原理详解
Jul 03 Python
Python数据可视化实现漏斗图过程图解
Jul 20 Python
python zip()函数的使用示例
Sep 23 Python
如何导出python安装的所有模块名称和版本号到文件中
Jun 05 #Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 #Python
pycharm远程连接vagrant虚拟机中mariadb数据库
Jun 05 #Python
浅谈python 调用open()打开文件时路径出错的原因
Jun 05 #Python
Python命名空间namespace及作用域原理解析
Jun 05 #Python
Python3内置函数chr和ord实现进制转换
Jun 05 #Python
Python 解决相对路径问题:"No such file or directory"
Jun 05 #Python
You might like
全文搜索和替换
2006/10/09 PHP
PHP获取网站域名和地址的代码
2008/08/17 PHP
jquery的颜色选择插件实例代码
2008/10/02 Javascript
清空上传控件input file的值
2010/07/03 Javascript
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
jquery.tmpl JQuery模板插件
2011/10/10 Javascript
用javascript为页面添加天气显示实现思路及代码
2013/12/02 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
2014/02/04 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
Angular中使用better-scroll插件的方法
2018/03/27 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
echarts同一页面中四个图表切换的js数据交互方法示例
2018/07/03 Javascript
JS/jQuery实现获取时间的方法及常用类完整示例
2019/03/07 jQuery
处理JavaScript值为undefined的7个小技巧
2020/07/28 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
vue keep-alive的简单总结
2021/01/25 Vue.js
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
python访问抓取网页常用命令总结
2017/04/11 Python
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
Python中将两个或多个list合成一个list的方法小结
2019/05/12 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
为什么称python为胶水语言
2020/06/16 Python
解决使用Pandas 读取超过65536行的Excel文件问题
2020/11/10 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
深入了解canvas在移动端绘制模糊的问题解决
2019/04/30 HTML / CSS
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
美国山地自行车、露营、户外装备和服装购物网站:Aventuron
2018/05/05 全球购物
经济学人订阅:The Economist
2018/07/19 全球购物
EQVVS官网:设计师男装和女装
2018/10/24 全球购物
在线实验室测试:HealthLabs.com
2020/05/03 全球购物
Java中实现多态的机制是什么?
2014/12/07 面试题
公务员个人自我评价分享
2013/11/06 职场文书
个人委托书怎么写
2014/04/04 职场文书
成绩报告单家长评语
2014/12/30 职场文书
农民工工资承诺书大全
2015/05/04 职场文书