1. Trang chủ
  2. » Công Nghệ Thông Tin

Xây dựng ứng dụng tự động đọc bảng điểm

51 287 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 51
Dung lượng 3,16 MB

Nội dung

Trước mỗi kỳ thi bảng điểm sẽ được in ra, trong bảng điểm bao gồm các thông tin như: mã môn học, tên môn học, mã sinh viên, tên sinh viên, điểm thi … Sinh viên phải ký xác nhận vào danh

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

-*** -

NGUYỄN THỊ HUYỀN

XÂY DỰNG ỨNG DỤNG TỰ ĐỘNG ĐỌC BẢNG ĐIỂM

Chuyên ngành: Công nghệ thông tin

LUẬN VĂN THẠC SĨ KỸ THUẬT

Công nghệ thông tin

NGƯỜI HƯỚNG DẪN KHOA HỌC:

TS Nguyễn Thị Oanh

Trang 2

LỜI CAM ĐOAN

Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi.Các dữ liệu sử dụng trong luận văn có nguồn gốc rõ ràng, kết quả nêu trong luận văn là do tôi tự tìm hiểu, phân tíchmột cách trung thực, khách quan và các kết quả này chưa từng được công bố trong bất kỳ nghiên cứu nào khác

Hà Nội, ngày 22 tháng 9 năm 2015

Tác giả

Nguyễn Thị Huyền

Trang 3

MỤC LỤC

BẢNG CÁC TỪ VIẾT TẮT 4

DANH MỤC CÁC HÌNH 5

DANH MỤC CÁC BẢNG 6

MỞ ĐẦU 7

CHƯƠNG 1: TỔNG QUAN 9

1.1 Giới thiệu bài toán 9

1.2 Phương pháp nghiên cứu 9

1.3 Cấu trúc luận văn 10

CHƯƠNG 2: KIẾN THỨC CƠ BẢN 11

2.1 Một số kỹ thuật xử lý ảnh số 11

2.1.1 Khử nhiễu 11

2.1.2 Chuyển đổi ảnh màu sang ảnh xám 12

2.1.3 Phân ngưỡng 13

2.1.4 Phép toán hình thái 13

2.1.5 Phép biến đổi affine 15

2.2 Một số phương pháp đã được thực hiện với bài toán nhận dạng bảng điểm và nhận dạng ký tự 16

2.2.1 Phương pháp đã được áp dụng cho bài toán nhận dạng bảng điểm 16

2.2.2 Một số phương pháp nhận dạng ký tự 17

2.3 Giới thiệu về phần mềm nguồn mở Tesseract OCR 18

Trang 4

2.3.2 Phần mềm nguồn mở Tesseract OCR 20

CHƯƠNG 3: HỆ THỐNG CÀI ĐẶT THỬ NGHIỆM 23

3.1 Giải pháp cho hệ thống 23

3.1.1 Phân tích hệ thống 23

3.1.2 Cấu trúc hệ thống 25

3.1.3 Tiền xử lý ảnh 25

3.1.4 Xác định các khu vực quan tâm 26

3.1.4.1 Xác định phần bảng điểm và hiệu chỉnh góc nghiêng 26

3.1.4.2 Xác định vùng mã sinh viên và vùng điểm 29

3.1.4.3 Xác định khu vực chứa mã môn học 33

3.1.5 Nhận dạng 34

3.1.5.1 Huấn luyện dữ liệu với Tesseract OCR cho chữ số viết tay 34

3.1.5.2 Nhận dạng ký tự với Tesseract OCR 38

3.2 Cài đặt 39

CHƯƠNG 4: KẾT QUẢ THỰC NGHIỆM 41

4.1 Kết quả nhận diện chữ số viết tay 41

4.2 Kết quả thử nghiệm trên dữ liệu bảng điểm thực 41

CHƯƠNG 5: KẾT LUẬN 48

5.1 Các kết quả đã đạt được 48

5.2 Các mặt còn hạn chế 48

5.3 Định hướng phát triển 49

TÀI LIỆU THAM KHẢO 50

Trang 5

BẢNG CÁC TỪ VIẾT TẮT

Từ viết tắt Viết đầy đủ

OCR Optical Character Recognition

UNLV University of Nevada-Las Vegas

ISO International Organization for Standardization SVM Support Vector Machine

OpenCV Open Computer Vision

MFC Microsoft Foundation Class

Trang 6

DANH MỤC CÁC HÌNH

Hình 1: Quá trình lọc trung vị [3] 12

Hình 2: Phép giãn nở trên ảnh nhị phân 14

Hình 3: Phép co ảnh 15

Hình 4: Phép biến đổi affine trên ảnh 16

Hình 5: Kiến trúc tổng thể của Tesseract OCR 21

Hình 6: Vị trí của mã môn học trong bảng điểm 24

Hình 7: Cấu trúc hệ thống 25

Hình 8: Các bước tiền xử lý ảnh bảng điểm 25

Hình 9: Các trục không gian của một ảnh [3] 26

Hình 10: Hình ảnh bảng điểm với phần bảng được đánh dấu 27

Hình 11: Quá trình hiệu chỉnh góc nghiêng ảnh bảng điểm 29

Hình 12: Khu vực chứa cột mã sinh viên và cột điểm trong bảng điểm 30

Hình 13: Các đường ngang được phát hiện cho vùng mã sinh viên của một bảng điểm 31

Hình 14: Mã sinh viên và điểm tương ứng cho một sinh viên 31

Hình 15: Hình chữ nhật tối thiếu chứa mã sinh viên 32

Hình 16: Các chữ số trong vùng điểm được tách riêng 33

Hình 17: Khu vực chứa mã môn học 34

Hình 18: Quá trình huấn luyện chữ số viết tay với Tesseract 35

Hình 19: Bảng lấy mẫu số viết tay 36

Hình 20: Sửa tập tin box với công cụ bbTesseract 37

Hình 21: Giao diện chính của chương trình 40

Hình 22: Form thay đổi số thứ tự của các cột mã sinh viên và điểm 40

Hình 23: Hình ảnh một số bảng điểm 41

Hình 24: Phát hiện khu vực bảng và xoay ảnh 42

Hình 25: Trường hợp không phát hiện được khu vực bảng 43

Hình 26: Trường hợp chỉ xác định được bằng phương pháp 2 43

Trang 7

DANH MỤC CÁC BẢNG

Bảng 1: Độ chính xác của Tesseract trên một số ngôn ngữ 19

Bảng 2: So sánh giữa một phần mềm OCR thương mại và Tesseract 21

Bảng 3: Một số trường hợp nhận dạng số viết tay bị sai 41

Bảng 4: Kết quả nhận dạng mã môn học 44

Bảng 5: Ví dụ nhận dạng sai mã môn học 44

Bảng 6: Kết quả nhận dạng mã sinh viên 45

Bảng 7: Ví dụ nhận dạng sai mã sinh viên 45

Bảng 8: Kết quả nhận dạng điểm 46

Bảng 9: Điểm bị sai do nhận dạng số viết tay sai 46

Bảng 10: Điểm bị sai do loại mất số trong điểm 47

Bảng 11: Điểm bị sai do số chữ số nhận dạng được lớn hơn thực tế 47

Trang 8

MỞ ĐẦU

Ở trường Đại học Nông nghiệp Hà Nội nay là Học viện Nông nghiệp Việt Nam hiện nay, mỗi sinh viên một học kỳ trung bình học 7 môn Kết quả của mỗi môn học được dựa trên đánh giá của giáo viên, mỗi môn học sẽ có hai lần đánh giá: đánh giá bằng điểm giữa kỳ và đánh giá bằng điểm cuối kỳ Trước mỗi kỳ thi bảng điểm sẽ được in ra, trong bảng điểm bao gồm các thông tin như: mã môn học, tên môn học, mã sinh viên, tên sinh viên, điểm thi … Sinh viên phải ký xác nhận vào danh sách và điểm của sinh viên sẽ được giáo viên nhập vào danh sách này với điểm dao động từ 0 đến 10 Sau đó điểm của sinh viên sẽ được nhập vào cơ sở dữ liệu Như vậy, với khoảng hơn 5000 sinh viên mới nhập học hằng năm thì việc nhập điểm cho sinh viên từ bảng điểm vào cơ sở dữ liệu là một khâu tốn nhiều công sức, nhàm chán và dễ gây nhầm lẫn.Vì vậy, Học viện rất chú trọng đến khâu này và đã thực hiện qua một số phương pháp như:

Nhập thủ công trực tiếp: Với việc nhập điểm thủ công trực tiếp, giáo viên được phát các bảng điểm để điền điểm, sau đó ký xác nhận và gửi lên ban Đào tạo Ban Đào tạo mở form nhập liệu dưới dạng bảng để gõ điểm trực tiếp Sau khi nhập điểm phải có một người soát lại để đảm bảo không nhầm Đôi khi phải áp dụng cách cho hai người nhập hai lần để so sánh Việc này rất mất công, nhàm chán và hiệu quả không cao

Nhập điểm từ file: Với phương pháp này các giáo viên được yêu cầu nhập điểm vào bảng tính Excel sau đó gửi bảng điểm này (file Excel) cho ban Đào tạo Cán cán bộ ban Đào tạo sử dụng một công cụ để nhập (import) dữ liệu vào cơ sở dữ liệu Cách này khá nhanh, tiện lợi tuy nhiên có một hiểm hoạ là nếu do nhầm lẫn hoặc vô tình làm thay đổi trên định dạng trên bảng tính excel thì hệ thống không nhập được và khi đó rất khó phát hiện

Nhập trực tuyến (nhập điểm online): Giáo viên đăng nhập vào hệ thống để hiển thị form bảng điểm, sau đó nhập điểm qua mạng Phương pháp này giảm tải cho ban Đào tạo, đồng thời số liệu chắc chắn chính xác hơn do chính giáo viên tự nhập mà không qua một khâu trung gian nào Tuy nhiên với cách này sau khi điểm

Trang 9

được nhập đủ, ban Đào tạo phải đối chiếu lại điểm của sinh viên trong bảng điểm và điểm mà giáo viên đã nhập Ngoài ra nhập điểm online đòi hỏi phải kết nối vào mạng của Học viện trong thời gian nhập điểm

Xuất phát từ những vấn đề trên cho thấy sự cần thiết của một hệ thống có thể đọc điểm bằng cách nhận dạng ảnh bảng điểm, hệ thống này có thể hỗ trợ giáo viên trong việc nhập điểm và hỗ trợ cán bộ ban Đào tạo trong việc đối chiếu, kiểm tra điểm của sinh viên giữa bảng điểm và điểm do giáo viên nhập trong cơ sở dữ liệu Đây chính là lý do tôi chọn đề tài này để thực hiện trong luận văn

Trang 10

CHƯƠNG 1: TỔNG QUAN 1.1 Giới thiệu bài toán

Trong thời gian thực hiện luận văn, tôi cố gắng tìm hiểu các kỹ thuật để có thể xây dựng được một hệ thống có thể đáp ứng được mục tiêu đề ra là: có thể đọc được điểm của sinh viên từ ảnh bảng điểm Đầu vào của hệ thống là ảnh scan của bảng điểm và đầu ra của hệ thống là mã môn học, mã sinh viên và điểm số tương ứng của sinh viên được ghi trên bảng điểm

Để thực hiện được như vậy, tôi cần giải quyết các vấn đề sau:

- Phát hiện các khu vực cần quan tâm trong ảnh: trong một ảnh bảng điểm có các khu vực cần quan tâm đó là khu vực chứa mã môn học, khu vực chứa mã sinh viên và khu vực chứa điểm của sinh viên

- Nhận diện ký tự in: mã môn học bao gồm cả mã nhóm và mã tổ từ giờ gọi chung là mã môn học được biểu diễn bằng một chuỗi gồm các chữ cái in hoa, các số

và dấu gạch chéo (/), mã sinh viên được biểu diễn bằng các chữ số, do đó cần nhận diện được các ký tự in để cho ra mã môn học và mã sinh viên

- Nhận diện chữ số viết tay: điểm của sinh viên được giáo viên ghi bằng tay,

do đó cần nhận dạng được các các chữ số viết tay để cho ra điểm của sinh viên Tuy nhiên do mỗi người có một cách viết khác nhau và vị trí viết điểm trong ô điểm của bảng điểm cũng khác nhau nên việc nhận diện chính xác chữ số viết tay là rất khó khăn

Đối tượng và phạm vi nghiên cứu: Trong luận văn này tôi thực hiện với mẫu bảng điểm được sử dụng thực tế tại Học viện Nông nghiệp Việt Nam trong đó phần điểm số được giáo viên ghi bằng tay

1.2 Phương pháp nghiên cứu

Với bài toán được đặt ra như trên tôi đã thực hiện theo phương pháp như sau:

- Tìm hiểu một số kỹ thuật xử lý ảnh số để xử lý ảnh bảng điểm

- Tìm hiểu một số phương pháp đã được thực hiện với bài toán nhận dạng bảng điểm và nhận dạng ký tự để đưa ra hướng giải quyết cụ thể cho bài toán này

Trang 11

- Tìm hiểu phần mềm nguồn mở Tesseract OCR, ứng dụng phần mềm nguồn

mở này cho việc nhận dạng ký tự in và chữ số viết tay

- Tìm hiểu công cụ lập trình

- Cài đặt một ứng dụng minh họa cho giải pháp đưa ra

- Đánh giá kết quả của hệ thống

1.3 Cấu trúc luận văn

Luận văn được chia thành 5 chương:

Chương 1: Tổng quan

Giới thiệu bài toán và phương pháp thực hiện trong luận văn

Chương 2: Cơ sở lý thuyết

Giới thiệu các kỹ thuật sử dụng để xử lý ảnh bảng điểm, tìm hiểu phương pháp

đã được thực hiện trước đó với bài toán nhận dạng bảng điểm, nhận dạng ký tự và giới thiệu phần mềm nguồn mở Tesseract OCR

Chương 3: Hệ thống cài đặt thử nghiệm

Đưa ra giải pháp thực hiện và cài đặt hệ thốngthử nghiệm

Chương 4: Kết quả thực nghiệm

Thử nghiệm hệ thống xây dựng được và đánh giá kết quả

Chương 5: Kết luận

Trình bày các kết quả đã đạt được, các mặt còn hạn chế và đưa ra định hướng phát triển trong tương lai

Trang 12

CHƯƠNG 2: KIẾN THỨC CƠ BẢN 2.1 Một số kỹ thuật xử lý ảnh số

Ảnh thu được có thể bị biến dạng do nhiều yếu tố như ảnh hưởng của môi trường bên ngoài, hay các hệ thống thu nhận, phát hiện và lưu trữ ảnh Do vậy xử lý nâng cao chất lượng ảnh là một bước quan trọng, tạo tiền đề cho xử lý ảnh Mục đích chính của việc xử lý là làm nổi bật một số đặc tính của ảnh, làm giảm các biến dạng để có thể khôi phục lại ảnh gần giống ảnh gốc nhất Để thực hiện điều đó một

số kỹ thuật sau đây có thể được sử dụng:

2.1.1 Khử nhiễu

Nhiễu trong ảnh được định nghĩa là những thông tin không có trong ảnh gốc, nhưng trong quá trình sử dụng các thiết bị để đọc ảnh vào trong máy tính (ví dụ scan ảnh) xuất hiện thêm những thông tin không mong muốn Nhiễu có thể làm ảnh

bị mờ đi, không sắc nét, làm giảm hoặc nhiều khi làm mất khả năng biểu lộ thông tin của đối tượng chính trong ảnh Do đó trước khi tiến hành phân tích và xử lý ảnh cần tiến hành công việc khử nhiễu, đây là bước hết sức quan trọng

Việc khử nhiễu được tiến hành bằng cách sử dụng các bộ lọc Cơ sở lý thuyết của kỹ thuật lọc là dựa trên tính dư thừa thông tin không gian: các điểm ảnh lân cận

có thể có cùng hoặc gần cùng một số đặc tính Hơn nữa, nhiễu có thể coi như sự đột biến của một điểm ảnh so với các điểm lân cận Trong kỹ thuật lọc, người ta sử dụng một mặt nạ và di chuyển khắp ảnh gốc Tuỳ theo cách tổ hợp điểm đang xét với các điểm lân cận mà ta có kỹ thuật lọc tuyến tính hay phi tuyến Điểm ảnh chịu tác động của biến đổi là điểm ở tâm mặt nạ

Lọc tuyến tính: mỗi điểm ảnh thu được sẽ là tổng trọng số hay là trung bình trọng số của các điểm lân cận với nhân cuộn hay mặt nạ Một số mặt nạ thường được dùng với lọc tuyến tính là:

[

]

[

]

Lọc phi tuyến: coi một điểm ảnh kết quả không phải là tổ hợp tuyến tính của các điểm lân cận Bộ lọc phi tuyến thường dùng là lọc trung vị

Trang 13

Hình 1: Quá trình lọc trung vị[3]

2.1.2 Chuyển đổi ảnh màu sang ảnh xám

Trong thực tế, ảnh mà chúng ta thu nhận được ban đầu để xử lý là ảnh màu Tuy nhiên không phải với ứng dụng nào việc sử dụng ảnh màu cũng là tối ưu do việc lưu trữ ảnh màu tốn không gian bộ nhớ hơn và việc xử lý cũng chậm hơn Vì vậy để có thể thực hiện được quá trình phân tích và nhận dạng, chúng ta cần phải chuyển chúng thành ảnh nhị phân Đầu tiên, ảnh màu ban đầu sẽ được chuyển thành ảnh xám với các mức xám có giá trị từ 0 đến 255 dựa trên ba giá trị RED, GREEN, BLUE của ảnh đầu vào Từ ảnh xám này, chúng ta sẽ so sánh mức xám của từng điểm với một ngưỡng cho trước để quyết định điểm đó sẽ là 0 hoặc 1, giá trị 0 biểu diễn cho màu đen và 1 biểu diễn cho màu trắng

Để thực hiện chuyển đổi từ ảnh màu 24 bits RGB sang ảnh xám 8 bits, ta có thể sử dụng công thức sau đây áp dụng cho từng điểm ảnh tại vị trí (x,y) trên ảnh

đầu vào :

f(x, y) = 0.299 * Red (x, y) + 0.587 * Green (x, y) + 0.114 * Blue (x, y) (2.1)

Giá trị mức xám tại mỗi điểm ảnh f(x,y) trong ảnh xám tính được là tổng trọng

số khác nhau của mỗi thành phần màu trong hệ màu RGB Một trong những lý do của việc này là nếu chúng ta sử dụng cùng trọng số, ví dụ (R + G + B) 3 thì màu đỏ (Red), màu lục (Green) hay màu lam (Blue) sẽ có cùng mức xám sau khi chuyển đổi Mặt khác theo khoa học đã chứng minh thì mắt người nhạy cảm với thành phần màu lục và màu đỏ hơn so với màu lam [18]

Trang 14

2.1.3 Phân ngƣỡng

Giả sử ảnh I có kích thước m×n, hai số Min, Max và ngưỡng θ Khi đó kỹ thuật phân ngưỡng được thực hiện bằng việc định nghĩa lại giá trị cho mỗi điểm ảnh f(x,y) của ảnh I như sau:

Nếu Max = 1 và Min = 0 khi đó kết quả tách ngưỡng sẽ cho ta ảnh nhị phân

Để thực hiện nhị phân hóa một ảnh cần chọn ra một ngưỡng thích hợp để phân tách ảnh ra làm 2 phần: thông tin ảnh và thông tin nền Tuỳ thuộc vào từng ứng dụng cụ thể mà việc sử dụng ngưỡng toàn cục (một ngưỡng được sử dụng cho toàn

bộ ảnh)hay ngưỡng cục bộ (các vùng ảnh khác nhau có thể có ngưỡng khác nhau) sẽ cho kết quả tốt hơn

2.1.4 Phép toán hình thái

Phép toán hình thái là một tập các phép xử lý ảnh dựa trên một phần tử cấu trúc (hạt nhân) được định nghĩa trước.Theo đó, giá trị của mỗi điểm ảnh trên ảnh đầu ra được xác định dựa trên sự so sánh của điểm ảnh tương ứng trên ảnh đầu vào

và các láng giềng của nó

Phần tử cấu trúc (structural element) là một ma trận chỉ bao gồm các giá trị 0

và 1 với hình dạng và cấu trúc bất kỳ được dùng làm cửa sổ dịch chuyển Thông thường, phần tử cấu trúc có kích thước nhỏ hơn nhiều so với ảnh cần xử lý, điểm ảnh tại tâm của phần tử cấu trúc gọi là gốc sẽ xác định điểm ảnh đang được xử lý, các điểm ảnh với giá trị bằng 1 biểu diễn những điểm láng giềng

Hai phép toán hình thái cơ bản là phép giãn nở (dilation) và phép xói mòn (erosion):

Phép giãn nở

Giãn ảnh nhằm loại bỏ điểm đen bị vây bởi các điểm trắng Trong kỹ thuật này, giá trị của điểm ảnh đầu ra là giá trị lớn nhất của các điểm ảnh nằm trong hình dạng và kích thước của phần tử cấu trúc[1],[13]

Trang 15

( )

( ) ( ) ( ) Trong đó:

dst: ảnh đầu ra

src: ảnh đầu vào

(x’,y’): là điểm ảnh của phần tử cấu trúc với giá trị bằng 1, chính là

các điểm láng giềng của (x,y)

Hình 2 dưới đây là một ví dụ về phép giãn nỡ trên ảnh nhị phân [13]

Hình 2: Phép giãn nở trên ảnh nhị phân

dst: ảnh đầu ra

src: ảnh đầu vào

(x’,y’): là điểm ảnh của phần tử cấu trúc với giá trị bằng 1, chính là

các điểm láng giềng của (x,y)

Hình 3 dưới đây là một ví dụ về phép co trên ảnh nhị phân [13]

Trang 16

Hình 3: Phép co ảnh

2.1.5 Phép biến đổi affine

Bao gồm các phép biến đổi biểu diễn quan hệ giữa hai hình ảnh:

Trang 17

Khi đó X sẽ được biểu diễn dưới đạng [ ] và các phép biến đổi trên sẽ được biểu diễn bằng một phép nhân ma trận duy nhất:

T

=M.X

ha

y Biến đổi affine biểu diễn quan hệ giữa hai ảnh, mối quan hệ này có thể được xem xét trong hai trường hợp [13]:

- Chúng ta biết cả X (ảnh ban đầu) và T (ảnh sau khi áp dụng các phép biến đổi), nhiệm vụ đặt ra là tìm ma trận biến đổi M

Hình 4: Phép biến đổi affine trên ảnh

2.2 Một số phương pháp đã được thực hiện với bài toán nhận dạng bảng điểm

và nhận dạng ký tự

2.2.1 Phương pháp đã được áp dụng cho bài toán nhận dạng bảng điểm

Cho bài toán nhận dạng bảng điểm, trước đó đã có một số phương pháp được thực hiện, điểm hình là tác giả trong [3] đã đưa ra hướng giải quyết cho bài toán này

là phát hiện các vùng quan tâm sau tiến hành phân đoạn, trích chọn đặc trưng và

Trang 18

nhận dạng nhờ kỹ thuật SVM Kết quả nhận dạng bảng điểm với độ chính xác khá cao, tuy nhiên hệ thống còn nhiều hạn chế:

- Các khu vực quan tâm được xác định cố định, ví dụ mã sinh viên ở cột thứ 2, điểm ở cột thứ 6 Như vậy, nếu cấu trúc của bảng điểm bị thay đổi, vị trí của các khu vực quan tâm sẽ không còn chính xác và hệ thống không thực hiện được

- Việc không phân đoạn các chữ số trong khu vực điểm có ưu điểm là kết quả sẽ chính xác hơn cho những trường hợp các chữ số bị viết dính vào nhau tuy nhiên như vậy sẽ làm cho số lượng lớp cần nhận dạng lớn Với hệ thống tác giả đã xây dựng, điểm chỉ được ghi với phần lẻ là 0.5 (lẻ nửa điểm) thì số lượng lớp còn tương đối ít, nhưng với cách cho điểm của nhiều trường hiện nay thì điểm được cho lẻ đến 0.1 điểm, như vậy số lượng lớp cần phân lớp là rất lớn (khoảng 110 lớp) dẫn đến việc lấy mẫu sẽ rất khó khăn và sai số trong quá trình nhận dạng lớn

2.2.2 Một số phương pháp nhận dạng ký tự

Để thực hiện việc nhận dạng ký tự đã có một số phương pháp được sử dụng như:

Nghiên cứu và tự xây dựng một ộ nhận dạng ký tự: với phương pháp

này ta cần nghiên cứu các kỹ thuật và sau đó xây dựng một bộ nhận dạng

ký tự Phương pháp này có ưu điểm là ta hoàn toàn làm chủ được hệ thống, tuy nhiên để thực hiện phương pháp này sẽ mất rất nhiều thời gian

và công sức, bên cạnh đó hiện nay trên thế giới đã có nhiều hướng nghiên cứu về lĩnh vực này và cho ra đời nhiều phương pháp nhận dạng ký tự với

độ chính xác cao Hơn nữa bản thân việc nghiên cứu các kỹ thuật nhận dạng ký tự đã là một đề tài lớn nên trong phạm vi luận văn nay tôi không lựa chọn phương pháp này để thực hiện việc nhận dạng ký tự

Sử dụng các bộ nhận dạng ký tự trực tiếp trên web thông qua môi trường mạng: với phương pháp này hình ảnh chứa ký tự cần nhận dạng

sẽ được gửi lên máy chủ web để máy chủ trực tiếp xử lý áp dụng các thuật

Trang 19

toán nhận dạng ký tự được cài đặt sẵn, sau đó kết quả nhận dạng sẽ được gửi trả cho máy khách Cách này có ưu điểm là dễ thực hiện và độ chính xác có thể cao tuy nhiên khi sử dụng chương trình đòi hỏi máy tính phải được kết nối mạng internet để có thể truyền và nhận dữ liệu từ máy chủ trên web Chưa kể đến việc xử lý và chờ kết quả từ máy chủ trên mạng sẽ khá lâu gây bất tiện cho người sử dụng chương trình Do đó phương pháp này cũng không được lựa chọn trong luận văn

Sử dụng các bộ thƣ viện/phần mềm nguồn mở về nhận dạng ký: So

với 2 cách được nêu ra ở trên thì cách này có ưu điểm là thực hiện không quá khó khăn, chỉ cần cài đặt và biên dịch để chạy chương trình trên máy tính Ngoài ra với phương pháp này có thể khắc phục được nhược điểm là ứng dụng không phụ thuộc vào môi trường mạng, có thể chạy độc lập, tiết kiệm nhiều thời gian vì việc xử lý trên khối nhận dạng được thực hiện hoàn toàn trực tiếp trên máy tính cá nhân

2.3 Giới thiệu về phần mềm nguồn mở Tesseract OCR

2.3.1 Một số thƣ viện/phần mềm nguồn mở về nhận dạng ký tự

Hiện nay trên thế giới đã có khá nhiều bộ thư viện và phần mềm nguồn mở về nhận dạng ký tự với độ chính xác khá cao Sử dụng một trong các thư viện/phần mềm nguồn mở đó sẽ giúp chúng ta tiết kiệm khá nhiều công sức Sau đây là một số

bộ thư viện và phần mềm nhận dạng ký tự quang học miễn phí được sử dụng rộng rãi hiện nay [2]:

Tesseract OCR[11]: là bộ nhận dạng ký tự quang học thương mại ban đầu được phát triển tại công ty HP (Hewlett-Packard) trong khoảng 1985 – 1994 và được giải thưởng top 3 phần mềm nhận dạng ký tự quang học chính xác nhất trong hội nghị thường niên của UNLV Sau đó bộ nhận dạng này được chuyển thành mã nguồn mở trên Google và tiếp tục được phát triển cho đến ngày nay với sự đóng góp của nhiều lập trình viên chuyên nghiệp Trưởng bộ phận của dự án hiện nay là Ray Smith

Trang 20

GOCR[12]: Là một chương trình nhận dạng ký tự được phát triển dưới dạng giấy phép công cộng GNU (GNU Public License) và được bắt đầu bởi Joerg Schulenberg vào năm 2000

FreeOCR[17]: Được xem là một trong các phần mềm nhận dạng ký tự quang học chính xác nhất vì sử dụng bộ engine Tesseract của HP Ngoài ra, FreeOCR còn cung cấp dịch vụ nhận dạng ký tự quang học trực tuyến trên web

JavaOCR[14]: Là phần mềm nhận dạng ký tự được viết hoàn toàn toàn bằng thư viện Java cho việc xử lý ảnh và nhận dạng ký tự Ưu điểm của chương trình này

là chiếm ít tài nguyên bộ nhớ, dễ thực hiện trên các môi trường di động hạn chế về

bộ nhớ và chỉ sử dụng được ngôn ngữ Java

Trong số các thư viện/phần mềm nhận dạng ký tự nêu trên thì Tesseract OCR nổi trội hơn với các ưu điểm sau:

- Tesseract OCR có thể làm việc trên Linux, Windows (với VC++ Express hoặc CygWin) và Mac OSX

- Có lịch sử phát triển lâu dài và có độ chính xác cao ngay từ khi mới ra đời Bảng sau cho ta thấy độ chính xác của Tesseract trên một số ngôn ngữ[9]:

Ngôn ngữ Tổng số ký tự

(triệu)

Tổng số từ (triệu)

Lỗi ký tự (%)

Lỗi từ (%)

Bảng 1: Độ chính xác của Tesseract trên một số ngôn ngữ

- Khả năng mở rộng và tùy biến cao đồng thời được Google tài trợ và đông đảo các nhà phát triển tham gia đóng góp cho Tesseract

- Phiên bản được cập nhật thường xuyên, hỗ trợ ngày càng nhiều ngôn ngữ,

có khả năng huấn luyện trên các ngôn ngữ mới và nhiều loại font chữ khác nhau

- Đã có nhiều nghiên cứu và bài báo được công bố về việc ứng dụng của Tesseract OCR trong việc nhận dạng ký tự [5],[6],[9]

Trang 21

- Một số phần mềm OCR hiện nay đều sử dụng bộ nhận dạng này cho việc nhận dạng ký tự nên Tesseract đã trở nên khá phổ biến

Chính vì các ưu điểm nêu trên tôi đã lựa chọn sử dụng Tesseract để thực hiện quá trình nhận dạng ký tự bao gồm cả ký tự in và chữ số viết tay trong hệ thống

2.3.2 Phần mềm nguồn mở Tesseract OCR

a Lịch sử của Tesseract OCR

Tesseract là một phần mềm mã nguồn mở, ban đầu nó được nghiên cứu và phát triển tại HP trong khoảng từ năm 1985 đến 1994 Vào năm 1995, Tesseract nằm trong top 3 bộ nhận dạng OCR về độ chính xác khi tham gia trong hội nghị thường niên của UNLV Lúc mới khởi động thì Tesseract là một dự án nghiên cứu tiến sĩ tại phòng thí nghiệm của HP ở Bristol và đã được tích hợp vào trong các dòng máy quét dặng phẳng của hãng dưới dạng các add-on phần cứng hoặc phần mềm Nhưng thực tế dự án này đã thất bại vì nó chỉ làm việc hiệu quả trên các tài liệu in có chất lượng tốt[8]

Sau đó, dự án này cùng với sự cộng tác của bộ phận máy quét HP ở bang Colorado đã đạt được một bước tiến quan trọng về độ chuẩn xác không thể trở thành sản phẩm hoàn chỉnh vì độ cồng kềnh Sau đó, dự án được đưa về phòng thí nghiệm của HP để nghiên cứu về cách thức nén và tối ưu mã nguồn Dự án tập trung cải thiện hiệu năng làm việc của Tesseract dựa trên độ chính xác đã có và được hoàn tất vào cuối năm 1994 và sau đó vào năm 1995 bộ Tesseract được gửi đi tham dự hội nghị UNLV thường niên vì độ chính xác của OCR vượt trội hơn hẳn so với các phần mềm OCR lúc bấy giờ Tuy nhiên, Tessract đã không thể trở thành 1 sản phẩm thương mại hoàn chỉnh được và vào năm 2005, HP đã chuyển Tesseract sang mã nguồn mở và được Google tài trợ [6],[ 11] Tesseract cho đến nay vẫn được nhiều nhà phát triển cộng tác và tiếp tục hoàn thiện Phiên bản mới nhất của

bộ nhận dạng Tesseract là phiên bản 3.02

Bảng sau đây đưa ra sự so sánh giữa một phần mềm OCR thương mại và Tesseract[15]:

Trang 22

Phần mềm OCR thương mại Bộ nhận dạng Tesseract 3.02

Hỗ trợ hơn 100 ngôn ngữ Hỗ trợ trên 60 ngôn ngữ và đang tăng dần

Có giao diện đồ họa Không hỗ trợ giao diện đồ họa

Hầu hết chỉ hỗ trợ trên nền tảng

windows

Hỗ trợ trên Windows , Linux , Mac OS

Hiện nay có độ chính xác cao Độ chính xác cao từ năm 1995

Chi phí khá cao 130 - 500 $ Hoàn toàn miễn phí (mã nguồn mở )

Bảng 2: So sánh giữa một phần mềm OCR thương mại và Tesseract

Vì Tesseract hiện nay là bộ thư viện mã nguổn mở hoàn toàn miễn phí nên trên thế giới đã có nhiều phần mềm nhận dạng ký tự quang học ra đời dựa trên bộ Tesseract với giao diện và các tính năng dễ sử dụng hơn so với giao diện đơn giản của Tesseract ban đầu như : VietOCR cho nhận dạng tiếng Việt, Tessenet2 bộ nhận diện Tesseract trên nền Net của microsoft, giao diện Java (Java GUI frontend) cho Tesseract[16]

b Hoạt động của Tesseract OCR

Hoạt động của Tesseract OCR được thể hiện trong hình vẽ dưới đây [15]:

Hình 5: Kiến trúc tổng thể của Tesseract OCR

Ban đầu, Tesseract được thiết kế để làm việc trên ảnh nhị phân sau đó chương trình được cải tiến có thể nhận dạng cả ảnh màu và ảnh xám Do đó, đầu tiên bộ nhận dạng Tesseract sẽ nhận đầu vào là ảnh màu hoặc ảnh xám Ảnh này sẽ được

Trang 23

chuyển đến bộ phận phân tích ngưỡng thích nghi (adaptive thresholding) để cho ra ảnh nhị phân Sau đó quá trình nhận dạng sẽ được thực hiện tuần tự theocác bước

 Bước đầu tiên là phân tích các thành phần liên thông Kết quả của bước này

sẽ tạo ra các đường bao quanh các ký tự

 Bước thứ hai là tìm hàng và tìm từ, kết quả của bước này sẽ tạo ra các vùng bao quanh các hàng chữ và ký tự chứa trong vùng văn bản

 Bước tiếp theo sẽ là nhận dạng từ Công đoạn nhận dạng từ được xử lý qua

2 giai đoạn Giai đoạn đầu là nhận dạng các từ theo lượt Các từ thỏa mãn yêu cầu trong giai đoạn này sẽ được chuyển sang bộ phân loại thích nghi (adaptive classifier) để làm dữ liệu huấn luyện Chính nhờ đó mà bộ phân loại thích nghi có khả năng nhận diện được chính xác hơn ở phần sau của trang Sau khi bộ phân loại thích nghi đã học được các thông tin cần thiết từ giai đoạn đầu khi nhận dạng phần trên của trang thì giai đoạn thứ 2 của việc nhận dạng sẽ được thực hiện Giai đoạn này sẽ quét hết toàn bộ trang, các

từ không được nhận dạng chính xác ở giai đoạn đầu sẽ được nhận dạng lại lần nữa Cuối cùng bộ nhận dạngsẽ cho ra kết quả nhận dạng hoàn chỉnh [4][8]

Trang 24

CHƯƠNG 3: HỆ THỐNG CÀI ĐẶT THỬ NGHIỆM

3.1 Giải pháp cho hệ thống

3.1.1 Phân tích hệ thống

Để nhận dạng được bảng điểm đầu vào cần giải quyết được hai vấn đề sau đây:

 Vấn đề thứ nhất là cần phải xác định được các khu vực quan tâm trong bảng điểm đầu vào Trong phạm vi luận văn này, tôi không thực hiện nhận dạng hết tất cả các thông tin trong bảng điểm mà chỉ cần các thông tin về mã môn học, mã sinh viên và điểm của sinh viên, do đó cần phải phát hiện ra các khu vực chứa các thông tin này

Theo cấu trúc chung của các bảng điểm: phần mã môn học sẽ nằm ở phía trên của bảng, tuy nhiên độ dài của nó có thể khác nhau và vị trí của nó lại không cố định do nó được đặt trên cùng một hàng và sau tên môn học nên vị trí của nó sẽ phụ thuộc vào tên môn học dài hay ngắn và cấu trúc phần trên của bảng điểm có thể thay đổi (hình 6) Do đó sẽ không khả quan nếu ta xác định vị trị của mã môn học căn cứ vào vị trí của bảng Trong trường hợp này giải pháp tôi đưa ra là sẽ không cố định vị trí của mã môn học trong bảng điểm mà sẽ cho phép người dùng có thể lựa chọn mẫu (template) cho phù hợp với từng bảng điểm cụ thể

Trang 25

Hình 6: Vị trí của mã môn học trong bảng điểm

Phần mã sinh viên và điểm của sinh viên tương ứng là các cột của bảng, thông thường cột số 2 chứa mã sinh viên và cột số 6 chứa điểm Do đó, cách đơn giản nhất

để phát hiện các khu vực này là xác định và tách được phần bảng, tiếp theo sẽ xác định các đường dọc trong bảng để xác định được cột mã sinh viên, cột điểm và xác định các đường ngang trong phần ảnh chứa mã sinh viên, chứa điểm để xác định thông tin cho từng sinh viên Trong luận văn này tôi không cố định số thứ tự của các cột mã sinh viên và điểm mà cho phép người dùng có thể thay đổi được số thứ

tự của hai cột này

 Vấn đề thứ hai là xử lý các khu vực quan tâm để lấy được thông tin hay chính là nhận dạng ký tự Như đã trình bày trong phần 2.3.1, tôi sẽ sử dụng Tesseract OCR để thực hiện quá trình nhận dạng ký tự bao gồm cả ký tự in và chữ

số viết tay trong hệ thống Để nhận dạng ký tự in tôi sử dụng dữ liệu đã được huấn

Ngày đăng: 26/07/2017, 21:07

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1]. Lương Mạnh Bá và Nguyễn Thanh Thuỷ, chủ biên (2003), Nhập môn xử lý ảnh số, Nxb Khoa học và kỹ thuật Hà Nội Sách, tạp chí
Tiêu đề: Nhập môn xử lý ảnh số
Tác giả: Lương Mạnh Bá và Nguyễn Thanh Thuỷ, chủ biên
Nhà XB: Nxb Khoa học và kỹ thuật Hà Nội
Năm: 2003
[2]. Phạm Thị Thanh Hiển(2013), Nhận dạng ký hiệu toán học, Luận văn thạc sĩ, Học viện công nghệ Bưu chính Viễn thông Sách, tạp chí
Tiêu đề: Nhận dạng ký hiệu toán học
Tác giả: Phạm Thị Thanh Hiển
Năm: 2013
[3]. DO Thi Hong Ha (2012), Construction d’une application de lecture automatique des relevés de notes, Đồ án tốt nghiệp đại học, Đại học Bách khoa Hà Nội Sách, tạp chí
Tiêu đề: Construction d’une application de lecture automatique des relevés de notes
Tác giả: DO Thi Hong Ha
Năm: 2012
[4]. Patel, C., Patel, A., & Patel, D. (2012). Optical character recognition by open source ocr tool tesseract: A case study. International Journal of Computer Applications, 55(10), 50-56 Sách, tạp chí
Tiêu đề: International Journal of Computer Applications, 55
Tác giả: Patel, C., Patel, A., & Patel, D
Năm: 2012
[7]. Sharda, V., & Kishan, A.C. (2009). Skew detection and correction in scanned document images, barchelor of technology in computer science and engineering,. National Institute of Technology Rourkela, India Sách, tạp chí
Tiêu đề: Skew detection and correction in scanned document images, barchelor of technology in computer science and engineering
Tác giả: Sharda, V., & Kishan, A.C
Năm: 2009
[8]. Smith, R. (2007). An overview of the tesseract ocr engine. icdar, IEEE Sách, tạp chí
Tiêu đề: An overview of the tesseract ocr engine
Tác giả: Smith, R
Năm: 2007
[9]. Smith, R., Antonova, D., & Lee, D.-S. (2009). Adapting the Tesseract open source OCR engine for multilingual OCR. Proceedings of the International Workshop on Multilingual OCR Sách, tạp chí
Tiêu đề: Adapting the Tesseract open source OCR engine for multilingual OCR
Tác giả: Smith, R., Antonova, D., & Lee, D.-S
Năm: 2009
[5]. Rakshit, S., & Basu, S. (2010). Development of a multi-user handwriting recognition system using tesseract open source ocr engine. arXiv preprint arXiv:1003.5886 Khác
[6]. Rakshit, S., Kundu, A., Maity, M., Mandal, S., Sarkar, S., & Basu, S. (2010). Recognition of handwritten roman numerals using tesseract open source ocr engine. arXiv preprint arXiv:1003.5898 Khác

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w