6. Tổng quan tài liệu nghiên cứu
2.2. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Kiến trúc tổng quan của hệ thống được trình bày trong hình 2.1. Trong sơ đồ này, hệ thống được chia thành các mô-đun:
- Khối xử lý và nhận dạng: Có chức năng tiếp nhận bảng điểm dưới dạng ảnh, xử lý và trích xuất thông tin theo yêu cầu của người dùng.
- Hệ thống các dịch vụ: Là trung tâm điều khiển của hệ thống, xử lý các yêu cầu người dùng như: so sánh đối chiếu phát hiện điều chỉnh trong dữ liệu, tìm kiếm, thống kê – báo cáo.
Computer
Đào tạo
Group
Scanner
internet
Khối xử lý và nhận dạng Quản lý dữ liệu
Data Hệ thống các dịch vụ in te rn et Hình 2.1. Tổng quan các thành phần trong hệ thống 2.2.1. Phân tích hệ thống
a.Sơ đồ hoạt động khối xử lý và nhận dạng ảnh
Hoạt động của khối xử lý và nhận dạng ảnh được mô tả như sau: Đầu tiên, người dùng tải lên các tệp tin ảnh là các bảng điểm gốc. Hệ thống tiếp nhận và thực hiện các bước tiền xử lý, nếu ảnh tải lên đúng định dạng mà hệ thống hệ thống yêu cầu thì sẽ được chuyển sang bước xử lý và nhận dạng. Ngược lại, hệ thống thông báo ảnh tải lên không phù hợp và yêu cầu tải lại. Khi ảnh được chuyển sang bước xử lý và nhận dạng, hệ thống sẽ tiến hành tìm kiếm các “khối chữ nhật” dùng để đánh dấu các vị trí cần nhận dạng. Tiếp theo, từ các khối được tìm thấy, hệ thống tiến hành cắt các vùng theo khối được đánh dấu và đưa vào bộ phận nhận dạng. Kết thúc, hệ thống đưa ra dữ liệu đã nhận dạng và thông báo cho người dùng. Chi tiết các bước được thể hiện ở hình 2.2.
Hình 2.2. Sơ đồ hoạt động xử lý và nhận dạng ảnh
b. Biểu đồ tương tác với hệ thống thông tin đào tạo
Hệ thống thông tin đào tạo cung cấp các cổng dịch vụ để lấy thông tin điểm của sinh viên hoặc của lớp học phần. Để kết nối đến hệ thống thông tin đào tạo, ứng dụng cần cung cấp mật khẩu (gọi là API_KEY). Khi có yêu cầu đối chiếu điểm, ứng dụng sẽ gửi thông tin mã lớp học phần để nhận về bảng điểm tương ứng. Khi có dữ liệu điểm, hệ thống tiến hành duyệt qua từng sinh viên, so sánh điểm các bộ phận. Kết thúc, hệ thống thông báo kết quả đối chiếu, nếu có sai sót sẽ đưa ra thông tin chi tiết. Toàn bộ quá trình kết nối và kiểm tra điểm được thể hiện qua sơ đồ ở hình 2.3.
Hình 2.3. Sơ đồ mô tả tương tác giữa ứng dụng và hệ thống đào tạo
2.2.2. Thiết kế hệ thống
Hệ thống được chia thành 8 gói có mối quan hệ mật thiết với nhau. Chức năng cụ thể của từng gói như sau:
- Thư viện VietOCR.NET: Đây là bộ thư viện mã nguồn mở, hỗ trợ viện nhận dạng ký tự. Hệ thống sử dụng các API của thư viện để nhận dạng tệp tin ảnh đầu vào.
- Khối giao diện người dùng: Điều khiển việc hiển thị giao diện với từng đối tượng người dùng.
- Giao diện tải file: Đây là chức năng thu nhận tệp tin từ người dùng. Thông qua chức năng này, hệ thống tiếp nhận tệp ảnh, kiểm tra các ràng buộc và lưu ảnh vào hệ thống.
- Giao diện thống kê – báo cáo: Khi có bất kỳ thông báo nào từ hệ thống, giao diện này đảm nhận trách nhiệm đưa ra thông tin cho người dùng.
Hình 2.4. Cấu trúc các thành phần của hệ thống
- Khối ghi vết chương trình: Khi nhận dạng tệp tin đầu vào, hệ thống sẽ ghi vết các lỗi phát sinh, các ngoại lệ.
- Quản lý cơ sở dữ liệu: Hệ thống lưu dữ liệu có hai dạng: dạng tệp tin và dạng CSDL quan hệ. Khối này có nhiệm vụ tra cứu, tìm kiếm dữ liệu khi có yêu cầu.
- Quản lý các dịch vụ: Khối này quản lý việc kết nối đến các dịch vụ do hệ thống thông tin đào tạo cung cấp.
- Khối điều khiển nhận dạng: Đây là trái tim của hệ thống, có trách nhiệm xử lý dữ liệu đầu vào và điều khiển các thành phần khác.
2.2.3. Thiết kế cơ sở dữ liệu
Với mỗi bảng điểm sinh viên, hệ thống tiến hành nhận dạng thông tin: - Nhóm học phần, Mã lớp học phần
- Mã sinh viên
- Điểm bộ phận 1,2, giữa kỳ và cuối kỳ
Tất cả dữ liệu này được lưu vào hệ thống sau khi hoàn thành việc nhận dạng. Tệp tin được dùng được lưu vào thư mục trên máy chủ và được tính giá trị MD5 để tránh việc bị thay đổi sau này. Sơ đồ 2.5 thể hiện mối quan hệ giữa các thực thể trong CSDL của hệ thống.
2.3.XÂY DỰNG THUẬT TOÁN NHẬN DẠNG KÝ IN TỰ QUANG HỌC DẠNG SỐ TRONG BÀI TOÁN NHẬN DẠNG BẢNG ĐIỂM HỌC DẠNG SỐ TRONG BÀI TOÁN NHẬN DẠNG BẢNG ĐIỂM
2.3.1. Các yêu cầu của tệp tin ảnh đầu vào
Với thư viện VietOCR.NET, tệp tin ảnh đầu vào phải được quét ở độ phân giải từ 200 dpi đến 400 dpi. Độ phân giải tốt nhất là 300 dpi. Việc quét ở độ phân giải cao hơn cũng không làm cho kết quả nhận dạng tốt hơn. [8]
Ngoài ra, bảng điểm cần được trình bày theo đúng định dạng mà hệ thống đưa ra. Hình 2.6 thể hiện một bảng điểm mẫu. Trong bảng điểm này, các khối chữ nhật màu đen đóng vai trò đánh dấu các vị trí sẽ được tác để nhận dạng sau này.
2.3.2. Chuẩn hóa tệp tin ảnh
Ảnh được đưa vào sẽ được chuyển thành ảnh nhị phân. Hệ thống sau đó sẽ tạo một bản sao ảnh đầu vào có màu được đảo ngược. [6]
Hình 2.8. Bản sao ảnh gốc với dạng màu được đảo ngược
2.3.3. Xây dựng thuật toán
Thuật toán được chia thành hai giai đoạn, giai đoạn một thực hiện đánh dấu các khối chữ nhật. Giai đoạn hai thực hiện nhận dạng các vùng được đánh dấu.
a.Đánh dấu các khối chữ nhật
- Đầu vào: Ảnh nhị phân đã đảo ngược màu
- Đầu ra: mảng hai chiều chứa tọa độ 2 đỉnh nằm trên đường chéo của các khối chữ nhật trong ảnh
Thuật toán:
Bước 0: Khởi gán ảnh đầu vào, tạo mảng hai chiều lưu kết quả result[][];
Bước 1: Định nghĩa chiều cao và chiều rộng tối thiểu của các Blob int minHeight = 5px; int minWidth = 5px;
Bước 2: Sử dụng thư viện xử lý ảnh, định vị các khối Blob trong ảnh Bước 3: Gán i = 0, n = Số lượng khối Blob
Bước 5: Kiểm tra Blob[i] có phải hình chữ nhật hay không? Nếu đúng, qua bước 6. Ngược lại qua bước 8.
Bước 6: Tìm tọa độ 2 đỉnh trên đường chéo minXY (có tọa độ X bé nhất, Y bé nhất) và maxXY (có tọa độ X lớn nhất, Y lớn nhất)
Bước 7: Lưu tọa độ minXY, maxXY vào mảng result Bước 8: Tăng i lên 1 giá trị. i = i + 1; Quay về bước 4. Bước 9: Xuất kết quả mảng result và kết thúc
Hình 2.9. Thuật toán đánh dấu các khối chữ nhật
b. Thuật toán nhận dạng bảng điểm
- Đầu vào: Ảnh gốc đã được chuyển sang dạng nhị phân, mảng hai chiều Blobs chứa tọa độ 2 đỉnh hình nằm trên đường chéo hình chữ nhật
- Đầu ra: Mảng hai chiều chứa các giá trị trong bảng điểm
Bước 0: Khởi gán ảnh đầu vào và mảng Blobs chứa tọa độ 2 đỉnh của hình chữ nhật, tạo mảng result để lưu kết quả.
Bước 1: Phân tích Blobs thành 2 mảng
- Mảng rows: Chứa tọa độ các dòng của bảng - Mảng cols: Chứa tọa độ các cột của bảng Bước 2: Gán i = 0; j = 0;
Hình 2.10. Thuật toán nhận dạng bảng điểm
Bước 3: Kiểm tra i có nhỏ hơn số lượng dòng (rows) hay không? Nếu có qua bước 4. Ngược lại qua bước 9.
Bước 4: Kiểm tra j có nhỏ hơn số lượng cột (cols) hay không? Nếu có qua bước 5. Ngược lại qua bước 8.
Bước 5: Đánh dấu vùng rows[i] và cols[j] và đưa vào nhận dạng vùng này
Bước 6: Lưu kết quả nhận dạng vào mảng result. Bước 7: Gán j = j + 1; Quay về bước 4.
Bước 8: Gán i = i + 1; Quay về bước 3.
Bước 9. Xuất kết quả trong mảng result và kết thúc.
2.3.4. Kiểm thử thuật toán
Kết quả khi chạy thuật toán đánh dấu các khối chữ nhật
Hình 2.11. Kết quả khi chạy thuật toán đánh dấu các khối chữ nhật
Thuật toán thực hiện tìm và đánh dấu các khối chữ nhật bằng các điền viền màu đỏ như hình 2.11.
Kết quả khi chạy thuật toán nhận dạng bảng điểm:
Hình 2.12. Kết quả khi chạy thuật toán nhận dạng bảng điểm
2.3.5. Đánh giá thuật toán
Về ưu điểm: Thuật toán thực hiện nhanh chóng, chính xác nhờ các hàm API đã được tối ưu hóa trong thư viện VietOCR.NET. Việc sử dụng các khối chữ nhật lớn màu đen để đánh dấu dòng và cột giúp giảm thiểu sai sót do các nhiễu gây ra.
Về nhược điểm: Việc cắt ảnh gốc thành các ảnh nhỏ hơn giúp tăng độ chính xác khi nhận dạng, tuy nhiên điều này lại tạo ra một lượng lớn các tệp tin ảnh được lưu trên ổ đĩa. Để khắc phục điều này, trong chương trình cần ghi vết các tệp tin được tạo ra và xóa đi khi kết thúc thuật toán.
2.3.6. Xây dựng dịch vụ trích xuất thông tin từ bảng điểm sinh viên
Nhận dạng bảng điểm là một tác vụ tốn nhiều thời gian, đặc biệt khi hệ thống phục vụ nhiều người dùng cùng một lúc và bảng điểm có nhiều sinh viên. Để tránh việc chờ đợi của người sử dụng, hệ thống sẽ chuyển việc nhận dạng bảng điểm thành một dịch vụ chạy trên máy chủ. Sau khi có kết quả nhận dạng, người sử dụng sẽ nhận được email thông báo kết quả.
Về cơ bản, mô hình hoạt động của dịch vụ nhận dạng bảng điểm như sau:
i) Đầu tiên, hệ thống tiếp nhận yêu cầu từ người dùng, lưu bảng điểm lên máy chủ.
ii) Hệ thống cập nhật thông tin bảng điểm vào CSDL
iii) Dịch vụ truy cập vào CSDL, đọc thông tin bảng điểm và thực hiện xử lý.
iv) Sau khi xử lý xong bảng điểm, dịch vụ đọc lại thông tin từ CSDL. Nếu có bảng điểm mới, dịch vụ tiếp tục xử lý. Ngược lại, dịch vụ sẽ quét CSDL sau mỗi năm giây.
v) Dữ liệu sau khi được dịch vụ xử lý, sẽ được cập nhật vào CSDL của hệ thống và thông báo cho người dùng bằng email để xác nhận thông tin.
2.4.XÂY DỰNG MÔ-ĐUN TƯƠNG TÁC VỚI HỆ THỐNG THÔNG TIN ĐÀO TẠO
2.4.1. Cấu trúc dữ liệu hệ thống thông tin đào tạo
Hình 2.13. Sơ đồ cơ sở dữ liệu hệ thống đào tạo
Qua khảo sát thực tế tại phòng Đào tạo, trường Đại học Sư phạm, đề tại thực hiện phân tích CSDL hệ thống thông tin đào tạo. Hiện nay, hệ thống thông tin đào tạo có nhiều mô-đun, nhiều bộ phận cùng vận hành, tuy nhiên trong phạm vi đề tài, tác giả tập trung nghiên cứu mô-đun quản lý điểm của sinh viên. Sơ đồ CSDL mô-đun quản lý điểm được mô tả bằng sơ đồ hình 2.13.
Theo sơ đồ hình 2.13, mỗi sinh viên khi học một ngành sẽ học các học phần theo quy định trong khung chương trình (bảng “KhungChuongTrinh”). Hằng năm, nhà trường tổ chức các lớp học phần (bằng “LopHocPhan”), sinh
viên khi học các lớp học phần (bảng “DiemSinhVien”) sẽ có các cột điểm: Bộ phận 1, bộ phận 2, bộ phận 3, điểm thi và điểm tổng kết học phần.
2.4.2. Các dịch vụ của hệ thống thông tin đào tạo
Hệ thống thông tin đào tạo cung cấp các dịch vụ dưới dạng Restful API [9]. Tất nhiên, để truy cập được hệ thống dịch vụ này cần phải được sự đồng ý của phòng Đào tạo và một số ràng buộc khác để truy cập.
Bảng mô tả các API của hệ thống thông tin đào tạo:
Bảng 2.1. Danh sách API của hệ thống thông tin đào tạo
TT Tên API Tham số Mô tả
1 GetStudent StudentID Lấy thông tin sinh viên theo mã sinh viên 2 GetMarkOfClass ClassID Lấy dữ liệu điểm của các sinh viên trong
học lớp phần
3 GetListSubjectOfStudent StudentID Lấy danh sách các học phần sinh viên được học (bao gồm học phần tự chọn và bắt buộc)
2.4.3. Xây dựng mô-đun tương tác với hệ thống thông tin đào tạo
Trong phần này, đề tài trình bày chi tiết cách thức kết nối và tương tác với hệ thống thông tin đào tạo bằng API.
Bước 1: Khởi tạo đối tượng kết nối bằng giao thức HTTP, đồng thời chuẩn bị đối tượng để nhận kết quả trả về
//Init HTTP Request
HttpClient client = new HttpClient(); //Init Uri
client.BaseAddress = new Uri(DAO_TAO_URL); //Response Data Type
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json")); //Response Message
HttpResponseMessage response = client.GetAsync(API_GET_STUDENT + "/" + id).Result;
Bước 2: Kiểm tra thuộc tính IsSuccessStatusCode của đối tượng response, nếu là đúng thì gửi yêu cầu thành công, ngược lại sẽ nhận được thông báo lỗi.
//IF Request Success
if (response.IsSuccessStatusCode){}
Bước 3: Nếu kết nối thành công, sử dụng phương thức ReadAsAsync<T>() để nhận giá trị trả về. Trong ví dụ này, hệ thống nhận dữ liệu trả về là lớp SinhVien
var sv = response.Content.ReadAsAsync<SinhVien>().Result;
Bước 4: Phân tích đối tượng “sv” thành đối tượng có thể hiển thị lên màn hình.
//serialize Result
DataTable dtSV = new DataTable(); dtSV.Columns.Add("MaSinhVien"); dtSV.Columns.Add("HoTen"); dtSV.Columns.Add("KhoaHoc"); dtSV.Columns.Add("NganhHoc"); DataRow dr = dtSV.NewRow(); dr["MaSinhVien"] = sv.MaSinhVien; dr["HoTen"] = sv.HoTen; dr["KhoaHoc"] = sv.KhoaHoc; dr["NganhHoc"] = sv.NganhHoc; dtSV.Rows.Add(dr);
Nếu dữ liệu trả về là mảng, chúng ta dùng IEnumerable để lưu kết quả. var dsHocPhan = response.Content.ReadAsAsync<IEnumerable<SinhVienHocPhan>>().Result;
Bước 5. Hiển thị kết quả lên giao diện hoặc sử dụng cho tra cứu, thống kê
Bước 6: Nếu có lỗi, thông báo lên màn hình như sau: MessageBox.Show("Error Code" + response.StatusCode +
" : Message - " + response.ReasonPhrase);
2.5.KẾT LUẬN CHƯƠNG 2
Trong chương 2, đề tài tập trung phân tích cách thức phân tích và nhận dạng bảng điểm dựa trên mẫu bảng điểm trường Đại học Sư phạm. Đề tài đã
đề xuất hai thuật toán xử lý dữ liệu đầu, đó là thuận toán đánh dấu các khối chữ nhật và thuật toán nhận dạng bảng điểm. Bên cạnh đó, đề tài tiến hành phân tích và thiết kế hệ thống, thiết kế CSDL. Ngoài ra, việc kết nối với hệ thống thông tin đào tạo thông qua Web API cũng được đề tài mô tả chi tiết.
CHƯƠNG 3
PHÁT TRIỂN ỨNG DỤNG
3.1.LỰA CHỌN CÔNG CỤ PHÁT TRIỂN
3.1.1. Ngôn ngữ lập trình
Thư viện VietOCR được phát triển để hỗ trợ các ngôn ngữ lập trình bậc cao như C#, Java làm việc với tesseract. Chính vì vậy, tác giả chọn ngôn ngữ C# để xây dựng ứng dụng phần mềm chạy trên nền Windows có hỗ trợ .NET Framework 4.5. Môi trường phát triển cụ thể như sau:
- Hệ điều hành: Windows 10;
- Công cụ phát triển: Visual Studio 2013 - Cơ sở dữ liệu: SQL Server 2005 trở lên; - Thư viện VietOCR 4.x;
- .NET Framework 4.5.
3.1.2. Cơ sở dữ liệu
Đề tài sử dụng hệ quản trị CSDL SQL Server để lưu trữ dữ liệu cho toàn bộ hệ thống. Với SQL Server, hệ thống có thể làm việc với hiệu năng cao, hỗ trợ đầy đủ các thư viện kết nối và thao tác cho ngôn ngữ lập trình C#.
3.2.XÂY DỰNG CƠ SỞ DỮ LIỆU LƯU TRỮ TỆP TIN ẢNH BẢNG
ĐIỂM
3.2.1. Thu thập và xử lý các nguồn dữ liệu
Hiện nay, bảng điểm tại trường Đại học Sư phạm có hai loại: Bảng điểm giữa kỳ: Ghi điểm bộ phận 1, bộ phận 2, điểm giữa kỳ. Bảng điểm này do giáo viên giảng dạy ghi điểm. Hình 3.1 là mẫu bảng điểm giữa kỳ hiện nay. Bảng điểm cuối kỳ: Ghi điểm cuối kỳ. Bảng điểm này do phòng Khảo thí và
kiểm định chất lượng ghi điểm. Hình 3.2 là mẫu bảng ghi điểm cuối kỳ hiện nay.
Hình 3.2. Bảng ghi điểm cuối kỳ
Các bảng điểm đều có các thông tin: Năm học, học kỳ, Mã lớp học