更新时间:2021年06月25日18时27分 来源:传智教育 浏览次数:
Tesseraet是一个命令行工具,安装后只能通过tsseraet命令在Python的外部运行,而不能通过import语句引人使用。为了解决上述问题,Python 提供了支持Tssraec-OCR引擎的Python版本的库pytesseract。
安装pytesseract需要遵守如下要求:
(1)Python的版本必须是python 2.5+或python 3.x。
(2)安装Python的图像处理库PIL(或Pillow )。
(3)安装谷歌的OCR识别引擎Tesseract-0CR。
下面将针对PIL和pytesseract的相关内容进行讲解。
pytesseract库概述
pytesseract是一款用于光学字符识别(OCR)的Python工具,即从图片中识别和读取其中嵌人的文字。ptesseract是对Tesseraet-OCR的一层封装,同时也可以单独作为Tesseract引擎的调用脚本,支持使用PIL库(Python Imaging Library)读取各种图片文件类型,包括jpeg、png、gif、bmp、tiff 等格式。作为脚本使用时,pytesseract将打印识别出的文字,而不是将其写入文件。
在pytesseract库中,提供了如下函数将图像转换成字符串:
image_to_string(image, lang=None, boxes=False, config=None)
上述函数用于在指定的图像上运行tesseract,首先将图像写人到磁盘,然后在图像上运行tesseract命令进行识别读取,最后删除临时的文件。其中,image表示图像,lang表示语言,默认使用英文。如果boxes设为True,那么batch.nochop makebox命令被添加到tesseract调用中;如果设置了config,则配置会添加到命令中,例如config = - psm 6。
PIL库概述
图像处理是一门应用非常广泛的技术,拥有丰富第三方打扩展库的Python语言也具有此项功能。其中,PIL(Python Imaging Library )是Python最常用的图像处理库,它不仅提供了广泛的文件格式支持,而且具有强大的图像处理功能。
PIL库中一个非常重要的类是Image类,该类定义在与它同名的模块中。创建Image类对象的方法有很多种,包括从文件中读取得到,或从其他图像经过处理得到,或者创建全新的。下面对PIL库的一些常用函数和方法进行简单介绍。
1.new()函数
new()函数的定义格式如下:
Image.new(mode, size, color=0)
上述函数用于创建一个新图像。其中,mode表示模式,size表示大小。当创建单通道图像时,color是单个值;当创建多通道图像时,color是一个元组。若省略了color参数,则图像被填充成全黑;若color参数的值为None,则图像不被初始化。
2. open()函数
open()函数的定义格式如下:
open(fp, mode="r")
上述函数可以打开并识别给定的图像文件。其中,fp表示字符串形式的文件名称,mode参数可以省略,但只能设置为“r”。如果载人文件失败,则会引起一个IOError异常,否则返回一个Image类对象。
实际上,上述函数会被延迟操作,实际的图像数据并不会马上从文件中读取,而是等到需要处理这些数据时才被读取。这时,可以调用load0函数进行强制加载。
创建图像对象后,可以通过Image类提供的方法处理这些图像。为了让大家更好地理解,下面以常用的两个方法(save()和point()方法)进行说明。
(1) save()方法,其语法格式如下:
save(self, fp, format=None, **params)
上述方法将以特定的图片格式保存图片。大多数情况下,可以省略图片的格式。这时,该方法会根据文件的扩展名来选择相应的图片格式。具体示例代码如下:
image.save("test.jpg",'JPG")
或者:
save("test.jpg")
(2) point()方法:可以对图像的像素值进行变换。其语法格式如下:
point(self, lut, mode=None)
在大多数场合中,可以使用函数(带一个参数)作为参数传递给point()方法,图像的每个像素都会使用这个函数进行变换。示例代码如下:
# 每个像素乘以1.2 out=im.point(lambda i: i *1.2)
需要注意的是,如果图像的模式为“I”(整数)或“F”(浮点数),则必须使用函数,且必须具有以下格式:
argument (参数) *scale (倍率) +offset(偏移量)
例如,映射浮点图像的示例如下:
out=im.point(lambda i:i*1.2+10)