从处理后的图像中提取文本

问题描述 投票:0回答:1

我正在尝试从任何欧盟车牌的裁剪图像中提取文本。我尝试过使用 easyocr 但结果对我来说不准确。我训练了一个 YOLOV8 模型来检测车牌,然后裁剪图像并对其进行一些灰度和阈值处理。谁能帮助我完成最后阶段从裁剪和处理过的盘子中提取文本?我的代码目前看起来像这样

from ultralytics import YOLO
import cv2
from inference import get_model
import easyocr

reader = easyocr.Reader(['en'])

plate_model = get_model(model_id="plate-recogniser/3", api_key=<API_KEY>)

# Load the image
image_file = r"C:\Users\46723\Desktop\Plate Recognition\samples\swedish.jpg"
image = cv2.imread(image_file)

# Perform inference to detect license plates
results = plate_model.infer(image)[0]

for prediction in results.predictions:
    x_center = prediction.x
    y_center = prediction.y
    width = prediction.width
    height = prediction.height

    # Calculate bounding box coordinates
    x1 = int(x_center - width / 2)
    y1 = int(y_center - height / 2)
    x2 = int(x_center + width / 2)
    y2 = int(y_center + height / 2)

    # Crop the detected license plate area
    license_plate_crop = image[y1:y2, x1:x2]
    
    # Convert to grayscale
    license_plate_crop_gray = cv2.cvtColor(license_plate_crop, cv2.COLOR_BGR2GRAY)
    
    # Adaptive thresholding
    license_plate_crop_thresh = cv2.adaptiveThreshold(
        license_plate_crop_gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, 
        cv2.THRESH_BINARY_INV, 11, 2
    )

    text_results = reader.readtext(license_plate_crop_thresh)
    
    for (bbox, text, prob) in text_results:
        print(f"Detected license plate text: {text} with confidence: {prob:.2f}")

    cv2.imshow("Cropped License Plate", license_plate_crop)
    cv2.waitKey(0)

cv2.destroyAllWindows()

我还想补充一点,我对 python 有点陌生。

python machine-learning computer-vision text-extraction
1个回答
0
投票

测试图片:https://onlinepngtools.com/images/examples-onlinepngtools/educational-website-header.png

要使用 Python 从图像中提取文本,您可以使用 pytesseract 库,它是 Google 的 Tesseract-OCR 引擎的包装器。方法如下:

第1步:安装所需的库 首先,确保安装 pytesseract 和 Pillow 用于图像处理:

bash 复制代码 pip 安装 pytesseract 枕头 第2步:安装Tesseract-OCR引擎 为了让 pytesseract 工作,您需要在系统上安装 Tesseract-OCR:

Windows:从此链接下载 Tesseract 安装程序。 macOS:使用自制软件: 巴什 复制代码 酿造安装超正方体 Linux:通过包管理器安装: 巴什 复制代码 sudo apt-get install tesseract-ocr 步骤 3:从图像中提取文本 安装先决条件后,您可以使用以下 Python 代码:

from PIL import Image
import pytesseract

# Path to the image file
image_path = 'path_to_your_image.png'

# Open the image using PIL
image = Image.open(image_path)

# Use pytesseract to extract text
text = pytesseract.image_to_string(image)

# Print the extracted text
print(text)

注意事项: 将“path_to_your_image.png”替换为图像文件的路径。

如果 pytesseract 无法找到 Tesseract 可执行文件,您可能需要手动指定它的路径:

pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

确保根据系统上安装 Tesseract 的位置调整路径。

此脚本将读取图像并将任何可见文本提取到字符串中。

© www.soinside.com 2019 - 2024. All rights reserved.