如何用Python从图像中提取文本
OCR(光学字符识别)是将数字图像转换为机器编码文本的电子化过程。数字图像通常是包含类似于语言字符的区域的图像。OCR是模式识别、人工智能和计算机视觉的一个研究领域。这是由于较新的OCR是通过提供样本数据,在机器学习算法上运行来训练的。这种从图像中提取文本的技术通常是在工作环境中进行的,在这种环境中,图像肯定会包含文本数据。在这篇文章中,我们将学习如何从图像中提取文本。我们将利用python编程语言来做这件事。
为了使我们的python程序具有字符识别能力,我们将使用_pytesseract _ OCR库。该库可以通过在操作系统的命令解释器中执行以下命令来安装到我们的Python环境中:-
pip install pytesseract
该库(如果在Windows操作系统上使用)需要tesseract.exe二进制文件也存在,以便正确安装该库。在安装上述可执行文件的过程中,我们会被提示为它指定一个路径。这个路径需要被记住,因为它将在以后的代码中被使用。对于大多数安装来说,路径是C:\\Program Files (x86)\\Tesseract-OCR\tesseract.exe
。
解释:
首先我们从PIL库中导入Image模块(用于打开图像),然后从pytesseract库中导入pytesseract模块(用于文本提取)。然后我们定义了path_to_tesseract
变量,其中包含了我们在先决条件中安装的可执行二进制文件(tesseract.exe
)的路径(这个路径取决于二进制文件的安装位置)。然后我们定义了image_path
变量,它包含了图像文件的路径。这个路径被传递给open()函数,以便从我们的图像中创建一个图像对象。之后,我们将path_to_tesseract
变量中存储的路径分配给pytesseract.tesseract_cmd
变量(这将被库用来寻找可执行文件并用于提取)。之后,我们将图像对象(img
)传递给image_to_string()函数。这个函数的参数是一个图像对象,并返回其中所识别的文本。最后,我们用text[:-1]来显示图像中发现的文本(由于默认情况下附加了一个字符(^L))。
示例 1:
用于演示的图片:
一个黑色背景的白色文本的图像
以下是完整的实现方案:
from PIL import Image
from pytesseract import pytesseract
# Defining paths to tesseract.exe
# and the image we would be using
path_to_tesseract = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
image_path = r"csv\sample_text.png"
# Opening the image & storing it in an image object
img = Image.open(image_path)
# Providing the tesseract executable
# location to pytesseract library
pytesseract.tesseract_cmd = path_to_tesseract
# Passing the image object to image_to_string() function
# This function will extract the text from the image
text = pytesseract.image_to_string(img)
# Displaying the extracted text
print(text[:-1])
输出:
now children state should after above same long made such
point run take call together few being would walk give
示例 2:
用于演示的图片:
代码:
from PIL import Image
from pytesseract import pytesseract
# Defining paths to tesseract.exe
# and the image we would be using
path_to_tesseract = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
image_path = r"csv\d.jpg"
# Opening the image & storing it in an image object
img = Image.open(image_path)
# Providing the tesseract
# executable location to pytesseract library
pytesseract.tesseract_cmd = path_to_tesseract
# Passing the image object to
# image_to_string() function
# This function will
# extract the text from the image
text = pytesseract.image_to_string(img)
# Displaying the extracted text
print(text[:-1])
输出:
Geeksforgeeks