Xây dựng dịch vụ trích xuất thông tin từ bảng điểm sinh viên

Một phần của tài liệu 28021_171220200195573LUANVAN (Trang 50)

6. Tổng quan tài liệu nghiên cứu

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 phần, Tên học phần, Số tín chỉ, Nhóm học phần và danh sách sinh viên cùng với điểm số từng bộ phận.

Với cấu trúc bảng điểm hiện nay, việc trích xuất thông tin tự động là rất khó khăn. Vấn đề thứ nhất cần đặt ra đó là nhận dạng điểm số được viết bằng tay, đây cũng là vấn đề chung trong nhận dạng hiện nay. Bên cạnh đó, việc lấy thông tin từng sinh viên trong bảng điểm, tức là nhận dạng được cấu trúc bảng điểm theo hàng và cột sẽ là thách thức lớn trong xử lý của hệ thống nhận dạng.

Để khắc phục được các hạn chế đã nêu ở trên, đề tài đề xuất điều chỉnh cấu trúc bảng điểm bằng cách:

- Sử dụng các hình khối đặc biệt để đánh dấu các vị trí cần nhận dạng. - Tổ chức lại các thông tin trong bảng điểm, bổ sung cột mã sinh viên. Sau khi nghiên cứu và thử nghiệm các giải pháp khác nhau, tác giả đề xuất tạo bảng điểm có cấu trúc tương tự hình 3.3. Trong bảng điểm điểm xuất, đề tài sử dụng 2 khối chữ nhật màu đen, một khối ở góc trên cùng bên trái, một khối ở góc dưới cùng bên phải để cố định vùng nhận dạng. Các khối ở hàng trên cùng dùng để đánh dấu vị trí các vùng: Mã lớp học phần, Số tín chỉ, Nhóm học phần. Các khối ở hàng dưới cùng dùng để đánh dấu vị trí các cột: Mã sinh viên, điểm bộ phận 1, bộ phận 2, giữa kỳ và điểm cuối kỳ. Ngoài ra, các hàng trong bảng điểm cũng được đánh dấu tương tự. Việc phân tích và trích xuất thông tin từ bảng điểm được thuật hiện bởi các thuật toán đã trình bày ở mục 2.3.

3.2.2. Xây dựng dịch vụ truy xuất dữ liệu

Việc trích xuất dữ liệu từ bảng điểm được thực hiện theo các bước: Bước 1: Chuẩn bị thư mục để lưu các ảnh tạm

if (!Directory.Exists(StartupPath + "/tmp")) {

Directory.CreateDirectory(StartupPath + "/tmp"); }

string fullPathImageRevert = StartupPath + "/tmp/" +

Bước 2: Đảo ngược màu ảnh //Đảo ngược màu ảnh

RevertImage(image).Save(fullPathImageRevert);

Ảnh sau khi được đảo ngược sẽ có dạng như hình 2.8.

Bước 3: Nạp ảnh được đảo ngược vào bộ nhớ và chuyển sang dạng bitmap

Bitmap reverBitmap = (Bitmap)Bitmap.FromFile(fullPathImageRevert); Bước 4: Khóa ảnh để đưa vào xử lý

// lock image

BitmapData bitmapData = bitmap.LockBits(

new Rectangle(0, 0, bitmap.Width, bitmap.Height),

ImageLockMode.ReadWrite, bitmap.PixelFormat); Bước 5: Lọc màu, khử nhiễu

ColorFiltering colorFilter = new ColorFiltering(); colorFilter.Red = new IntRange(0, 64);

colorFilter.Green = new IntRange(0, 64); colorFilter.Blue = new IntRange(0, 64); colorFilter.FillOutsideRange = false; colorFilter.ApplyInPlace(bitmapData); Bước 6: Định vị đối tượng

BlobCounter blobCounter = new BlobCounter(); blobCounter.FilterBlobs = true;

blobCounter.MinHeight = 5; blobCounter.MinWidth = 5;

blobCounter.ProcessImage(bitmapData);

Blob[] blobs = blobCounter.GetObjectsInformation(); bitmap.UnlockBits(bitmapData);

Bước 7: Khởi tạo đối tượng kiểm tra hình dạng các đối tượng đã được định vị

SimpleShapeChecker shapeChecker = new SimpleShapeChecker();

Bước 8: Lần lượt duyệt qua các đối tượng được định vị, lấy thông tin các góc và đường biên để kiểm tra

for (int i = 0, n = blobs.Length; i < n; i++) {

List<IntPoint> edgePoints = blobCounter.GetBlobsEdgePoints(blobs[i]); List<IntPoint> corners;

if (shapeChecker.IsQuadrilateral(edgePoints, out corners)) // 4 corners {

// get bounding rectangle of the points list IntPoint minXY, maxXY;

PointsCloud.GetBoundingRectangle(edgePoints, out minXY, out maxXY); //Kiểm tra có phải hình chữ nhật hay không?

if (!TestRectangle(corners, minXY, maxXY)) continue;

sb.AppendLine(string.Format("h: {0}", maxXY.Y - minXY.Y)); gradeImage.AddPoint(minXY, maxXY); }

}

Bước 9: Cắt các vùng ảnh từ ảnh gốc dựa vào các khối được định vị. Bước 10: Lần lượt duyệt qua các ảnh được tạo ra ở bước 9, đưa vào nhận dạng và lưu trữ.

OCRImageEntity entity = new OCRImageEntity(imageList, inputfilename, index, rect, curLangCode); OCR<Image> ocrEngine = new OCRImages();

ocrEngine.PageSegMode = selectedPSM; ocrEngine.Language = entity.Language; IList<Image> images = entity.ClonedImages; StringBuilder sb = new StringBuilder(); for (int i = 0; i < images.Count; i++) {

string result = ocrEngine.RecognizeText(

((List<Image>)images).GetRange(i, 1), entity.Inputfilename,

entity.Rect); sb.AppendLine(result);

}

Dữ liệu sau khi được xử lý sẽ được lưu vào CSDL của hệ thống như đã phân tích và thiết kế trong chương 2. Các tệp tin bảng điểm sẽ được lưu vào các thư mục được phân loại theo khoa quản lý, ngành học, khóa học, năm học và theo học kỳ (hình 3.4).

3.3.XÂY DỰNG WEBSITE TƯƠNG TÁC VỚI NGƯỜI DÙNG CUỐI

3.3.1. Xây dựng hệ thống

a.Sơ đồ usecase tổng quát

Hình 3.5. Biểu đồ usecase tổng quát website tương tác với người dùng cuối

Theo hình 3.5, website tương tác với người dùng cuối phục vụ các đối tượng gồm:

- Giáo vụ các khoa, phòng Khảo thí và kiểm định chất lượng: Thực hiện đăng tải bảng điểm, xem kết quả, thống kê bảng điểm, tìm kiếm bảng điểm, đối sánh với dữ liệu điểm đào tạo.

- Bộ phận đào tạo: Tra cứu bảng điểm gốc, đối sánh dữ liệu toàn trường, thống kê, báo cáo.

- Quản trị viên: Cấu hình hệ thống gồm các mô-đun nhận dạng điểm, mô-đun tương tác với hệ thống đào tạo, quản lý dữ liệu.

b. Đặc tả Usecase

Bảng 3.1 là danh sách các usecase của hệ thống website tương tác với người dùng cuối:

Bảng 3.1.Danh sách Usecase

Mã Tên Usecase UC_001 Đăng nhập

UC_002 Đăng tải bảng điểm UC_003 Tìm kiếm bảng điểm UC_004 Đối sánh dữ liệu UC_005 Thống kê bảng điểm UC_006 Nhận thông báo qua email UC_007 Xem kết quả nhận dạng UC_008 Nhận dạng bảng điểm UC_009 Cấu hình hệ thống

Bảng 3.2. Đặc tả Usecase Đăng nhập

Mã Usecase: UC_001 Tên Usecase: Đăng nhập

Tác nhân:

Giáo vụ khoa, phòng Khảo thí & ĐBCL, quản lý đào tạo, admin

Diễn giải:

Usecase được sử dụng khi tác nhân muốn truy cập sử dụng các chức năng của hệ thống

Điều kiện trước:

Không có điều kiện trước

Thành công:

Tùy vào vai trò của tác nhân, hệ thống sẽ chuyển về các trang tương ứng

Kịch bản:

1. Tác nhận chọn chức năng đăng nhập và nhập thông tin đăng nhập gồm tên đăng nhập, mật khẩu.

2. Hệ thống kiểm tra thông tin tác nhân cung cấp.

3. Nếu đăng nhập thành công, chuyển về trang cá nhân của tác nhân. 4. Nếu đăng nhập thất bại, thông báo đăng nhập lại.

Mở rộng:

Trong trường hợp đăng nhập thất bại quá 3 lần, yêu cầu khóa tài khoản trong 30 phút tiếp theo.

Bảng 3.3. Đặc tả Usecase đăng tải bảng điểm

Mã Usecase: UC_002 Tên Usecase: Đăng tải bảng điểm

Tác nhân:

Giáo vụ khoa, phòng Khảo thí & ĐBCL

Diễn giải:

Usecase được sử dụng khi tác nhân muốn đăng tải bảng điểm lên hệ thống.

Điều kiện trước:

Tác nhân đã đăng nhập thành công với vai trò là Giáo vụ khoa

Thành công:

Hệ thống tiếp nhận và lưu bảng điểm vào máy chủ, đồng thời kích hoạt chức năng nhận dạng bảng điểm

Kịch bản:

1. Tác nhân cung cấp thông tin bảng điểm gồm: Khóa, năm học, học kỳ, loại bảng điểm. 2. Tác nhân chọn tệp tin

3. Hệ thống lưu dữ liệu vào máy chủ

4. Hệ thống kích hoạt chức năng nhân dạng bảng điểm

Mở rộng:

Khi tệp tin không đúng định dạng hoặc quá lớn, thông báo người dùng tải lại tệp tin.

Bảng 3.4. Đặc tả Usecase Tìm kiếm bảng điểm

Mã Usecase: UC_003 Tên Usecase: Tìm kiếm bảng điểm

Tác nhân:

Giáo vụ khoa, phòng Khảo thí & ĐBCL, Quản lý đào tạo

Diễn giải:

Usecase được sử dụng khi tác nhân muốn tìm kiếm dữ liệu bảng điểm trên hệ thống

Điều kiện trước:

Tác nhân đã đăng nhập thành công với vai trò là Giáo vụ khoa, quản lý đào tạo

Thành công:

Hệ thống hiển thị danh sách bảng điểm theo điều kiện tìm kiếm của tác nhân

Kịch bản:

1. Tác nhân cung cấp thông tin tìm kiếm 2. Hệ thống tìm kiếm theo điều kiện

3. Hiện thị danh sách bảng điểm nếu tìm thấy, ngược lại thông báo không tìm thấy

Mở rộng:

Bảng 3.5. Đặc tả Usecase Đối sánh dữ liệu

Mã Usecase: UC_004 Tên Usecase: Đối sánh dữ liệu

Tác nhân:

Giáo vụ khoa, phòng Khảo thí & ĐBCL, Quản lý đào tạo, Hệ thống thông tin đào tạo

Diễn giải:

Usecase được sử dụng khi tác nhân muốn đối chiếu dữ liệu trên bảng điểm và dữ liệu được lưu tại hệ thống đào tạo

Điều kiện trước:

Tác nhân đã đăng nhập thành công với vai trò là Giáo vụ khoa, Quản lý đào tạo

Thành công:

Hệ thống hiện thị kết quả đối chiếu, bảng tổng hợp danh sách các nội dung sai khác giữa hai bên

Kịch bản:

1. Tác nhân chọn chức năng đối sánh dữ liệu

2. Hệ thống tiến hành lấy thông tin điểm được nhận dạng từ bảng điểm 3. Hệ thống kết nối với hệ thống thông tin đào tạo, gửi yêu cầu lấy điểm 4. Hệ thống phân tích kết quả hệ thống thông tin đào tạo trả về

5. Hệ thống tiến hành so sánh điểm 6. Hiển thị kết quả

Mở rộng:

Tác nhân có thể tiến hành nhận dạng lại bảng điểm.

Bảng 3.6. Đặc tả Usecase Thống kê bảng điểm

Mã Usecase: UC_005 Tên Usecase: Thống kê bảng điểm

Tác nhân:

Giáo vụ khoa, phòng Khảo thí & ĐBCL

Diễn giải:

Usecase được sử dụng khi tác nhân thực hiện thống kê bảng điểm theo khóa, theo ngành, theo năm học, hoặc theo từng sinh viên.

Điều kiện trước:

Tác nhân đã đăng nhập thành công với vai trò là Giáo vụ khoa

Thành công:

Hệ thống hiển thị thông tin thống kê bảng điểm theo các tiêu chí được tác nhân lựa chọn

Kịch bản:

1. Tác nhân chọn chức năng thống kê 2. Tác nhân chọn tiêu chí thống kê

3. Hệ thống tiến hành tìm kiếm và thống kê 4. Hệ thống hiển thị kết quả ra màn hình

Mở rộng:

Bảng 3.7. Đặc tả Usecase Nhận thông báo qua email

Mã Usecase: UC_006 Tên Usecase: Nhận thông báo qua email

Tác nhân:

Giáo vụ khoa, phòng Khảo thí & ĐBCL

Diễn giải:

Usecase được sử dụng khi tác nhân muốn nhận kết quả nhận dạng qua email

Một phần của tài liệu 28021_171220200195573LUANVAN (Trang 50)

Tải bản đầy đủ (PDF)

(79 trang)