Bối cảnh và vấn đề nghiên cứu
Nhận dạng ký tự quang học (Optical Character Recognition - OCR) là quá trình chuyển đổi hình ảnh chứa chữ viết tay hoặc chữ đánh máy thành văn bản kỹ thuật số để máy tính có thể đọc và xử lý. Công nghệ này đóng vai trò nền tảng cho nhiều bài toán ứng dụng Xử lý ngôn ngữ tự nhiên (Natural Language Processing - NLP) trong thực tế bên cạnh công nghệ chuyển đổi giọng nói thành văn bản (Speech-to-Text). Trong bối cảnh các thủ tục hành chính - pháp lý tại Việt Nam đòi hỏi xử lý lượng lớn giấy tờ tùy thân, việc ứng dụng công nghệ OCR nhằm tự động hóa quá trình trích xuất thông tin là một nhu cầu cấp thiết. Đồ án "OCR Nhận Dạng Chứng Minh Nhân Dân" (OCR ID CARD) được thực hiện bởi nhóm sinh viên Khoa Khoa học Máy tính, Trường Đại học Công nghệ Thông tin (ĐHQG-HCM), dưới sự hướng dẫn của TS. Mai Tiến Dũng.
Lý do chọn đề tài
- Lý do khách quan: Nhu cầu số hóa và trích xuất dữ liệu văn bản tự động từ các loại giấy tờ định danh người dùng như Chứng minh nhân dân (CMND) và Căn cước công dân (CCCD) nhằm rút ngắn thời gian xử lý thủ tục hành chính công. Bên cạnh đó, các mô hình OCR mã nguồn mở phổ biến hiện nay (như EasyOCR, PaddleOCR, TesseractOCR) thường tối ưu cho các ngôn ngữ chính như chữ tượng hình (PaddleOCR mạnh về tiếng Trung, Hàn, Nhật) hoặc ký tự Latin không dấu (EasyOCR), dẫn đến độ chính xác hạn chế đối với tiếng Việt có hệ thống dấu thanh phức tạp.
- Lý do chủ quan: Nghiên cứu và áp dụng các kỹ thuật xử lý ảnh số vào giai đoạn tiền xử lý nhằm nâng cao chất lượng ảnh đầu vào và cải thiện hiệu suất nhận dạng; đồng thời tìm hiểu quy trình xây dựng, triển khai một hệ thống phần mềm hoàn chỉnh theo mô hình kiến trúc Client - Server trên nền tảng Web (Frontend: Reactjs, Backend: Flask API).
Mục tiêu và nhiệm vụ nghiên cứu
Nhiệm vụ nghiên cứu và triển khai của đồ án được cụ thể hóa qua 11 bước:
- Xây dựng pipeline xử lý tổng thể cho bài toán OCR.
- Thử nghiệm và đánh giá các mô hình Deep Learning.
- Xây dựng các module tiền xử lý ảnh chuyên biệt.
- Xử lý logic nghiệp vụ cho mô hình AI.
- Ứng dụng mô hình Deep Learning tích hợp thuật toán so khớp.
- Xây dựng hệ thống API phục vụ xử lý trên nền tảng Flask.
- Xử lý các lỗi giao thức HTTP và các trường hợp ngoại lệ (exception) trong luồng logic.
- Xây dựng giao diện ứng dụng web bằng Reactjs.
- Thiết kế giao diện tương thích đa thiết bị (responsive CSS) và tích hợp animation.
- Kết nối hệ thống giao diện Reactjs với máy chủ Flask.
- Tiến hành thử nghiệm hàng loạt trên các mẫu dữ liệu thực tế.
Đối tượng và phạm vi nghiên cứu
- Đối tượng nghiên cứu: Ảnh chụp các loại giấy tờ tùy thân định danh tại Việt Nam, cụ thể là Chứng minh nhân dân (CMND) và Căn cước công dân (CCCD).
- Phạm vi nghiên cứu: Đề tài tập trung vào việc tiền xử lý ảnh chụp, phát hiện vùng chứa văn bản, nhận dạng chữ tiếng Việt, chuẩn hóa văn bản và trích xuất các trường thông tin theo khuôn mẫu định dạng (template matching) để trả về dữ liệu cấu trúc cho người dùng.
Thách thức trong quá trình nghiên cứu
- Về tập dữ liệu (dataset): Giấy tờ tùy thân là loại dữ liệu nhạy cảm, dẫn đến việc thu thập dữ liệu (crawl data) gặp nhiều khó khăn, dung lượng tập dữ liệu nhỏ. Phần lớn ảnh thu thập được từ internet là dữ liệu giả (fake data) được tạo ra từ kiến trúc mạng đối nghịch tạo sinh (GAN) hoặc qua chỉnh sửa bằng Photoshop.
- Về tài nguyên phần cứng: Bài toán tích hợp nhiều lĩnh vực (Thị giác máy tính, Deep Learning, NLP) đòi hỏi tài nguyên tính toán cao để giảm thiểu thời gian chờ và tránh hiện tượng tràn bộ nhớ/sập ứng dụng (crash).
- Về triển khai thực tế: Hệ thống vận hành theo mô hình Client - Server đòi hỏi kết nối mạng ổn định và máy chủ Backend cần hỗ trợ GPU để thực thi các mô hình Deep Learning.
Cơ sở lý thuyết và phương pháp
Đề tài kết hợp lý thuyết xử lý ảnh số, các kiến trúc Deep Learning học sâu dạng pre-trained và kỹ thuật xử lý ngôn ngữ tự nhiên tiếng Việt để giải quyết bài toán trích xuất dữ liệu.
1. Kỹ thuật xử lý ảnh số và hình thái học
- Lọc mịn và khử nhiễu:
- Blur Gaussian: Phép nhân ma trận ảnh với ma trận lọc Gaussian (kernel) nhằm làm mịn điểm ảnh và giảm hiện tượng rỗ bề mặt, tuy nhiên có nhược điểm làm mờ đường biên cạnh.
- Blur Bilateral: Bộ lọc tính toán dựa trên các điểm ảnh có cùng mức năng lượng, giúp khử nhiễu nhưng vẫn duy trì độ dốc của biên cạnh.
- Xử lý độ sáng và độ tương phản:
- Điều chỉnh độ sáng (Brightness): Tăng sáng cho ảnh thiếu sáng hoặc giảm sáng cho ảnh bị chói. Với ảnh màu, tác giả sử dụng không gian màu HSV (Hue: sắc thái, Saturation: độ bão hòa, Value: độ sáng) và can thiệp trực tiếp vào kênh V nhằm bảo toàn sắc thái màu sắc ban đầu của ảnh thay vì biến đổi đồng thời cả 3 kênh RGB.
- Độ tương phản (Contrast): Điều chỉnh sự chênh lệch độ sáng giữa các vùng thông qua hệ số tương phản kết hợp với hằng số điều chỉnh ánh sáng.
- Cân bằng Histogram (Histogram Equalization): Tái phân bổ mật độ cường độ pixel (dải giá trị 0 - 255) rải đều khắp các mức xám, đóng vai trò quan trọng trong việc xử lý triệt để hiện tượng chói lóa do ánh sáng đèn flash điện thoại gây ra.
- Phát hiện góc (Corner Detector) và nắn chỉnh hình học:
- Phát hiện biên (Edge detection) để thu thập tập hợp các đường viền (contour).
- Rút gọn contour và lọc lấy contour có diện tích lớn nhất sở hữu đúng 4 đỉnh (đặc trưng hình chữ nhật của CMND/CCCD).
- Sắp xếp danh sách đỉnh theo hệ trục tọa độ để tiến hành phép biến đổi Affine/Homography đưa ảnh về góc nhìn trực diện.
- Các phép toán hình thái học trên ảnh nhị phân:
- Erosion (Phép co): Loại bỏ các pixel rời rạc khỏi đối tượng.
- Dilation (Phép giãn): Bổ sung và mở rộng vùng biên đối tượng.
- Opening (Mở): Thực hiện tuần tự phép co (Erosion) trước, sau đó là phép giãn (Dilation) nhằm khử nhiễu và làm mịn biên.
- Closing (Đóng): Thực hiện tuần tự phép giãn (Dilation) trước, sau đó là phép co (Erosion) nhằm lấp đầy các khoảng trống và vùng khuyết thiếu trên ảnh.
2. Các mô hình học sâu và công cụ NLP
Tác giả lựa chọn hướng tiếp cận sử dụng các mô hình pre-trained chuyên biệt cho từng tác vụ con trong pipeline:
- EasyOCR (JaidedAI): Mô hình OCR mã nguồn mở hỗ trợ hơn 80 ngôn ngữ, được sử dụng chuyên biệt cho tác vụ dò tìm vùng chứa văn bản (Text Box Detection).
- VietOCR: Mô hình OCR mã nguồn mở chuyên sâu cho tiếng Việt phát triển dựa trên kiến trúc Transformer, sử dụng pre-trained weights được huấn luyện trên tập dữ liệu 10 triệu ảnh (bao gồm chữ viết tay, văn bản scan thực tế và dữ liệu tổng hợp). VietOCR đảm nhận tác vụ nhận dạng ký tự (Text Recognition) từ các vùng ảnh đã cắt.
- Pyvi: Bộ công cụ NLP tiếng Việt (Vietnamese toolkit) cung cấp các chức năng Tokenization, Pos tagging, Accents removal và Accents adding. Đồ án sử dụng module
ViUtils của Pyvi để chuyển đổi văn bản có dấu sang không dấu (Accents removal).
- Thuật toán Khoảng cách Levenshtein (Levenshtein Distance): Bộ đo khoảng cách chỉnh sửa giữa hai chuỗi ký tự (số thao tác thêm, xóa, thay thế ký tự tối thiểu để chuyển chuỗi A thành chuỗi B), được tích hợp thông qua module
Enchant của Python nhằm phục vụ quá trình so khớp chuỗi.
Thiết kế và triển khai
Hệ thống được thiết kế theo kiến trúc Client - Server hoàn chỉnh, phân định rõ ràng vai trò xử lý giữa phía giao diện người dùng và máy chủ Backend.
KIẾN TRÚC HỆ THỐNG VÀ LUỒNG XỬ LÝ OCR
[ Client: Reactjs ]
[ Box Detection (EasyOCR: readtext flag) ]
[ Line Detection (Ngưỡng Ox < 20px) ]
[ Text Recognition (VietOCR Transformer) ]
[ Chuẩn hóa văn bản (Upper + Pyvi Accents Removal) ]
[ Fit Template (So khớp tỷ lệ lst_count / default_count) ]
1. Phân công nhiệm vụ phát triển hệ thống
Việc xây dựng hệ thống được phân chia cụ thể giữa các thành viên trong nhóm nghiên cứu:
| Thành viên |
Mã số sinh viên |
Vai trò và nhiệm vụ đảm nhiệm |
| Phạm Ngọc Trường |
18521571 |
Trưởng nhóm (Leader), Xây dựng kiến trúc hệ thống, Phát triển Core AI |
| Trần Hoàng Sơn |
18521351 |
Xây dựng Flask API, Lập trình ứng dụng Reactjs |
| Nguyễn Trường Thịnh |
18521447 |
Thử nghiệm Deep model, Phát triển Corner detector, Xử lý ảnh |
| Nguyễn Văn Thịnh |
18521448 |
Lập trình ứng dụng Reactjs, Xây dựng một số phép xử lý ảnh |
2. Kiến trúc phía Client (Frontend)
- Công nghệ sử dụng: Thư viện Reactjs (JavaScript), thư viện gửi yêu cầu Axios.
- Chức năng chính:
- Giao diện người dùng tương thích đa thiết bị (Responsive CSS) và tích hợp các hiệu ứng chuyển động (animation).
- Module tải ảnh lên (Upload image) hỗ trợ xem trước.
- Bộ công cụ tùy chỉnh tiền xử lý ảnh với 3 chế độ:
Auto (tự động áp dụng Histogram và Auto detect), Custom (cho phép người dùng lựa chọn 1 hoặc kết hợp nhiều phép toán trong 12 phép xử lý ảnh) và None (giữ nguyên ảnh gốc).
- Đóng gói dữ liệu ảnh dưới định dạng chuỗi Base64 cùng mảng
lst_options (chứa mã ID của các tùy chọn xử lý đã cấu hình) gửi lên máy chủ.
- Tiếp nhận dữ liệu trả về từ máy chủ và hiển thị trực quan thông tin trích xuất kèm ảnh đã cắt.
3. Kiến trúc phía Server (Backend)
- Công nghệ sử dụng: Micro-framework Flask (ngôn ngữ Python, môi trường Python 3.10 trở lên), yêu cầu máy chủ trang bị GPU để tăng tốc tính toán Deep Learning.
- Bảo mật và kết nối mạng:
- Flask-CORS: Cấu hình chia sẻ tài nguyên chéo nguồn (Cross-Origin Resource Sharing) thông qua các Header (
Access-Control-Allow-Origin, Access-Control-Allow-Headers, Access-Control-Allow-Methods) nhằm kiểm soát và cấp quyền cho Client truy cập API.
- SSL và Chứng chỉ bảo mật: Ứng dụng giao thức Secure Sockets Layer (SSL) với cặp khóa Public Key/Private Key do Certificate Authority (CA) cấp chứng thực để mã hóa đường truyền; hỗ trợ cơ chế Decryption SSL để kiểm soát luồng lưu lượng mã hóa an toàn.
- Tiền xử lý ảnh phía máy chủ:
- Tiếp nhận chuỗi Base64 và chuyển đổi (convert) thành mảng dữ liệu
numpy.array.
- Đọc mảng cấu hình
lst_options để gọi tuần tự các module xử lý ảnh tương ứng trước khi đưa vào pipeline AI.
Nội dung chính theo từng chương
Chương I: Bảng phân công nhiệm vụ
Chương này xác định trách nhiệm của từng cá nhân trong nhóm, bao gồm quản lý kiến trúc, lập trình giao diện Reactjs, xây dựng dịch vụ web Flask API, tích hợp các mô hình học sâu và xây dựng các thuật toán xử lý ảnh số.
Chương II: Giới thiệu về đề tài
Trình bày tổng quan về bài toán OCR, phân tích ưu nhược điểm của các giải pháp mã nguồn mở hiện có trên thế giới đối với tiếng Việt. Nội dung chương chỉ rõ đối tượng nghiên cứu là CMND/CCCD, xác định các thách thức cốt lõi liên quan đến dữ liệu nhạy cảm, hạn chế phần cứng và yêu cầu đường truyền mạng trong mô hình Client - Server; đồng thời phác thảo lộ trình 11 bước triển khai thực nghiệm.
Chương III: Các phương pháp tiền xử lý ảnh, tổng quan mô hình và giải thuật AI
Chương này đi sâu vào cơ sở kỹ thuật của 10 phương pháp xử lý ảnh:
- Gaussian Blur: Khử nhiễu rỗ nhưng làm giảm độ sắc nét của viền cạnh.
- Bilateral Blur: Khử nhiễu có chọn lọc dựa trên mức năng lượng điểm ảnh, bảo toàn biên cạnh.
- Brightness: Tăng/giảm độ sáng bằng việc cộng/trừ hằng số; tối ưu hóa trên kênh V của không gian màu HSV.
- Contrast: Điều chỉnh độ tương phản phối hợp với điều chỉnh độ sáng theo nguyên tắc ngược hướng (khi hệ số contrast > 1 thì hằng số const < 0 và ngược lại).
- Histogram: Khảo sát phân bố cường độ pixel và ứng dụng kỹ thuật cân bằng Histogram nhằm triệt tiêu vết chói đèn flash.
- Corner Detector: Phát hiện 4 góc dựa trên trích xuất contour lớn nhất và biến đổi hình học (nhận định phương pháp còn hạn chế khi góc bị che khuất hoặc nền quá phức tạp).
- Erosion, Dilation, Opening, Closing: Các phép toán hình thái học trên ảnh nhị phân nhằm tinh chỉnh cấu trúc ký tự và loại bỏ điểm ảnh rời rạc.
Đồng thời, chương giới thiệu các công cụ pre-trained: EasyOCR (JaidedAI), VietOCR (kiến trúc Transformer huấn luyện trên 10 triệu ảnh) và Pyvi; kèm theo lý thuyết tính toán Khoảng cách Levenshtein phục vụ so khớp chuỗi.
Chương IV: Xây dựng mô hình và Pipeline OCR
Mô tả chi tiết pipeline OCR gồm các mắt xích logic liên hoàn:
- Box Detection (Phát hiện khối văn bản): Sử dụng EasyOCR. Nhóm nghiên cứu tùy biến phương thức
readtext bằng cách thêm tham số flag để ngắt quá trình nhận dạng mặc định, chỉ lấy danh sách tọa độ hộp biên gồm horizontal_list và free_list.
- Line Detection (Gom dòng văn bản): Gom các bounding box thành từng dòng hoàn chỉnh dựa trên điều kiện khoảng cách theo trục hoành $Ox < 20\text{ px}$. Nếu khoảng cách vượt ngưỡng 20 px, hệ thống tự động tách thành dòng mới.
- Recognize (Nhận dạng ký tự): Cắt từng phân vùng ảnh theo dòng (crop image) và đưa qua mô hình VietOCR để trích xuất văn bản tiếng Việt.
- Normalize Text (Chuẩn hóa văn bản): Chuyển đổi toàn bộ văn bản sang chữ in hoa (Upper case) và sử dụng module
ViUtils của Pyvi để loại bỏ toàn bộ dấu tiếng Việt (ví dụ: chuyển đổi "Họ tên: NGUYỄN THỊ THANH TUYỀN" thành "HO TEN: NGUYEN THI THANH TUYEN").
- Fit Template (Khớp mẫu giấy tờ): Thiết lập cấu hình template trong file
config. Hệ thống xác định vị trí của trường bắt đầu (field_start) và trường kết thúc (field_end), sau đó tính tỷ lệ khớp (matching rate):
$$\text{Matching Rate} = \frac{\text{lst_count}}{\text{default_count}}$$
Trong đó: lst_count là số trường phát hiện được trong khoảng, default_count là số trường mặc định theo mẫu chuẩn. Mẫu có tỷ lệ phần trăm khớp cao nhất sẽ được lựa chọn.
- Xử lý khớp trường dữ liệu (Fit field V1 & V2):
- Fit field V1: Sử dụng hàm tìm kiếm chuỗi cơ bản (
search_custom). Thuật toán thực thi nhanh nhưng dễ phát sinh lỗi khi chuỗi bị nhận dạng sai lệch ký tự hoặc field_start xuất hiện sau field_end.
- Fit field V2: Sử dụng khoảng cách Levenshtein để đối sánh đoạn văn bản có độ dài tương ứng với trường mẫu. Do chuỗi trường mẫu ngắn dễ dẫn đến hiện tượng trùng lặp giá trị khoảng cách, hệ thống kết hợp chuẩn hóa xóa dấu để tăng độ chính xác.
- Cơ chế điều phối Core AI: Mặc định hệ thống ưu tiên thực thi Fit field V1; chỉ khi cờ vị trí (
flag_param) trả về lỗi hoặc không hợp lệ, hệ thống mới tự động kích hoạt Fit field V2 nhằm tối ưu hóa thời gian tính toán.
Chương VIII: Phương hướng phát triển
Định hướng nâng cấp hệ thống bao gồm: tối ưu hóa module tiền xử lý ảnh, hoàn thiện khả năng tự động phát hiện và xoay ảnh (auto detect, auto rotation), tăng cường độ chính xác nhận dạng tiếng Việt, mở rộng nhận dạng cho nhiều loại giấy tờ khác, phát triển nhận dạng chữ viết tay, tích hợp công cụ tìm kiếm trực tiếp và bổ sung tính năng phiên dịch văn bản đa ngôn ngữ sau khi OCR.
Kết quả và đóng góp
1. Kết quả kỹ thuật đạt được
- Xây dựng thành công pipeline tích hợp kết hợp thế mạnh phát hiện vùng văn bản của EasyOCR và khả năng nhận dạng tiếng Việt của VietOCR (Transformer).
- Thiết lập cơ chế xử lý ngoại lệ hoàn chỉnh giúp hệ thống vận hành ổn định:
- Bỏ qua các tệp tải lên không đúng định dạng ảnh.
- Tự động xóa dấu đối với tên tệp chứa ký tự đặc biệt/dấu tiếng Việt bằng Pyvi để tránh lỗi đọc tệp.
- Gán nhãn kết quả văn bản là
"None" khi ảnh không chứa văn bản hoặc khi VietOCR không nhận dạng được khối cắt từ EasyOCR.
- Trả về toàn bộ chuỗi văn bản OCR thô khi người dùng gửi các loại giấy tờ nằm ngoài mẫu định dạng CMND/CCCD mà không làm sập luồng xử lý.
- Cung cấp các chế độ dữ liệu đầu ra linh hoạt theo cấu hình:
- Chế độ Debug: Trả về loại giấy tờ và ảnh cắt chứa vùng thông tin theo mẫu.
- Chế độ Debug = False, Save_img = True: Trả về chuỗi văn bản tương ứng với mẫu.
- Chế độ mặc định: Trả về đồng thời ảnh đã cắt và chuỗi văn bản hoàn chỉnh theo mẫu về cho Client.
2. Đóng góp của đề tài
- Đề xuất giải pháp lai (hybrid pipeline) khắc phục điểm yếu nhận dạng tiếng Việt của các framework OCR quốc tế bằng cách ghép nối EasyOCR (bước Detect) và VietOCR (bước Recognize).
- Xây dựng giải thuật so khớp mẫu kết hợp hai tầng (Fit field V1 bằng tìm kiếm chuỗi và Fit field V2 bằng Levenshtein Distance) giúp cân bằng giữa tốc độ xử lý và độ chính xác của hệ thống trích xuất thông tin.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế
- Module Corner Detector: Khả năng dò tìm góc và nắn chỉnh phối cảnh hoạt động chưa ổn định; thiếu cơ chế nội suy khi một góc của giấy tờ bị che khuất và dễ bị nhiễu khi phông nền (background) phức tạp.
- Hiệu năng thuật toán so khớp: Phương pháp Fit field V2 sử dụng khoảng cách Levenshtein tiêu tốn nhiều thời gian tính toán và phức tạp trong việc tổ chức dữ liệu so với Fit field V1.
- Phạm vi xử lý: Hệ thống mới chỉ tập trung xử lý cho các mẫu CMND/CCCD dạng chữ in, chưa xử lý được chữ viết tay và chưa hỗ trợ các biểu mẫu giấy tờ hành chính khác.
Hướng nghiên cứu tiếp
- Nâng cao hiệu quả của các giải thuật tiền xử lý ảnh, đặc biệt là khả năng tự động nhận diện góc và tự động xoay ảnh về đúng chiều (auto rotation).
- Cải thiện độ chính xác của mô hình OCR đối với các biến thể ký tự tiếng Việt.
- Mở rộng tập dữ liệu và khuôn mẫu để hỗ trợ đa dạng các loại giấy tờ pháp lý khác.
- Nghiên cứu phát triển bộ nhận dạng ký tự quang học dành cho chữ viết tay.
- Tích hợp thêm các công cụ tra cứu thông tin trực tiếp và bộ dịch thuật đa ngôn ngữ dựa trên kết quả văn bản trích xuất được.
Giá trị tham khảo
Tài liệu đồ án mang lại giá trị thực tiễn và học thuật cho các đối tượng sau:
- Sinh viên ngành Khoa học máy tính và Công nghệ thông tin: Cung cấp tài liệu tham khảo chi tiết về quy trình xây dựng ứng dụng Deep Learning hoàn chỉnh từ khâu nghiên cứu mô hình đến khâu đóng gói API và triển khai giao diện web.
- Người nghiên cứu bài toán OCR tiếng Việt: Cung cấp giải pháp thực tế trong việc tùy biến (hooking) thư viện EasyOCR qua cờ tham số để tách riêng bước phát hiện hộp biên (box detection) và kết nối với mô hình ngôn ngữ VietOCR.
- Kỹ sư phát triển phần mềm: Cung cấp quy trình tích hợp các kỹ thuật xử lý ảnh cơ bản trong OpenCV/Python (HSV, Histogram, Morphology) vào hệ thống web tương tác thời gian thực giữa Reactjs và Flask.
Câu hỏi thường gặp
1. Tại sao nhóm nghiên cứu không sử dụng một mô hình duy nhất (EasyOCR hoặc VietOCR) cho toàn bộ quá trình OCR?
EasyOCR hỗ trợ phát hiện hộp biên văn bản tốt nhưng độ chính xác nhận dạng tiếng Việt có dấu không cao. Ngược lại, VietOCR là mô hình Transformer chuyên biệt nhận dạng tiếng Việt rất tốt nhưng cần đầu vào là các khối ảnh đã được cắt đúng dòng. Do đó, việc kết hợp EasyOCR (cho bước Detect) và VietOCR (cho bước Recognize) mang lại hiệu quả nhận dạng tối ưu nhất.
2. Tiêu chí nào được nhóm sử dụng để gom các bounding box thành một dòng văn bản hoàn chỉnh?
Nhóm nghiên cứu thiết lập ngưỡng khoảng cách cố định theo trục hoành ($Ox$). Hai khối văn bản (box) được xem là thuộc cùng một dòng nếu khoảng cách giữa chúng theo trục $Ox$ nhỏ hơn $20\text{ px}$. Nếu khoảng cách vượt quá $20\text{ px}$, hệ thống sẽ tự động phân tách thành một dòng mới.
3. Thuật toán Fit field V2 giải quyết hạn chế gì của Fit field V1?
Fit field V1 sử dụng phương pháp tìm kiếm chuỗi cơ bản (search_custom), dễ bị lỗi khi chuỗi nhận dạng có sai lệch ký tự hoặc khi vị trí trường bắt đầu (field_start) xuất hiện sau trường kết thúc (field_end). Fit field V2 sử dụng Khoảng cách Levenshtein để tính toán mức độ sai khác ký tự, từ đó luôn trả về giá trị so khớp phù hợp ngay cả khi văn bản nhận dạng có lỗi chính tả.
4. Trong giai đoạn tiền xử lý, phương pháp nào được sử dụng để xử lý ảnh CMND/CCCD bị chói sáng do đèn flash?
Nhóm nghiên cứu sử dụng kỹ thuật cân bằng biểu đồ phân bố cường độ điểm ảnh (Histogram Equalization). Kỹ thuật này giúp phân bổ lại mật độ các mức xám từ 0 đến 255 trên toàn bộ bức ảnh, giúp làm hài hòa các vùng ảnh bị phân chia sáng - tối cục bộ do ánh sáng đèn flash.
5. Khi người dùng tải lên một loại giấy tờ không phải CMND/CCCD, hệ thống xử lý như thế nào?
Khi dữ liệu đầu vào nằm ngoài phạm vi cấu hình của các template CMND/CCCD, giai đoạn so khớp trường (Fit field) sẽ phát sinh ngoại lệ. Hệ thống bắt lỗi ngoại lệ này và tự động trả về cho người dùng toàn bộ đoạn văn bản thô mà mô hình OCR nhận dạng được, tránh việc trả về lỗi hệ thống hoặc làm gián đoạn chương trình.
Kết luận
Đồ án "OCR Nhận Dạng Chứng Minh Nhân Dân" đã nghiên cứu và triển khai thành công một hệ thống trích xuất thông tin tự động từ giấy tờ tùy thân theo mô hình Client - Server trên nền tảng Web. Bằng cách kết hợp linh hoạt giữa các kỹ thuật xử lý ảnh số truyền thống, công cụ NLP tiếng Việt (Pyvi, Levenshtein Distance) và hai mô hình học sâu EasyOCR - VietOCR, hệ thống giải quyết hiệu quả bài toán nhận dạng văn bản tiếng Việt có dấu. Đây là tài liệu tham khảo hữu ích cho việc xây dựng các ứng dụng số hóa tài liệu và tích hợp trí tuệ nhân tạo vào các quy trình hành chính thực tế.