我正在尝试从任何欧盟车牌的裁剪图像中提取文本。我尝试过使用 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 有点陌生。
测试图片: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 的位置调整路径。
此脚本将读取图像并将任何可见文本提取到字符串中。