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插入数据到列表的方法
Apr 30 Python
python的构建工具setup.py的方法使用示例
Oct 23 Python
python3中的md5加密实例
May 29 Python
numpy.where() 用法详解
May 27 Python
python使用writerows写csv文件产生多余空行的处理方法
Aug 01 Python
django drf框架中的user验证以及JWT拓展的介绍
Aug 12 Python
Python脚本破解压缩文件口令实例教程(zipfile)
Jun 14 Python
python使用建议与技巧分享(二)
Aug 17 Python
如何利用python读取micaps文件详解
Oct 18 Python
Python环境搭建过程从安装到Hello World
Feb 05 Python
Python 处理表格进行成绩排序的操作代码
Jul 26 Python
JAVA SpringMVC实现自定义拦截器
Mar 16 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面向对象全攻略 (十) final static const关键字的使用
2009/09/30 PHP
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
zend framework多模块多布局配置
2011/02/26 PHP
php获得用户ip地址的比较不错的方法
2014/02/08 PHP
jquery 仿QQ校友的DIV模拟窗口效果源码
2010/03/24 Javascript
web前端设计师们常用的jQuery特效插件汇总
2014/12/07 Javascript
深入理解关于javascript中apply()和call()方法的区别
2016/04/12 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
JavaScript实现256色转灰度图
2017/02/22 Javascript
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
2015/03/30 Python
使用Python中的cookielib模拟登录网站
2015/04/09 Python
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
Python给你的头像加上圣诞帽
2018/01/04 Python
详谈python3 numpy-loadtxt的编码问题
2018/04/29 Python
python pip源配置,pip配置文件存放位置的方法
2019/07/12 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
2019/11/26 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
HTML5 Canvas——用路径描画线条实例介绍
2013/06/09 HTML / CSS
Wiggle美国:英国骑行、跑步、游泳、铁人三项商店
2018/10/27 全球购物
Bitiba意大利:在线宠物商店
2020/10/31 全球购物
EJB的基本架构
2016/09/22 面试题
法律专业自我鉴定
2013/10/03 职场文书
应聘教师推荐信
2013/10/31 职场文书
《罗布泊,消逝的仙湖》教学反思
2014/03/01 职场文书
师德师风个人反思
2014/04/28 职场文书
初三英语教学计划
2015/01/23 职场文书
南湾猴岛导游词
2015/02/09 职场文书
民事辩护词范文
2015/05/21 职场文书
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python
HTML中link标签属性的具体用法
2023/05/07 HTML / CSS