1. 简介
CCPD(Curated Car-Plate Detection)是一个用于车牌检测和识别的大型数据集,包含超过20万张图像和70万个车牌实例。
PaddleOCR是百度开源的一款实用的多语种OCR工具,支持中英文数字组合识别、竖排文字识别等多种场景。它基于百度自研的深度学习模型开发,在多个公开数据集上取得了业界领先的识别效果。PaddleOCR具有快速高效、准确率高、支持多种语种、可配置化程度高等优点,可广泛应用于网络图像识别、文字识别、自动驾驶等多个领域。
2. 环境准备
2.1 下载CCPD数据集
可以从GitHub上下载CCPD数据集,地址为GitHub - detectRecog/CCPD: [ECCV 2018] CCPD: a diverse and well-annotated dataset for license plate detection and recognition 。下载后解压缩即可获得数据集图片。
2.2 安装PaddleOCR
使用以下pip命令直接安装PaddleOCR:
pip install paddleocr
3. 代码
下面的代码解析一个CCPD图片,截取出其中的车牌局部,交给PaddleOCR去进行识别:
import cv2
import os
import re
from paddleocr import PaddleOCR
def extract_and_recognize_plate(image_path, ocr):
# 读取图像
img = cv2.imread(image_path)
# 获取文件名中的坐标信息
filename = os.path.basename(image_path)
coords = re.findall(r'\d+&\d+', filename)
# 解析坐标信息
plate_coords = []
for coord in coords[:2]:
x, y = map(int, coord.split('&'))
plate_coords.append((x, y))
# 计算矩形区域
x1, y1 = plate_coords[0]
x2, y2 = plate_coords[1]
plate_region = img[y1:y2, x1:x2]
# 使用PaddleOCR识别车牌
result = ocr.ocr(plate_region, cls=True)
# 提取识别结果
plate_number = result[0][1][0]
return plate_number
# 初始化PaddleOCR
ocr = PaddleOCR(use_angle_cls=True, lang='ch') # 使用中文识别模型
# 示例用法
image_path = '00205459770115-90_85-352&516_448&547-444&547_368&549_364&517_440&515-0_0_22_10_26_29_24-128-7.jpg'
plate_number = extract_and_recognize_plate(image_path, ocr)
print(f'识别结果: {plate_number}')