[Mã code 99601]

App Nhận Diện Biển Số Xe + Báo Cáo Full

  (1 Đánh giá)
  0       2    

App Python sử dụng mô hình quan sát để nhận diện hình ảnh biển số xe và trích xuất giá trị Có báo cáo đầy đủ để nộp làm đồ án or bài tập lớn

Danh mục
Thể loại
Ngày đăng
10-7-2026
Loại file
Full code
File download
 nhan-dien-bien-so-xe.zip [585 MB]
CAM KẾT TỪ NGƯỜI BÁN
Hỗ trợ cài đặt
Cam kết chức năng nhu mô tả
Hỗ trợ chỉnh sửa code - báo cáo theo yêu cầu để phù hợp với bài tập or đồ án


Source code
2

Đánh giá (6)
5/5

Ngày tham gia
6/7/2026

====================================================
  ỨNG DỤNG NHẬN DIỆN BIỂN SỐ XE VIỆT NAM (ANPR)
  Danh sách chức năng
====================================================
 
─────────────────────────────────────────────────
1. NHẬN DIỆN BIỂN SỐ
─────────────────────────────────────────────────
  [1.1] Mở ảnh qua nút "Mở Ảnh" (hộp thoại chọn file)
  [1.2] Kéo & thả file ảnh trực tiếp vào vùng hiển thị
  [1.3] Nhận diện biển số 1 dòng (biển dài ô tô)
  [1.4] Nhận diện biển số 2 dòng (biển vuông xe máy)
  [1.5] Nhận diện nhiều biển số trong cùng một ảnh (tối đa 15 vùng)
  [1.6] Hiển thị biển số và độ tự tin (%) ngay trên giao diện
  [1.7] Vẽ khung bounding box + nhãn lên ảnh kết quả
  [1.8] Xử lý hàng loạt nhiều ảnh cùng lúc (Batch mode)
  [1.9] Hỗ trợ định dạng: JPG, JPEG, PNG, BMP, WEBP, TIFF
 
─────────────────────────────────────────────────
2. XỬ LÝ ẢNH (TIỀN XỬ LÝ)
─────────────────────────────────────────────────
  [2.1] Cân bằng sáng tự động (CLAHE) cho ảnh tối/sáng không đều
  [2.2] Làm nét ký tự (Unsharp Masking) trước khi OCR
  [2.3] Chỉnh nghiêng biển số (Deskew bằng Hough Lines)
  [2.4] Thử 4 biến thể tiền xử lý (CLAHE, Grayscale, Binary, Inverted)
        → tự động chọn kết quả tốt nhất
  [2.5] Tự động scale up vùng biển số nhỏ (< 60px) trước OCR
  [2.6] Hỗ trợ đọc file ảnh có tên tiếng Việt/ký tự đặc biệt
  [2.7] Resize ảnh đầu vào về tối đa 1280px (tránh tốn RAM)
 
─────────────────────────────────────────────────
3. PHÁT HIỆN VÙNG BIỂN SỐ
─────────────────────────────────────────────────
  [3.1] Phát hiện bằng OpenCV Contour Analysis (không cần GPU)
  [3.2] Dùng đồng thời Otsu + Adaptive Threshold để bắt nhiều trường hợp
  [3.3] Lọc vùng theo aspect ratio: 1 dòng (2.3–6.5), 2 dòng (0.75–2.0)
  [3.4] Chấm điểm vùng theo aspect ratio × diện tích (tránh noise nhỏ)
  [3.5] Khử vùng trùng lặp bằng IoU (Non-Maximum Suppression)
  [3.6] Kiến trúc mở: hỗ trợ tích hợp model YOLO fine-tune trong tương lai
 
─────────────────────────────────────────────────
4. HẬU XỬ LÝ CHUỖI BIỂN SỐ
─────────────────────────────────────────────────
  [4.1] Chuẩn hóa định dạng biển VN: XX[A-Z][0-9]-NNNNN
  [4.2] Sửa lỗi OCR: dấu chấm → gạch ngang ("18A.12345" → "18A-12345")
  [4.3] Sửa lỗi OCR: "4" bị đọc thành "L" ("18AL083" → "18A-41083")
  [4.4] Sửa lỗi OCR: chữ cái ở vị trí số ("1BA" → "18A")
  [4.5] Sửa lỗi OCR: số ở vị trí chữ cái ("541" → "54L" hoặc "54I")
  [4.6] Cắt bỏ ký tự số thừa cuối ("18A-123457" → "18A-12345")
  [4.7] Ghép 2 dòng OCR thành biển số hoàn chỉnh (biển 2 dòng xe máy)
  [4.8] Fallback OCR toàn ảnh nếu không tìm được vùng biển số
 
─────────────────────────────────────────────────
5. GIAO DIỆN NGƯỜI DÙNG
─────────────────────────────────────────────────
  [5.1] Giao diện Dark Theme (Catppuccin Mocha)
  [5.2] Bố cục chia đôi: ảnh trái, lịch sử phải (QSplitter)
  [5.3] Hiển thị biển số lớn + màu nổi bật sau mỗi lần nhận diện
  [5.4] Thanh tiến trình (Progress Bar) khi đang xử lý
  [5.5] Thanh trạng thái (Status Bar) thông báo từng bước
  [5.6] Xử lý AI trong luồng nền (QThread) — giao diện không bị đóng băng
  [5.7] Tự động nạp model khi khởi động (không block UI)
 
─────────────────────────────────────────────────
6. LỊCH SỬ & CƠ SỞ DỮ LIỆU
─────────────────────────────────────────────────
  [6.1] Lưu tự động kết quả vào SQLite sau mỗi lần nhận diện
  [6.2] Bảng lịch sử hiển thị: STT, Biển số, Độ tự tin, Tên file, Thời gian
  [6.3] Tìm kiếm/lọc lịch sử theo biển số (real-time khi gõ)
  [6.4] Xóa một bản ghi hoặc xóa toàn bộ lịch sử (có xác nhận)
  [6.5] Lưu trữ cục bộ (file bien_so_xe.db) — không cần server
 
─────────────────────────────────────────────────
7. XUẤT DỮ LIỆU
─────────────────────────────────────────────────
  [7.1] Xuất toàn bộ lịch sử ra file Excel (.xlsx)
  [7.2] File Excel có header màu, tự động căn chỉnh độ rộng cột
  [7.3] Nội dung xuất: ID, Biển số, Độ tự tin (%), Đường dẫn ảnh, Thời gian
 
─────────────────────────────────────────────────
8. KỸ THUẬT & HIỆU NĂNG
─────────────────────────────────────────────────
  [8.1] Chạy hoàn toàn trên CPU — không yêu cầu GPU
  [8.2] Thời gian xử lý: 5–15 giây/ảnh (CPU, 4 biến thể × tối đa 15 vùng)
  [8.3] Tự động tải model EasyOCR lần đầu (~200 MB), cache cho các lần sau
  [8.4] Hỗ trợ Python 3.10–3.13
  [8.5] Quản lý môi trường bằng uv (không cần cài pip/venv thủ công)
 
─────────────────────────────────────────────────
9. CHƯA HỖ TRỢ / HẠN CHẾ
─────────────────────────────────────────────────
  [9.1] Chưa xử lý video hoặc camera thời gian thực
  [9.2] Chưa có model YOLO fine-tune cho biển số VN
        (đang dùng Contour Analysis thay thế)
  [9.3] Độ chính xác giảm khi biển số < 60px chiều cao trong ảnh
  [9.4] Chưa hỗ trợ biển quân đội, ngoại giao, xe công nghệ
  [9.5] Chưa kiểm thử trên macOS / Linux
  [9.6] Tốc độ chậm khi xử lý ảnh có nhiều vùng phức tạp (>15 ứng viên)
 
====================================================
  Tổng: 8 nhóm chức năng | 52 tính năng chi tiết
====================================================
 


XEM THÊM ==> Hướng dẫn cài đặt chi tiết

HÌNH ẢNH DEMO


Nhận diện biển số,App python trí tuệ nhân tạo,Code bài tập lớn,Đồ án tốt nghiệp

Nhận diện biển số,App python trí tuệ nhân tạo,Code bài tập lớn,Đồ án tốt nghiệp

Nhận diện biển số,App python trí tuệ nhân tạo,Code bài tập lớn,Đồ án tốt nghiệp


HƯỚNG DẪN CÀI ĐẶT
# Hướng Dẫn Cài Đặt & Chạy Ứng Dụng

Ứng dụng nhận diện biển số xe Việt Nam (ANPR) chạy trên **Windows 10/11**, không cần GPU.

---

## Yêu cầu hệ thống

- Windows 10 / 11 (64-bit)
- RAM: tối thiểu 4 GB (khuyến nghị 8 GB)
- Dung lượng ổ cứng: ~3 GB (cho model EasyOCR lần đầu tải về)
- Kết nối internet lần đầu cài đặt

---

## Bước 1 — Cài đặt uv

**uv** là công cụ quản lý Python & thư viện, thay thế cho pip/venv.

Mở **PowerShell** (không cần quyền Admin) và chạy:

```powershell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
```

Sau khi cài xong, **đóng và mở lại PowerShell**, rồi kiểm tra:

```powershell
uv --version
```

Kết quả mong đợi: `uv 0.x.x (...)` — nếu thấy version là cài thành công.

---

## Bước 2 — Tải source code

Nếu đã cài **Git**:

```powershell
git clone https://github.com/<ten-tai-khoan>/<ten-repo>.git
cd <ten-repo>
```

Nếu chưa có Git, tải file ZIP trên GitHub → **Code → Download ZIP** → giải nén → mở thư mục vừa giải nén.

---

## Bước 3 — Cài thư viện

Trong thư mục dự án, chạy:

```powershell
uv sync
```

Lệnh này tự động:
- Tải Python phiên bản phù hợp (nếu máy chưa có)
- Tạo môi trường ảo `.venv/`
- Cài tất cả thư viện trong `pyproject.toml`

> Lần đầu có thể mất **3–10 phút** tuỳ tốc độ mạng.

---

## Bước 4 — Chạy ứng dụng

```powershell
uv run main.py
```

**Lần đầu chạy**, ứng dụng sẽ tự tải model EasyOCR (~200 MB) về thư mục `C:\Users\<ten>\\.EasyOCR\` — chỉ tải một lần duy nhất.

---

## Cách sử dụng

1. Kéo thả file ảnh (JPG, PNG, BMP, WEBP) vào vùng hiển thị  
   **hoặc** nhấn nút **Mở Ảnh** để chọn file.
2. Đợi thanh tiến trình hoàn tất (~5–15 giây/ảnh trên CPU).
3. Biển số và độ tự tin hiển thị ngay dưới ảnh.
4. Lịch sử nhận diện lưu tự động vào bảng bên phải.
5. Dùng ô **Tìm kiếm** để lọc theo biển số.
6. Nhấn **Export Excel** để xuất lịch sử ra file `.xlsx`.

### Xử lý nhiều ảnh cùng lúc (Batch)

Nhấn **Batch (Nhiều ảnh)** → chọn nhiều file → ứng dụng xử lý tuần tự và lưu tất cả kết quả.

---

## Khắc phục lỗi thường gặp

| Lỗi | Nguyên nhân | Cách xử lý |
|-----|-------------|------------|
| `uv: command not found` | Chưa cài uv hoặc chưa restart PowerShell | Đóng/mở lại PowerShell sau khi cài |
| `uv sync` báo lỗi mạng | Kết nối internet yếu/chậm | Thử lại, hoặc dùng mạng khác |
| Cửa sổ ứng dụng không hiện | Lỗi thiếu thư viện PySide6 | Chạy lại `uv sync` |
| Lần đầu chạy rất chậm | Đang tải model EasyOCR | Đợi, chỉ xảy ra lần đầu |
| Không nhận diện được biển số | Ảnh quá nhỏ hoặc mờ | Dùng ảnh ≥ 800×600px, biển số rõ nét |

---

## Cấu trúc thư mục

```
├── main.py              # Chạy ứng dụng
├── pyproject.toml       # Danh sách thư viện
├── ui/                  # Giao diện
├── core/                # Engine AI
├── database/            # Cơ sở dữ liệu SQLite
└── data/                # Thư mục chứa ảnh mẫu (tuỳ chọn)
```

---

## Yêu cầu ảnh đầu vào để đạt kết quả tốt

- Độ phân giải: **tối thiểu 800×600px**, khuyến nghị 1920×1080px
- Biển số chiếm ít nhất **5% diện tích ảnh**
- Góc nghiêng: dưới **25°**
- Ánh sáng: tránh ngược sáng, tránh tối hoàn toàn

 




Nguồn: Topcode.vn

BÌNH LUẬN (0)


ĐÁNH GIÁ (1)

ĐIỂM TRUNG BÌNH

5
1 Đánh giá
Code rất tốt (1)
Code tốt (0)
Code rất hay (0)
Code hay (0)
Bình thường (0)
Thành viên
Nội dung đánh giá
22:57 - 10/7/2026
Code rất tốt
Code rất tốt và phù hợp để phát triển
HỖ TRỢ TRỰC TUYẾN