从谷歌的无人驾驶汽车到可以识别假币的自动售货机,机器视觉一直是一个应用广泛、影响深远、愿景宏大的领域。在接下来的几篇文章中,我们将重点关注机器视觉的一个分支:文字识别,介绍如何使用一些Python库来识别和使用在线图片中的文字。当您不想让您的文字被网络机器人收集时,将文字制作成图片并放在网页上是一种常见的方法。在一些联系人列表中经常看到电子邮件地址被部分或全部转换为图片。人类可能不会注意到明显的差异,但机器人将很难阅读这些图像,这种方法可以防止大多数垃圾邮件发送者轻易获取您的电子邮件地址。使用这种图片,出现了人类用户可以正常阅读但大多数机器人无法阅读的验证码(CAPTCHA)。验证码在易读性方面也有很大差异,有些验证码比其他验证码更难阅读,我们将在后面介绍。然而,在网络爬虫数据收集过程中,验证码并不是唯一需要图像到文本转换的对象。目前,有很多文档是简单扫描后直接放在网上的。和网上的很多文档一样,虽然都“摆在我们面前”,但不能直接使用。如果没有将图像转换为文本的能力,这些文档的内容将不得不手动输入——没有人愿意花时间做这件事。将图像翻译成文本通常称为光学字符识别(OCR)。能实现OCR的底层库不多。目前很多图书馆都使用几种常用的OCR底层库,或者自定义。这样的OCR系统有时会变得非常复杂。OCR库概述Python一直是一种出色的语言,适用于读取和处理图像、与图像相关的机器学习和创建图像等任务。虽然有很多图像处理库,但这里我们只关注两个:Pillow和Tesseract。每个库都可以从他们的网站下载和安装,或者使用第三方管理器(如pip)通过“pillow”和“pytesseract”安装。Pillow虽然Pillow不是功能最全的图像处理库,但它拥有你需要使用的所有功能,除非你是用Python重写一个Photoshop或者做更复杂的研究。它也是一个文档齐全且非常易于使用的库。Pillow是从Python2.x版本的PythonImagingLibrary(PIL)分叉出来的,并支持Python3.x版本。和PIL一样,Pillow也可以通过大量的过滤、修改甚至像素级的变换操作轻松导入代码和处理图片:打开(“文件/Snipaste_2022-04-06_10-36-03.png”)show()if__name__=='__main__':ImageRecognitionWordProcessing().process_image()在上面的例子中,图片kitten.jpg会在默认图片浏览器中打开,但是看起来会有点模糊。然后将这张模糊后的图片另存为kitten_blured.jpg,放在原图所在的文件夹中。我们可以使用Pillow来完成图片的预处理,让机器更方便的读取图片。除了这些简单的东西,Pillow还可以做很多复杂的图像处理任务。有关更多信息,请查看Pillow文档。TesseractTesseract是一个OCR库,目前由谷歌赞助(谷歌也是一家以OCR和机器学习技术闻名的公司)。Tesseract是目前公认最好最准确的开源OCR系统。除了极其精确之外,Tesseract还非常灵活。它可以被训练来识别任何字体(只要这些字体的样式保持不变,我们将在后面介绍),它还可以识别任何Unicode字符。Tesseract是一个Python命令行工具,而不是通过import语句导入的库。安装后,使用tesseract命令在Python之外运行它。安装Tesseract在Windows系统下,您可以下载Tesseract安装文件并安装。Linux用户可以通过apt-get安装:$sudoapt-getinstalltesseract-ocr要使用Tesseract功能,比如下面例子中的识别字母的训练程序,需要先在系统中设置一个新的环境变量$TESSDATA_PREFIX,以便Tesseract知道训练数据文件的存储位置。在大多数Linux系统和MacOSX系统上,你可以这样设置:$exportTESSDATA_PREFIX=/usr/local/share/值得注意的是,虽然/usr/local/share/是Tesseract的默认数据存储位置,但是您仍然应该仔细检查以确保您的安装没有问题。Windows系统下类似,可以通过以下命令设置环境变量:#setxTESSDATA_PREFIXC:\想训练Tesseract识别如果网上有一些图片验证码,那就用吧。NumPy是一个非常强大的库,有很多线性代数和大规模科学计算的方法。因为NumPy可以在数学上将图像表示为巨大的像素阵列,所以它可以与Tesseract无缝协作来完成这项工作。与其他Python库一样,NumPy可以通过第三方包管理器安装,例如pip:$pipinstallnumpy
