当前位置: 首页 > 科技观察

使用一行Python代码从图像中读取文本

时间:2023-03-13 13:39:32 科技观察

处理图像不是一项简单的任务。作为一个人,你很容易看到一些东西并立即知道你在看什么。但是计算机不是那样工作的。对您来说太难的任务,例如复杂的算术或一般数学,可以毫不费力地由计算机执行。但在这里,情况恰恰相反——对你来说微不足道的任务,比如识别图像中的猫或狗,对计算机来说真的很难。在某种程度上,我们是天造地设的一对。最起码到现在。虽然涉及某种级别计算机视觉的图像分类和任务可能需要大量代码和扎实的理解,但在Python中从格式良好的图像中读取文本很简单,可以应用于许多现实生活中的问题。在今天的帖子中,我想证明这一点。虽然会安装一些库,但不会花费很多时间。这些是您需要的库:OpenCVPyTesseractOpenCV现在,这个库将仅用于加载图像,您实际上不需要事先了解太多(尽管它可能有帮助,您会明白为什么)。根据官方文档介绍:OpenCV(OpenSourceComputerVisionLibrary)是一个开源的计算机视觉和机器学习软件库。OpenCV的目的是为计算机视觉应用程序提供一个通用的基础设施,并加速机器感知在商业产品中的使用。OpenCV是bsd授权的产品,OpenCV让企业使用和修改代码变得很方便简而言之,你可以用OpenCV做任何一种图像变换,它是一个相当简单的库。如果您还没有安装它,它只会在终端中显示一行:pipinstallopencv-python,仅此而已。在此之前,一切都很简单,但这即将改变。PyTesseract库到底是什么?根据维基百科:Tesseract是一种用于各种操作系统的光学字符识别引擎。它是免费软件,根据Apache许可版本2.0发布,自2006年以来一直由Google赞助。我相信现在有更复杂的库可用,但我发现这个库工作得很好。根据我自己的经验,图书馆应该能够从任何图像中读取文本,但前提是字体不会让您不知所措。如果您无法从图像中读取文本,请多花些时间使用OpenCV,应用各种过滤器来突出显示文本。现在安装在底部有点麻烦。如果你在Linux上,这一切都归结为几个sudo-aptget命令:sudoapt-getupdatesudoapt-getinstalltesseract-ocrsudoapt-getinstalllibtesseract-dev我在Windows上,所以这个过程有点乏味。首先,打开这个URL:https://github.com/UB-Mannheim/tesseract/wiki下载32位或64位的安装程序:安装本身很简单,只需点击几下下一步。是的,您还需要进行pip安装:pipinstallpytesseract接下来,您需要告诉PythonTesseract的安装位置。在Linux机器上我不需要这样做,但在Windows上它是。默认情况下,它会安装ProgramFiles。如果一切都正确,执行这段代码应该不会产生错误:GetText让我们从一个简单的开始。我找到了一些带有一些文字的免版税图片,第一个看起来像这样:它应该是简单的,Tesseract可能会将那些蓝色的“对象”读取为括号。让我们看看会发生什么:我的猜测是正确的。然而,这不是问题,您可以通过一些Python技巧轻松解决这些问题。下一个可能更棘手:我希望它没有检测到硬币上的“B”:它似乎工作正常。现在轮到你把它应用到你自己的问题上了。如果文本与背景混合,OpenCV技能在这里可能至关重要。在您离开之前,从图像中读取文本对于计算机来说是一项相当困难的任务。想一想,计算机不知道字母是什么,它只与数字打交道。引擎盖背后发生的事情起初看起来像是一个黑匣子,但如果这是您感兴趣的领域,我鼓励您进一步调查。我并不是说PyTesseract每次都能很好地工作,但我发现它甚至在一些更复杂的图像上也足够好。但并非所有情况都很好,有时需要进行一些图像处理来突出显示文本,使其在背景中脱颖而出。