Python如何基于Tesseract实现识别文字功能
作者:程序员的人生A 发布时间:2022-11-09 11:52:18
机器视觉
从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
处理规范的文字
你要处理的大多数文字都是比较干净、格式规范的。格式 * 的文字通常具有以下特点:
使用统一的标准字体(不包含手写体、草书或者十分“花哨”的字体),复印或者拍照但是字体清晰、没有多余的痕迹或者污点。
排列整齐,没有歪歪斜斜的字。
没有超出图片范围,也没有残缺不全,或紧紧贴在图片的边缘。
文字的一些格式问题在图片预处理时可以进行解决。例如,可以把图片转换成灰度图,调整亮度和对比度,还可以根据需要进行裁剪和旋转,在这里不作介绍。
示例:
英文:
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代码实现
英文:
中文:
#!/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: !@#$%"&*()
******************************
中 华 人 民 共 和 国
来源:https://www.cnblogs.com/chengxuyuanaa/p/12986233.html


猜你喜欢
- 前言在使用PC时与PC交互的主要途径是看屏幕显示、听声音,点击鼠标和敲键盘等等。在自动化办公的趋势下,繁琐的工作可以让程序自动完成。比如自动
- 网易最近出的一款自动化UI测试工具:Airtest 挺火的,还受到谷歌的推荐。我试着用了一下,感觉优缺点还是蛮明显的。对初学者来说,能用到的
- 使用python生成随机验证码的方法有很多种,今天小编给大家分享两种方法,大家可以灵活运用这两种方法,设计出适合自己的验证码方法。方法一:利
- 之前很多次用到的时候总会忘一些,这次记下来,后面再忘了就直接来这查~。string转其它string --> int:将字符串13转换
- 1. 现在的日期时间命令是<%=now%> 即可2.ASP取得表格(from)数据输入的方法,是使用一个内置
- 一、前言我们需要分析某句话,就必须检测该条语句中的词语。一般来说,一句话肯定包含多个词语,它们互相重叠,具体输出哪一个由自然语言的切分算法决
- 俄罗斯方块是俄罗斯人发明的一款休闲类的小游戏,这款小游戏可以说是很多人童年的主打电子游戏了,本文我们使用 Python 来实现这款小游戏。游
- 1 圆点选择选项设置效果展示代码参考#!/usr/bin/python# -*- coding:utf-8 -*-import sysfro
- input标签checkbox,change和click绑定事件的区别我们经常在vue开发项目的过程中,遇到需要对input框使用v-mod
- 求3721,163,1,4832,1980,2008,68686688,9999,17173,5173,8848中最大的数明白后,试着求一下
- 好久没有写ASP代码了,今天在做一个简单的留言本时,出现了一下错误: Microsoft Office Access Database En
- 功能输入一个特定格式的时间戳,自动获取前进或者后退多少小时之后的时间附加函数时间戳转换函数def date_time_str_to_long
- Python 解释器内置了一些常量和函数,叫做内置常量(Built-in Constants)和内置函数(Built-in Function
- break 语句Python break语句,就像在C语言中,打破了最小封闭for或while循环。break语句用来终止循环语句,即循环条
- 1 . 如何让自己的本地APACHE服务器支持.htaccess 如何让自己的本地APACHE服务器支持”.htaccess”呢?其实只要简
- 组合模式Composite Pattern是什么组合模式是一种结构型模式,它允许你将对象组合成树形结构来表示“部分-整体
- 本文实例讲述了Python实现合并excel表格的方法。分享给大家供大家参考,具体如下:需求将一个文件夹中的excel表格合并成我们想要的形
- 最近和Sobin在做一个精品课程的项目,因为用到一个固定的id作为表间关联,所以在前一个表插入数据后要把插入数据生成的自增id传递给下一个表
- 前言随着人工智能研究的不断兴起,Python的应用也在不断上升,由于Python语言的简洁性、易读性以及可扩展性,特别是在开源工具和深度学习
- 在安装微软最新数据库SQL Server 2012之前,编者先确定一下安装环境:Windonws 7 SP1,32位操作系统、CPU是2.1