模型简介
模型特点
模型能力
使用案例
🚀 印度身份证验证器
印度身份证验证器 是一个强大的计算机视觉工具,它能够对印度身份证文件进行分类、检测和文本提取。支持的证件类型包括 Aadhaar 卡、PAN 卡、护照、选民证和驾照等,并且对于 Aadhaar 卡和驾照,还支持正反两面的图像识别。该项目由 YOLO11 模型和 PaddleOCR 提供支持。
🚀 快速开始
安装
-
克隆仓库:
git clone https://huggingface.co/logasanjeev/indian-id-validator cd indian-id-validator
-
安装依赖: 确保已安装 Python 3.8 或更高版本,然后运行以下命令:
pip install -r requirements.txt
requirements.txt
文件中包含了ultralytics
、paddleocr
、paddlepaddle
、numpy==1.24.4
、pandas==2.2.2
等依赖项。 -
下载模型: 模型会通过
inference.py
脚本从 Hugging Face 仓库自动下载。确保config.json
文件位于项目根目录。你也可以使用上面的 Ultralytics Hub 链接,以 PyTorch、ONNX 等格式下载模型。
使用
Python API
仅分类
使用 Id_Classifier
模型识别身份证类型:
from ultralytics import YOLO
import cv2
# 加载模型
model = YOLO("models/Id_Classifier.pt")
# 加载图像
image = cv2.imread("samples/aadhaar_front.jpg")
# 进行分类
results = model(image)
# 打印预测的类别和置信度
for result in results:
predicted_class = result.names[result.probs.top1]
confidence = result.probs.top1conf.item()
print(f"预测类别: {predicted_class}, 置信度: {confidence:.2f}")
输出:
预测类别: aadhar_front, 置信度: 1.00
端到端处理
使用 inference.py
进行分类、检测和 OCR:
from inference import process_id
# 处理 Aadhaar 卡背面图像
result = process_id(
image_path="samples/aadhaar_back.jpg",
save_json=True,
output_json="detected_aadhaar_back.json",
verbose=True
)
# 打印结果
import json
print(json.dumps(result, indent=2))
输出:
{
"Aadhaar": "996269466937",
"地址": "S/O Gocala Shinde Jay Bnavani Rahiwasi Seva Sangh ..."
}
处理护照图像并可视化
处理护照图像,进行分类、检测字段和提取文本,并启用可视化:
from inference import process_id
# 处理护照图像并输出详细信息
result = process_id(
image_path="samples/passport_front.jpg",
save_json=True,
output_json="detected_passport.json",
verbose=True
)
# 打印结果
import json
print("\n护照处理结果:")
print(json.dumps(result, indent=4))
可视化结果:
启用 verbose=True
标志后,会生成原始图像、边界框以及每个检测字段和提取文本的可视化结果。以下是 passport_front.jpg
的处理结果:
类型 | 图像 |
---|---|
原始图像 | ![]() |
带边界框的输出 | ![]() |
检测到的字段:
字段 | 图像 |
---|---|
地址 | ![]() |
代码 | ![]() |
出生日期 | ![]() |
签发日期 | ![]() |
有效期至 | ![]() |
性别 | ![]() |
机器可读区 1 | ![]() |
机器可读区 2 | ![]() |
姓名 | ![]() |
国籍 | ![]() |
国家 | ![]() |
签发地 | ![]() |
输出:
护照处理结果:
{
"国家": "INDIAN",
"出生日期": "26/08/1996",
"签发地": "AMRITSAR",
"签发日期": "18/06/2015",
"代码": "NO461879",
"有效期至": "17/06/2025",
"地址": "SHER SINGH WALAFARIDKOTASPUNJAB",
"姓名": "SHAMINDERKAUR",
"国籍": "IND",
"性别": "F",
"机器可读区 1": "P<INDSANDHU<<SHAMINDER<KAUR<<<<<<<<<<<<<<<<<",
"机器可读区 2": "NO461879<4IND9608269F2506171<<<<<<<<<<<<<<<2"
}
终端使用
通过命令行运行 inference.py
脚本:
python inference.py samples/aadhaar_front.jpg --verbose --output-json detected_aadhaar.json
选项:
--model
:指定模型(例如Aadhaar
、Passport
)。默认值:自动检测。--no-save-json
:禁用 JSON 输出。--verbose
:显示可视化结果。--classify-only
:仅对身份证类型进行分类。
示例输出:
检测到的文档类型: aadhar_front,置信度: 0.98
提取的文本:
{
"Aadhaar": "1234 5678 9012",
"出生日期": "01/01/1990",
"性别": "M",
"姓名": "John Doe",
"地址": "123 Main St, City, State"
}
✨ 主要特性
- 分类:使用
Id_Classifier
模型对身份证类型(如aadhar_front
、passport
)进行分类。 - 检测:使用特定类型的 YOLO11 检测模型检测特定字段(如 Aadhaar 卡号、出生日期、姓名)。
- 提取:通过 PaddleOCR 对检测到的字段进行文本提取,并进行图像预处理(上采样、去噪、增强对比度)。
支持的身份证类型:
- Aadhaar 卡(正面和背面)
- PAN 卡(正面)
- 护照(正面)
- 选民证(正面和背面)
- 驾照(正面和背面)
📦 安装指南
克隆仓库
git clone https://huggingface.co/logasanjeev/indian-id-validator
cd indian-id-validator
安装依赖
pip install -r requirements.txt
下载模型
模型会通过 inference.py
脚本自动下载,确保 config.json
文件位于根目录。也可通过 Ultralytics Hub 链接下载不同格式的模型。
💻 使用示例
基础用法
Python API 分类示例
from ultralytics import YOLO
import cv2
# 加载模型
model = YOLO("models/Id_Classifier.pt")
# 加载图像
image = cv2.imread("samples/aadhaar_front.jpg")
# 进行分类
results = model(image)
# 打印预测的类别和置信度
for result in results:
predicted_class = result.names[result.probs.top1]
confidence = result.probs.top1conf.item()
print(f"预测类别: {predicted_class}, 置信度: {confidence:.2f}")
高级用法
端到端处理示例
from inference import process_id
# 处理 Aadhaar 卡背面图像
result = process_id(
image_path="samples/aadhaar_back.jpg",
save_json=True,
output_json="detected_aadhaar_back.json",
verbose=True
)
# 打印结果
import json
print(json.dumps(result, indent=2))
📚 详细文档
模型
该流程包含以下模型,每个模型都针对身份证验证过程中的特定任务进行了设计。可以从各自的 Ultralytics Hub 链接下载不同格式(如 PyTorch、ONNX、TensorRT 等)的模型,以部署到不同的环境中。
模型名称 | 类型 | 描述 | 链接 |
---|---|---|---|
Id_Classifier | YOLO11l-cls | 对印度身份证文档的类型进行分类(如 Aadhaar 卡、护照)。 | Ultralytics Hub |
Aadhaar | YOLO11l | 检测 Aadhaar 卡(正面和背面)上的字段,如 Aadhaar 卡号、出生日期和地址。 | Kaggle Notebook |
Driving_License | YOLO11l | 检测驾照(正面和背面)上的字段,包括驾照号码、出生日期和车辆类型。 | Ultralytics Hub |
Pan_Card | YOLO11l | 检测 PAN 卡上的字段,如 PAN 卡号、姓名和出生日期。 | Ultralytics Hub |
Passport | YOLO11l | 检测护照上的字段,包括机器可读区、出生日期和国籍。 | Ultralytics Hub |
Voter_Id | YOLO11l | 检测选民证(正面和背面)上的字段,如选民证号、姓名和地址。 | Ultralytics Hub |
模型详情
以下是每个模型的详细信息,包括它们检测的类别和在自定义印度身份证数据集上的评估指标。
模型名称 | 任务 | 类别 | 指标 |
---|---|---|---|
Id_Classifier | 图像分类 | aadhar_back , aadhar_front , driving_license_back , driving_license_front , pan_card_front , passport , voter_id |
准确率(Top-1): 0.995, 准确率(Top-5): 1.0 |
Aadhaar | 目标检测 | Aadhaar_Number , Aadhaar_DOB , Aadhaar_Gender , Aadhaar_Name , Aadhaar_Address |
mAP50: 0.795, mAP50-95: 0.553, 精确率: 0.777, 召回率: 0.774, 适应度: 0.577 |
Driving_License | 目标检测 | Address , Blood Group , DL No , DOB , Name , Relation With , RTO , State , Vehicle Type |
mAP50: 0.690, mAP50-95: 0.524, 精确率: 0.752, 召回率: 0.669 |
Pan_Card | 目标检测 | PAN , Name , Father's Name , DOB , Pan Card |
mAP50: 0.924, mAP50-95: 0.686, 精确率: 0.902, 召回率: 0.901 |
Passport | 目标检测 | Address , Code , DOB , DOI , EXP , Gender , MRZ1 , MRZ2 , Name , Nationality , Nation , POI |
mAP50: 0.987, mAP50-95: 0.851, 精确率: 0.972, 召回率: 0.967 |
Voter_Id | 目标检测 | Address , Age , DOB , Card Voter ID 1 Back , Card Voter ID 2 Front , Card Voter ID 2 Back , Card Voter ID 1 Front , Date of Issue , Election , Father , Gender , Name , Point , Portrait , Symbol , Voter ID |
mAP50: 0.917, mAP50-95: 0.772, 精确率: 0.922, 召回率: 0.873 |
更多详细信息,请参考本 README 顶部 YAML 元数据中的 model-index
部分。
Colab 教程
你可以尝试交互式教程,使用示例图像或你自己的图像测试模型: 在 Colab 中打开
链接
- 仓库:Hugging Face
- 模型:
- Id_Classifier:Ultralytics
- Aadhaar:Kaggle
- Pan_Card:Ultralytics
- Passport:Ultralytics
- Voter_Id:Ultralytics
- Driving_License:Ultralytics
- 教程:Colab Notebook
- 推理脚本:inference.py
- 配置文件:config.json
贡献
欢迎贡献代码!贡献步骤如下:
- 分叉仓库。
- 创建一个新分支:
git checkout -b feature-name
。 - 提交包含更改的拉取请求。
通过 Hugging Face Issues 页面报告问题或提出功能建议。
📄 许可证
本项目采用 MIT 许可证。










