Hello và nice weekend nhé anh em Mì AI. Hôm nay chúng ta sẽ cùng nhau tìm hiểu cách nhận diện biển số xe bằng WPOD-NET và Tesseract OCR nhé.
Trong 03 chương trước mình đã guide anh em 03 cách phát hiện biển số trong ảnh, đó là:
- Phát hiện bằng YOLO, xem tại đây
- Phát hiện bằng WPOD-NET, xem tại đây
- Phát hiện bằng OpenCV thuần, xem tại đây.
Bạn nào chưa xem các bài trước thì xem lại nhé. Còn hôm nay mình sẽ sử dụng WPOD-NET để phát hiện biển số. Sau đó qua một vài bước xử lý mình sẽ dùng tiếp Tesseract OCR để nhận diện chữ số trên biển nhé. Mình cũng nói luôn là có nhiều cách để nhận diện ký tự trên biển, mình sẽ lần lượt ra các bài tiếp theo nhé.
Okie vòng vo tam quốc đủ rồi, bắt đầu nào!
Phần 1 – Chuẩn bị nguyên vật liệu
Các bạn tạo thư mục MiAI_LP_Recognition_1 để chứa nội dung bài này nhé. Sau đó các bạn gõ lệnh sau để lấy source về:
git clone https://github.com/thangnch/MiAI_LP_Recognition .
Xem thêm : Ký hiệu các biển số xe QUÂN ĐỘI Việt Nam & ý nghĩa
Sau khi đợi trong giây lát, các bạn sẽ thấy source ùa về hối hả. Bây giờ cài đặt các thư viện cần thiết bằng lệnh
pip install -r setup.txt
Okie rồi, các món cài đặt cho python đã xong. Bây giờ sang bước 2.
Phần 2 – Cài đặt thư viện Tesseract OCR
Riêng món này thì cài đặt khá là khác nhau đối với từng hệ điều hành (Window, Linux,Mac…). Các bạn làm theo chính xác các bước cài đặt trong Phần 1 của bài về Tesseract tại link này: https://miai.vn/2019/08/22/ocr-nhan-dang-van-ban-tieng-viet-voi-tesseract-ocr/ nhé. Mình nhấn mạnh là chỉ cần làm Phần 1 thôi.
Phần 3 – Các bước tiến hành của bài toán
Vâng như thường lệ để các bạn hiểu code nhanh chóng thì mình sẽ guide qua về pipeline của bài này:
- Bước 1. Chúng ta sẽ load ảnh từ file ảnh png hoặc jpg tùy ý.
- Bước 2. Sử dụng pretrain WPOD để tách biển số ra khỏi ảnh gốc vì chúng ta sẽ tập trung xử lý cái ảnh biển số này.
- Bước 3. Chúng ta sẽ tiền xử lý ảnh biển số trước khi đưa cho Tesseract nhận diện gồm 2 thao tác: chuyển về ảnh xám và tách biệt nền và chữ bằng threshold.
- Bước 4. Đưa vào Tesseract nhận diện với tham số về language (ngôn ngữ) và phương thức xử lý (psm) cho phù hợp. Ở đây mình chọn psm = 7 là xử lý tìm 1 dòng text.
Tại bước 3 mình có 1 lưu ý, hiện tại mình chỉ viết code xử lý biển dài, nếu bạn gặp biển vuông thì bạn tách thành 2 phần trên và dưới sau đó cũng đưa vào Tesseract như bình thường nhé (đây là hướng mình để cho các bạn thực hành luôn).
Phần 4 – Code chương trình nhận diện biển số
Xem thêm : Dịch biển số xe 04953 (Bất Tứ Cửu Ngũ Tam)
Well, cũng tàm tạm rồi, các bạn mở source đi và tìm đến file read_plate.py. Source file này cũng khá là quen thuộc nếu bạn đã đọc các bài trước. Tuy nhiên mình đã thêm vào vài đoạn code và cũng đã comment khá đầy đủ. Các bạn đọc Phần 3 bên trên và dò code sẽ thấy rất đơn giản.
Phần 5 – Chạy thử chương trình
Bây giờ các bạn hãy chạy thử chương trình bằng lệnh
python read_plate.py
Nếu mọi thứ được cài đặt đúng và đủ, các bạn sẽ thấy các bước xử lý của chương trình hiện ra đầy đủ. Kết quả là biển số sẽ được viết lên trên ảnh luôn.
OK, như vậy qua bài này bước đầu các bạn đã biết cách phát hiện và nhận diện một biển số đơn giản. Còn nhiều cách khác để giải bài toán này, mình sẽ lần lượt giới thiệu và chia sẻ cùng các bạn trong các bài sau. Hẹn gặp lại các bạn nhé.
Hãy join cùng cộng đồng Mì AI nhé!
Fanpage: http://facebook.com/miaiblogGroup trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroupWebsite: https://miai.vnYoutube: http://bit.ly/miaiyoutube
Nguồn: https://thegioiso.edu.vn
Danh mục: Biển Số Xe