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 相关文章推荐
仅用50行Python代码实现一个简单的代理服务器
Apr 08 Python
Python基于checksum计算文件是否相同的方法
Jul 09 Python
python爬虫爬取快手视频多线程下载功能
Feb 28 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
Mar 04 Python
Python学习笔记之open()函数打开文件路径报错问题
Apr 28 Python
Python3使用turtle绘制超立方体图形示例
Jun 19 Python
[原创]Python入门教程3. 列表基本操作【定义、运算、常用函数】
Oct 30 Python
Python设计模式之享元模式原理与用法实例分析
Jan 11 Python
用Python爬取QQ音乐评论并制成词云图的实例
Aug 24 Python
使用python代码进行身份证号校验的实现示例
Nov 21 Python
浅谈tensorflow 中tf.concat()的使用
Feb 07 Python
TensorFlow的环境配置与安装方法
Feb 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
php注入实例
2006/10/09 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
2015/12/11 PHP
twig模板获取全局变量的方法
2016/02/05 PHP
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
qTip2 精致的基于jQuery提示信息插件
2012/02/17 Javascript
JavaScript自动设置IFrame高度的小例子
2013/06/08 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
2013/10/15 Javascript
javascript中的self和this用法小结
2014/02/08 Javascript
深入理解js中this的用法
2016/05/28 Javascript
Select下拉框模糊查询功能实现代码
2016/07/22 Javascript
浅谈js内置对象Math的属性和方法(推荐)
2016/09/19 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
react高阶组件经典应用之权限控制详解
2017/09/07 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
JQuery选中select组件被选中的值方法
2018/03/08 jQuery
JavaScript变量基本使用方法实例分析
2019/11/15 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
[43:03]完美世界DOTA2联赛PWL S2 PXG vs Magma 第二场 11.21
2020/11/24 DOTA
在Python中实现贪婪排名算法的教程
2015/04/17 Python
Python访问纯真IP数据库脚本分享
2015/06/29 Python
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
Python探索之pLSA实现代码
2017/10/25 Python
基于Python中capitalize()与title()的区别详解
2017/12/09 Python
python判断设备是否联网的方法
2018/06/29 Python
python实现决策树分类
2018/08/30 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
施华洛世奇波兰官网:SWAROVSKI波兰
2019/06/18 全球购物
瑞士网球商店:Tennis-Point
2020/03/12 全球购物
会计自我鉴定范文
2013/10/06 职场文书
违反校纪校规检讨书
2014/02/15 职场文书
新闻发布会主持词
2014/03/28 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
Python使用DFA算法过滤内容敏感词
2022/04/22 Python