Python识别字符串中的车牌号(包含新能源、去除·分隔符、去重)

CLIP-GmP-ViT-L-14编码模型

CLIP-GmP-ViT-L-14编码模型` 是一个图文双塔编码模型,适合做图文匹配、零样本分类和跨模态检索演示。本镜像已经完成 Web 部署,打开页面即可上传图片并测试图文表征能力

把车牌号提取功能封装成一个可调用的模块,函数封装。使其能够正确识别包含分隔符・的车牌号,并自动去除分隔符,同时兼容 5 位或 6 位字母 / 数字的情况。

主要用途为 yolo+PaddleOCR识别车牌号后,数据过滤。

规定车牌编号号规则顺序如下:
a)第一个字符省直辖市简称,
b)第二个字符 大写字母
c)第三个字符可能是 ‘·’
d)后面连续5或者6个字母或数字(不包含I、O)
e)结尾可能是挂学警港澳

license_plate_extractor.py

import re

# 优化后:减少冗余分组,保留核心匹配逻辑
re_str = r'[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][·]?[A-HJ-NP-Z0-9]{5,6}|[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][·]?[A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]'

# 配套提取函数(结合你的需求)
def extract_license_plates(text: str) -> list:
    """提取车牌号,自动去·、去重、过滤空结果"""
    # 匹配所有符合规则的车牌
    matched = re.findall(re_str, text)
    # 清洗:去·、去重、过滤空值
    cleaned = []
    for plate in matched:
        if plate:  # 排除空匹配
            clean_plate = plate.replace('·', '')
            cleaned.append(clean_plate)
    # 去重并保持顺序
    cleaned = list(dict.fromkeys(cleaned))
    return cleaned

# 测试
if __name__ == "__main__":
    test_text1 = """
    普通牌:京A12345、沪B·67890
    新能源:粤C·A123456、苏D789012
    特殊牌:鲁E1234挂、浙F5678警
    无牌文本:今天没提车牌
    """
    plates = extract_license_plates(test_text1)
    # print(plates) 输出:['京A12345', '沪B67890', '粤CA12345', '苏D789012', '鲁E1234挂', '浙F5678警']
    if not plates:  # 列表为空(未找到车牌)
        print("未找到车牌")
    else:  # 找到车牌,输出结果
        print("提取到的车牌号有:")
        for idx, plate in enumerate(plates, 1):
            print(f"{idx}. {plate}")

    test_text2 = "无车牌内容"
    plates = extract_license_plates(test_text2)
    # print(plates) 输出:['未找到车牌']
    if not plates:  # 列表为空(未找到车牌)
        print("未找到车牌")
    else:  # 找到车牌,输出结果
        print("提取到的车牌号有:")
        for idx, plate in enumerate(plates, 1):
            print(f"{idx}. {plate}")

main.py

from license_plate_extractor import extract_license_plates

# 待提取的文本
text = """
张三的车牌是浙A·888888(新能源),李四的车牌是鲁B99999,
王五和张三同车牌:浙A·888888,赵六的车牌是闽C·765432
"""
# 提取车牌号
plates = extract_license_plates(text)
# 判断结果并输出
if not plates:  # 列表为空(未找到车牌)
    print("未找到车牌")
else:  # 找到车牌,输出结果
    print("提取到的车牌号有:")
    for idx, plate in enumerate(plates, 1):
        print(f"{idx}. {plate}")

运行结果

提取到的车牌号有:
1. 浙A888888
2. 鲁B99999
3. 闽C765432

您可能感兴趣的与本文相关的镜像

CLIP-GmP-ViT-L-14编码模型

CLIP-GmP-ViT-L-14编码模型

图像识别
CLIP

CLIP-GmP-ViT-L-14编码模型` 是一个图文双塔编码模型,适合做图文匹配、零样本分类和跨模态检索演示。本镜像已经完成 Web 部署,打开页面即可上传图片并测试图文表征能力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值