📜  récupérer texte d'une image python (1)

📅  最后修改于: 2023-12-03 15:34:43.371000             🧑  作者: Mango

Python中从图像中提取文本

在许多应用程序中,我们需要从图像中提取文本信息。Python提供了许多库来处理图像和文本,这使得从图像中提取文本变得更加容易。本文将介绍如何使用Python和一些常见的库来实现从图像中提取文本的功能。

需要的库

在开始之前,我们需要安装一些库来处理图像和文本。以下是需要使用的库:

  • OpenCV:用于读取和处理图像,提取文本区域
  • pytesseract:用于识别文本区域中的文本

要安装这些库,请使用以下命令:

pip install opencv-python
pip install pytesseract
代码实现

以下是Python代码,用于从图像中提取文本:

import cv2
import pytesseract
from PIL import Image
import matplotlib.pyplot as plt

# 读取图像
img = cv2.imread('test_image.png')

# 使用OpenCV进行灰度和二值化处理
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]

# 查找文本区域
contours = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[0]
for c in contours:
    # 计算轮廓的边界框
    x, y, w, h = cv2.boundingRect(c)

    # 提取文本区域
    text_region = img[y:y+h, x:x+w]

    # 将文本区域转换为灰度图像,并进行处理
    gray_text = cv2.cvtColor(text_region, cv2.COLOR_BGR2GRAY)
    thresh_text = cv2.threshold(gray_text, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]

    # 识别文本
    text = pytesseract.image_to_string(Image.fromarray(thresh_text))

    # 输出识别的文本
    print(text)

    # 在图像中绘制边界框和文本
    cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
    plt.imshow(img)
    plt.title('Extracted Text')
    plt.show()
代码说明

上面的代码使用以下步骤来提取图像中的文本:

  1. 使用OpenCV读取图像并将其转换为灰度图像。
  2. 使用OpenCV对图像进行二值化处理,以便提取文本区域。
  3. 查找图像中的文本区域,并计算每个文本区域的边界框。
  4. 提取找到的每个文本区域,并对其进行处理以进行OCR。
  5. 在原始图像中绘制识别文本的边界框,以便进行可视化。

以上是一个简单的Python示例,演示如何从图像中提取文本。随着技术的不断进步,也会有越来越多的工具和技术可用于处理图像和文本数据,以便提高准确性和效率。