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中的闭包
Aug 11 Python
Python实现文件内容批量追加的方法示例
Aug 29 Python
分享一个简单的python读写文件脚本
Nov 25 Python
Python3之读取连接过的网络并定位的方法
Apr 22 Python
python版本单链表实现代码
Sep 28 Python
几行Python代码爬取3000+上市公司的信息
Jan 24 Python
python爬虫的一个常见简单js反爬详解
Jul 09 Python
用Python写一个自动木马程序
Sep 17 Python
wxPython绘图模块wxPyPlot实现数据可视化
Nov 19 Python
Python使用psutil获取进程信息的例子
Dec 17 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
Feb 28 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
Mar 04 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中include/require/include_once/require_once使用心得
2016/08/28 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
PHP微商城开源代码实例
2019/03/27 PHP
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
2015/09/02 Javascript
前端开发必知的15个jQuery小技巧
2017/01/22 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
React如何利用相对于根目录进行引用组件详解
2017/10/09 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
基于 Vue 实现一个酷炫的 menu插件
2017/11/14 Javascript
webpack external模块的具体使用
2018/03/10 Javascript
前后端常见的几种鉴权方式(小结)
2019/08/04 Javascript
js刷新页面location.reload()用法详解
2019/12/09 Javascript
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
js实现滚动条自动滚动
2020/12/13 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
2021/02/08 Javascript
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
Python里字典的基本用法(包括嵌套字典)
2019/02/27 Python
PyQt5 多窗口连接实例
2019/06/19 Python
python输出决策树图形的例子
2019/08/09 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
jupyter修改文件名方式(TensorFlow)
2020/04/21 Python
Pyinstaller加密打包应用的示例代码
2020/06/11 Python
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
后勤副校长自我鉴定
2013/10/13 职场文书
十佳班主任事迹材料
2014/01/18 职场文书
我的求职择业计划书
2014/04/04 职场文书
艺术设计专业求职自荐信
2014/05/19 职场文书
毕业生求职信
2014/06/10 职场文书
Python Django 后台管理之后台模型属性详解
2021/04/25 Python
MySQL的join buffer原理
2021/04/29 MySQL
python中使用redis用法详解
2022/12/24 Redis