模型概述
模型特點
模型能力
使用案例
🚀 印度身份證驗證器
印度身份證驗證器 是一個強大的計算機視覺工具,它能夠對印度身份證文件進行分類、檢測和文本提取。支持的證件類型包括 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 許可證。










