文章在线采集器(从Google的无人驾驶汽车到可以识别*敏*感*词*的自动售卖机,机器视觉 )
优采云 发布时间: 2022-04-20 10:49文章在线采集器(从Google的无人驾驶汽车到可以识别*敏*感*词*的自动售卖机,机器视觉
)
从 Google 的无人驾驶汽车到可以识别*敏*感*词*的自动售货机,机器视觉一直是一个具有深远影响和宏伟愿景的广泛应用领域。在接下来的几篇文章文章中,我们将重点关注机器视觉的一个分支:文本识别,并介绍如何使用一些Python库来识别和使用在线图片中的文本。
当你不希望你的文字被互联网机器人使用时采集,把文字做成图片放到网页上是一种常用的方法。在某些联系人列表中经常会看到电子邮件地址部分或全部转换为图片。人类可能不会注意到明显的差异,但这些图像对于机器人来说将很难阅读,这会阻止大多数垃圾邮件发送者轻松获取您的电子邮件地址。
使用这种人类用户可以正常阅读但大多数机器人无法阅读的图片,出现验证码(CAPTCHA)。读取验证码的难度也相差很大,有的验证码比其他的更难读取,这个问题我们后面会讲。
但是,当网络爬虫数据采集时,验证码并不是唯一需要从图像转换为文本的对象。目前网上有很多文件是简单扫描后放到网上的,和网上很多文件一样,虽然都“看得见”,但不能直接使用。如果没有将图像转换为文本的能力,那么使用这些文档的内容就必须手动输入——没有人愿意花时间去做。
将图像转换为文本通常称为光学字符识别 (OCR)。可以实现 OCR 的低级库并不多。目前很多库都使用了几种常见的低级OCR库,或者自定义。此类 OCR 系统有时会变得非常复杂。
OCR 库概述
对于读取和处理图像、图像相关的机器学习和创建图像等任务,Python 一直是一种出色的语言。虽然有很多图像处理库,但这里我们只关注两个:Pillow 和 Tesseract。
每个库都可以从它们的 网站 下载和安装,或者使用 pip 等第三方管理器通过“pillow”和“pytesseract”安装。
枕头
虽然 Pillow 不是用于图像处理的最全功能库,但它拥有您需要使用的一切,除非您使用 Python 重写 Photoshop 或进行更复杂的研究。它也是一个文档齐全且非常易于使用的库。
Pillow 是 Python 图像库 (PIL) 的 Python 2.x 版本的分支,并支持 Python 3.x 版本。与 PIL 一样,Pillow 可以通过多种过滤、修饰甚至像素级转换轻松导入代码和处理图像:
from PIL import Image, ImageFilter
class ImageRecognitionWordProcessing(object):
@staticmethod
def process_image():
kitten = Image.open("files/Snipaste_2022-04-06_10-36-03.png")
blurryKitten = kitten.filter(ImageFilter.GaussianBlur)
blurryKitten.save("files/Snipaste_2022-04-06_10-36-03_new.png")
blurryKitten.show()
if __name__ == '__main__':
ImageRecognitionWordProcessing().process_image()
在上面的示例中,图像 kitten.jpg 将在默认图像浏览器中打开,但看起来有点模糊。然后将模糊图像保存为 kitten_blured.jpg 并与原创图像放在一个文件夹中。
我们可以使用 Pillow 来完成图像预处理,让机器更容易读取图像。除了这些简单的事情,Pillow 还可以做很多复杂的图像处理工作。有关详细信息,请参阅 Pillow 文档。
正方体
Tesseract 是一个 OCR 库,目前由 Google 赞助(Google 也是一家以 OCR 和机器学习技术闻名于世的公司)。 Tesseract 目前被公认为最好、最准确的开源 OCR 系统。
除了极高的精度之外,Tesseract 还具有高度的灵活性。它可以被训练识别任何字体(只要这些字体的样式保持不变,我们稍后会介绍),并且可以识别任何 Unicode 字符。
Tesseract 是 Python 命令行工具,而不是通过 import 语句导入的库。安装后,使用 tesseract 命令在 Python 之外运行它。
安装 Tesseract
在 Windows 系统上,您可以下载 Tesseract 安装文件并进行安装。
Linux 用户可以通过 apt-get 安装:
$sudo apt-get install tesseract-ocr
要使用Tesseract的功能,比如下面例子中的识别字母的训练程序,首先需要在系统中设置一个新的环境变量$TESSDATA_PREFIX,以便Tesseract知道训练数据文件存放在哪里。
在大多数 Linux 系统和 Mac OS X 系统上,您可以这样设置:
$export TESSDATA_PREFIX=/usr/local/share/
值得注意的是,虽然 /usr/local/share/ 是 Tesseract 的默认数据存储位置,但您应该仔细检查以确保安装正常。
同样在 Windows 系统上,您可以使用以下命令设置环境变量:
#setx TESSDATA_PREFIX C:\Program Files\Tesseract OCR\
NumPy
虽然 NumPy 不是解决 OCR 问题的必备库,但如果您想训练 Tesseract 识别互联网上的一些图像验证码,它会很有用。 NumPy 是一个非常强大的库,具有大量用于线性代数和*敏*感*词*科学计算的方法。由于 NumPy 可以在数学上将图像表示为巨大的像素数组,因此它可以与 Tesseract 顺利配合以完成工作。
与其他 Python 库一样,NumPy 可以通过第三方包管理器(如 pip)安装:
$pip install numpy