在Python中使用Tesseract读取图片中的文本
我们将介绍如何使用Python中的Tesseract创建一个可以从图像中读取文本的程序。
Python中的Tesseract
当我们在系统中使用需要从图像中读取文本的功能时,我们在Python中使用Tesseract。它提供了强大的功能,帮助我们更准确和有效地从图像中读取文本。
本文还将介绍使用流行的OpenCV库从图像中提取文本的情况。
Tesseract是一个基于计算机的系统,用于光学字符识别(OCR)和其他从图像到文本的过程。它主要用于不使用拉丁字母的语言的文本识别。
该系统被用于各种目的,包括文本和数据挖掘、教育、翻译和机器翻译。
Tesseract也是该软件的开放源码版本的名称。它经常被用于自然语言处理和机器学习中的文本分类和其他与文本有关的任务。
首先,让我们用下面这行代码在Python中安装Tesseract工具。
# python
pip install pytesseract
一旦我们安装了Tesseract工具,我们将安装其他重要的库,我们将在我们的例子中使用这些库来从图像中读取文本。首先,我们将用下面的命令安装OpenCV。
# python
pip install opencv-python
现在我们将安装ArgParse库,我们将用它来创建一个用户友好的命令行界面。我们可以用下面的命令轻松地安装它。
# python
pip install argparse
我们现在将安装Pillow库,一个Python成像库。这个库将为我们的Python解释器增加图像处理能力。
我们可以使用下面的命令来安装这个库。
# python
pip install Pillow
在Python中使用Tesseract从图像中读取文本
现在,让我们使用Tesseract在Python中从图像中读取文本。我们需要遵循以下步骤使其工作。
首先,我们将从我们的图片库中导入或加载我们想要读取文本的图片,如果我们没有,我们可以从Chrome下载,然后加载。
一旦我们导入了图片,我们将把加载的图片转换为二进制文件。在最后一步,我们将把二进制文件发送给Tesseract,它将在上面寻找文本并返回图像中的文本。
我们将导入我们之前安装的所有库。
# python
import cv2
import os,argparse
import pytesseract
from PIL import Image
我们将使用ArgParse函数ArgumentParser()
,构建参数解析器,如下图所示。
# python
imgArg = argparse.ArgumentParser()
imgArg.add_argument("-i","--image",
required=True,
help="Enter path of image folder")
imgArg.add_argument("-p","--pre_processor",
default="thresh",
help="the preprocessor usage")
arguments = vars(imgArg.parse_args())
现在我们将使用OpenCV库读取带有文本的图像,代码如下。
# python
imageRead = cv2.imread(arguments["image"])
现在,我们将使用OpenCV库将图像转换成灰度,如下图所示。
#python
imgGray=cv2.cvtColor(imageRead, cv2.COLOR_BGR2GRAY)
然后,我们将使用if-else
语句来检查图像是否有颗粒感或模糊。如果是的话,我们可以改变阈值和模糊度,如下图所示。
# python
if arguments["pre_processor"]=="thresh":
cv2.threshold(gray, 0,255,cv2.THRESH_BINARY| cv2.THRESH_OTSU)[1]
if arguments["pre_processor"]=="blur":
cv2.medianBlur(gray, 3)
如下图所示,我们将使用OpenCV和Tesseract库向内存中添加图像。
# python
nameImg = "{}.jpg".format(os.getpid())
cv2.imwrite(nameImg, gray)
imgText = pytesseract.image_to_string(Image.open(nameImg))
os.remove(nameImg)
print(imgText)
现在,我们将使用下面的代码显示图像的输出。
# python
cv2.imshow("Images Uploaded", imageRead)
cv2.imshow("Images Converted In Grayscale", imgGray)
cv2.waitKey(0)
现在,让我们用下面的代码运行上述代码,并检查它是如何工作的,以及它从图像中读取文本的能力如何。
# python
python main.py --image img/read.jpg
我们发送的图像如下所示:

一旦图像被处理,它将被保存为灰度,显示如下:

我们在命令提示符中会有以下输出:

正如你在上面的例子中所看到的,我们可以很容易地使用图像并读取其文本。而且我们可以存储它们,如果我们想的话,或者在控制台中显示它们。