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 相关文章推荐
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
Feb 24 Python
Python语言实现获取主机名根据端口杀死进程
Mar 31 Python
Python连接SQLServer2000的方法详解
Apr 19 Python
python抓取文件夹的所有文件
Feb 27 Python
一篇文章读懂Python赋值与拷贝
Apr 19 Python
详解Python如何生成词云的方法
Jun 01 Python
flask入门之表单的实现
Jul 18 Python
Python如何基于smtplib发不同格式的邮件
Dec 30 Python
Python如何使用paramiko模块连接linux
Mar 18 Python
Python 为什么推荐蛇形命名法原因浅析
Jun 18 Python
5分钟快速掌握Python定时任务框架的实现
Jan 26 Python
python 制作本地应用搜索工具
Feb 27 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
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
php输入数据统一类实例
2015/02/23 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
2019/06/03 PHP
php libevent 功能与使用方法详解
2020/03/04 PHP
JavaScript事件处理器中的event参数使用介绍
2013/05/24 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
jquery实现简单的二级导航下拉菜单效果
2015/09/07 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
2015/10/08 Javascript
跟我学习JScript的Bug与内存管理
2015/11/18 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
使用 Node.js 对文本内容分词和关键词抽取
2017/05/27 Javascript
cropper js基于vue的图片裁剪上传功能的实现代码
2018/03/01 Javascript
vue观察模式浅析
2018/09/25 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
JS实现查找数组中对象的属性值是否存在示例
2019/05/24 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
2021/01/29 Vue.js
[01:10]DOTA2次级职业联赛 - U5战队宣传片
2014/12/01 DOTA
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
将Django项目部署到CentOs服务器中
2018/10/18 Python
python获取url的返回信息方法
2018/12/17 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
2020/01/15 Python
从0到1使用python开发一个半自动答题小程序的实现
2020/05/12 Python
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
2012/06/05 面试题
2014入党积极分子批评与自我批评思想报告
2014/10/06 职场文书
2014年环保工作总结
2014/11/26 职场文书
护士个人年终总结
2015/02/13 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
小爸爸观后感
2015/06/15 职场文书
企业安全隐患排查治理制度
2015/08/05 职场文书
初三化学教学反思
2016/02/22 职场文书
加薪申请书应该这样写!
2019/07/04 职场文书
python playwright 自动等待和断言详解
2021/11/27 Python
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript