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
Hà Nội – Năm 2015
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
1
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
2.3.1 Một số thư viện phần mềm nguồn mở về nhận dạng ký tự ..........18
2
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
3
BẢNG CÁC TỪ VIẾT TẮT
Viết đầy đủ
Từ viết tắt
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
4
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
5
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
6
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
7
đượ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.
8
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.
9
- 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.
10
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ị.
11
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].
12
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].
13
(
)
(
)
(
)
(
)
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
Phép xói mòn (phép co)
Co ảnh nhằm loại bỏ điểm trắng bị vây bởi các điểm đen. Trong kỹ thuật này
giá trị của điểm ảnh đầu ra là giá trị nhỏ 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].
(
)
(
)
(
)
(
)
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 3 dưới đây là một ví dụ về phép co trên ảnh nhị phân [13].
14
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:
-
Phép quay.
-
Phép tịnh tiến.
-
Phép tỉ lệ.
Trong đó phép quay và phép tỉ lệ được biểu diễn bằng phép nhân ma trận,
phép tịnh tiến biểu diễn bằng phép cộng ma trận.
Giả sử ta muốn thực hiện các phép biến đổi trên cho một vector 2D
[ ]
khi đó các phép toán trên ma trận sẽ được thực hiện:
Trong đó:
Để đơn giản quá trình tính toán, thay vì việc phải thực hiện vừa phép cộng và
phép nhân trên ma trận ta sẽ thay thế A và B bằng một ma trận M duy nhất có dạng:
15
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.
-
Chúng ta biết M và X, để tìm T ta chỉ cần áp dụng T=M.X. Trong đó M
có thể được cho một các tường minh hoặc có thể được biểu diễn dưới
dạng quan hệ hình học của các điểm. Ví dụ M là ma trận biến đổi được
sử dụng để biến đổi Image1 thành Image2 (hình 4), khi đó M có thể
được xác định dựa trên quan hệ giữa ba cặp điểm 1, 2 và 3 tương ứng
từ hai ảnh.
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à
16
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
17
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.
18
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ự
Tổng số từ
Lỗi ký tự
Lỗi từ
(triệu)
(triệu)
(%)
(%)
Tiếng Anh
39
4
0.5
3.72
Tiếng Nga
38
5
1.35
5.48
Tiếng Hoa giản thể
0.25
NA
3.77
NA
Tiếng Hindi
1.4
0.33
15.41
69.44
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].
19
- 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]:
20
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 Hỗ trợ trên Windows , Linux , Mac OS
windows
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
21
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].
22
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ể.
23
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
luyện cho ngôn ngữ Tiếng Anh được tải về từ website của Tesseract OCR [11] vì độ
24