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版
Dec 07 Python
python自动化工具日志查询分析脚本代码实现
Nov 26 Python
python 动态获取当前运行的类名和函数名的方法
Apr 15 Python
Python下线程之间的共享和释放示例
May 04 Python
python机器学习理论与实战(一)K近邻法
Jan 28 Python
python opencv检测目标颜色的实例讲解
Apr 02 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
Nov 06 Python
python django 原生sql 获取数据的例子
Aug 14 Python
python时间日期操作方法实例小结
Feb 06 Python
Python 自由定制表格的实现示例
Mar 20 Python
python中pathlib模块的基本用法与总结
Aug 17 Python
90行Python代码开发个人云盘应用
Apr 20 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中防止恶意刷新页面的代码小结
2012/10/31 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
2013/07/05 PHP
php中的curl_multi系列函数使用例子
2014/07/29 PHP
php+ajax+json 详解及实例代码
2016/12/12 PHP
PHP处理Ajax请求与Ajax跨域问题
2017/02/13 PHP
accesskey 提交
2006/06/26 Javascript
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
js、css、img等浏览器缓存问题的2种解决方案
2013/10/23 Javascript
JavaScript通过正则表达式实现表单验证电话号码
2014/03/07 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
2015/03/13 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
jQuery模拟黑客帝国矩阵效果实例
2015/06/28 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
2015/08/31 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
2016/12/26 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
2018/09/25 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
JavaScript命名空间模式实例详解
2019/06/20 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
javascript实现扫雷简易版
2020/08/18 Javascript
解决vue项目中出现Invalid Host header的问题
2020/11/17 Javascript
Python实现把数字转换成中文
2015/06/29 Python
pandas数据预处理之dataframe的groupby操作方法
2018/04/13 Python
python,Django实现的淘宝客登录功能示例
2019/06/12 Python
python的移位操作实现详解
2019/08/21 Python
Django model class Meta原理解析
2020/11/14 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
政协调研汇报材料
2014/08/15 职场文书
毕业论文答辩开场白和结束语
2015/05/27 职场文书
Java实现扫雷游戏详细代码讲解
2022/05/25 Java/Android