Tải bản đầy đủ (.pdf) (84 trang)

Tìm hiểu kỹ thuật nhận dạng ký tự quang học và xây dựng ứng dụng giải toán

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.34 MB, 84 trang )

1

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NHA TRANG
KHOA CÔNG NGHỆ THÔNG TIN

Nguyễn Thị Kim Xuân

TÌM HIỂU KỸ THUẬT NHẬN DẠNG KÝ TỰ QUANG HỌC
VÀ XÂY DỰNG ỨNG DỤNG GIẢI TOÁN

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
(Ngành Công nghệ Thông tin)

CÁN BỘ HƯỚNG DẪN:
Ths. Lê Hoàng Thanh

Nha Trang – năm 2017


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 và được sự hướng
dẫn khoa học của Ths. Lê Hoàng Thanh. Các nội dung nghiên cứu, kết quả trong đề
tài này là trung thực và chưa công bố dưới bất kỳ hình thức nào trước đây. Những số
liệu trong các bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá được chính
tác giả thu thập từ các nguồn khác nhau có ghi rõ trong phần tài liệu tham khảo. Ngoài
ra, trong đồ án còn sử dụng một số nhận xét, đánh giá cũng như số liệu của các tác
giả khác, cơ quan tổ chức khác đều có trích dẫn và chú thích nguồn gốc. Nếu phát
hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm về nội dung đồ án


của mình. Trường Đại học Nha Trang không liên quan đến những vi phạm tác quyền,
bản quyền do tôi gây ra trong quá trình thực hiện (nếu có).
Nha Trang, tháng 6 năm 2017
Sinh viên
Nguyễn Thị Kim Xuân


3

MỤC LỤC
LỜI CAM ĐOAN ......................................................................................................2
MỤC LỤC ..................................................................................................................3
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT..........................................6
DANH MỤC CÁC BẢNG ........................................................................................6
DANH MỤC CÁC HÌNH .........................................................................................6
LỜI MỞ ĐẦU ............................................................................................................9
CHƯƠNG 1: GIỚI THIỆU ....................................................................................12
1.1. Mục đích, lý do chọn đề tài .......................................................................12
1.2. Đối tượng và phạm vi nghiên cứu ............................................................12
1.3. Ý nghĩa khoa học và thực tiễn ..................................................................14
CHƯƠNG 2: TỔNG QUAN VỀ NHẬN DẠNG KÝ TỰ QUANG HỌC ..........16
2.1. Các giai đoạn phát triển ............................................................................17
2.2. Tình hình nghiên cứu trong nước ............................................................18
2.3. Tình hình nghiên cứu ở nước ngoài .........................................................19
CHƯƠNG 3: CƠ SỞ LÝ THUYẾT VÀ PHƯƠNG PHÁP NGHIÊN CỨU .....21
3.1. Cơ sở lý thuyết xử lý ảnh ..........................................................................21
3.1.1. Tổng quan về ảnh số ...........................................................................21
3.1.2. Nhị phân hóa ảnh ................................................................................21
3.1.3. Các phép biến đổi hình thái học (Morphology) cơ bản ...................22
3.1.4. Các phương pháp nâng cao chất lượng ảnh .....................................24

3.2. Các phương pháp tách ký tự ....................................................................26
3.2.1. Tách chữ dùng lượt đồ ánh sáng .......................................................26
3.2.2. Tách chữ ..............................................................................................27
3.3. Các phương pháp rút trích đặc trưng ký tự ...........................................27
3.3.1. Các phương pháp về chia vùng .........................................................27
3.3.2. Biểu đồ chiếu Histogram ....................................................................29
3.3.3. Contour Profile ...................................................................................29
3.3.4. Wavelet Haar.......................................................................................29


4

3.3.5. Crossing và Distance ...........................................................................30
3.3.6. Binary ...................................................................................................30
3.4. Các phương pháp nhận dạng ký tự .........................................................31
3.4.1. K Nearest Neighbors (KNN) ..............................................................31
3.4.2. Support Vector Machine (SVM) .......................................................32
3.4.3. Mạng Neural ........................................................................................35
3.5. Ký pháp nghịch đảo Ba Lan .....................................................................48
3.5.1. Lịch sử ..................................................................................................48
3.5.2. Tên gọi và ý nghĩa ...............................................................................48
3.5.3. Ứng dụng Ký pháp nghịch đảo Ba Lan ............................................49
3.6. Cấu trúc hệ nhận dạng chữ viết sử dụng trong đồ án ............................52
3.7. Tiền xử lý ....................................................................................................53
3.8. Tách chữ .....................................................................................................53
3.8.1. Tách dòng ký tự ..................................................................................53
3.8.2. Tách từng ký tự ...................................................................................54
3.9. Rút trích đặc trưng ....................................................................................56
3.10.


Huấn luyện và Nhận dạng .....................................................................57

3.11.

Hậu xử lý .................................................................................................60

3.11.1. Kiểm tra đầu vào bài toán ..................................................................61
3.11.2. Kiểm tra dạng bài toán .......................................................................62
3.11.3. Tính giá trị biểu thức ..........................................................................66
3.11.4. Giải phương trình bậc nhất ...............................................................66
3.11.5. Giải phương trình bậc hai ..................................................................67
3.11.6. Giải hệ phương trình bậc nhất hai ẩn ...............................................70
CHƯƠNG 4: KẾT QUẢ NGHIÊN CỨU VÀ CÀI ĐẶT THỬ NGHIỆM ỨNG
DỤNG GIẢI TOÁN ................................................................................................71
4.1. Xây dựng bộ Dataset .................................................................................71
4.2. Kết quả thử nghiệm tách ký tự.................................................................72
4.3. Thực nghiệm xây dựng mạng Neural ......................................................73
4.3.1. Thực nghiệm chọn số nút ẩn ..............................................................73


5

4.3.2. Thực nghiệm xác định tốc độ học ......................................................74
4.3.3. Kết quả nhận dạng ký tự...................................................................75
4.4. Cài đặt thử nghiệm ứng dụng giải toán ...................................................76
4.4.1. Giao diện chương trình ......................................................................76
4.4.2. Một số hàm trong chương trình ........................................................78
KẾT LUẬN VÀ KIẾN NGHỊ ................................................................................82
DANH MỤC TÀI LIỆU THAM KHẢO ...............................................................84



6

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
Ký hiệu
ANN
ASCII
CMYK
GDI+
HSV
KNN
MLP
RGB
SVM

Thuật ngữ
Artificial Neural Network (Mạng Neural nhân tạo)
American Standard Code for Information Interchange (Chuẩn mã trao
đổi thông tin Hoa Kỳ)
C=Cyan: xanh lơ, M=Magenta: hồng sẫm, và Y=Yellow: vàng
Graphics Device Interface (Thư viện đồ họa)
H = Hue: màu sắc, S = Saturation: độ đậm đặc, sự bảo hòa, V = value:
giá trị cường độ sáng.
K Nearest neighbors (thuật toán K láng giềng)
MultiLayer Perceptron (Mạng Perceptron nhiều tầng)
Hệ màu Red-Green-Blue
Support Vector Machines

DANH MỤC CÁC BẢNG
Bảng 3.1: Một số hàm truyền thông dụng .................................................................37

Bảng 3.2: Quá trình tính toán giải biểu thức hậu tố ..................................................50
Bảng 3.3: Quá trình chuyển biểu thức trung tố thành biểu thức hậu tố ....................51
Bảng 4.1: Tỉ lệ tách ký tự ..........................................................................................72
Bảng 4.2: Mức lỗi theo số nút ẩn ..............................................................................73
Bảng 4.3: Mức lỗi theo tốc độ học ............................................................................74
Bảng 4.4: Tỉ lệ nhận dạng .........................................................................................75

DANH MỤC CÁC HÌNH
Hình 1.1: Mô hình nhận dạng chữ viết .....................................................................13
Hình 1.2: Giao diện phần mềm Math Input Panel ....................................................15
Hình 3.1: Ngưỡng ảnh ...............................................................................................22
Hình 3.2: Erosion ......................................................................................................23
Hình 3.3: Dilation......................................................................................................23
Hình 3.4: Closing ......................................................................................................23
Hình 3.5: Opening .....................................................................................................24
Hình 3.6: Bộ lọc Gaussian Blur ................................................................................25
Hình 3.7: Lọc trung bình ...........................................................................................25
Hình 3.8: Lọc song phương.......................................................................................26


7

Hình 3.9: Tách dòng dựa trên histogram theo chiều ngang của khối chữ ................26
Hình 3.10: Xác định khoảng cách giữa hai kí tự và giữa hai từ dựa trên histogram
theo chiều thẳng đứng của dòng chữ .........................................................................27
Hình 3.11: Chia vùng (Zone) ....................................................................................27
Hình 3.12: Diagonal ..................................................................................................28
Hình 3.13: Biểu đồ chiếu Histogram ........................................................................29
Hình 3.14: Contour profile ........................................................................................29
Hình 3.15: Wavelet Haar...........................................................................................29

Hình 3.16: Crossing và Distance ...............................................................................30
Hình 3.17: Binary ......................................................................................................30
Hình 3.18: Phân lớp bằng SVM ................................................................................33
Hình 3.19: Mô hình của một neural nhân tạo ...........................................................35
Hình 3.20: Chia hàm truyền thành 2 khâu ................................................................36
Hình 3.21: Mạng tự kết hợp ......................................................................................37
Hình 3.22: Mạng kết hợp khác kiểu ..........................................................................38
Hình 3.23: Mạng truyền thẳng ..................................................................................38
Hình 3.24: Mạng phản hồi ........................................................................................39
Hình 3.25: Mạng Neural lan truyền ngược MLP ......................................................39
Hình 3.26: Ảnh hưởng của kích thước mẫu ..............................................................47
Hình 3.27: Mô hình nhận dạng chữ viết tay sử dụng trong đồ án ............................52
Hình 3.28: Quá trình tách dòng .................................................................................54
Hình 3.29: Kết quả tách ký tự ...................................................................................56
Hình 3.30: Mô hình mạng Neural .............................................................................57
Hình 3.31: Sơ đồ thuật toán huấn luyện mạng ..........................................................59
Hình 3.32: Sơ đồ thuật toán nhận dạng ký tự............................................................60
Hình 3.33: Ví dụ thuật toán tách số hạng ..................................................................64
Hình 4.1: Một số ảnh trong tập huấn luyện Chars 74K ............................................71
Hình 4.2: Một số ảnh trong tập dữ liệu mẫu tự xây dựng .........................................72
Hình 4.3: Một số ảnh ký tự tách sai ..........................................................................72


8

Hình 4.4: Đồ thị biến thiên mức lỗi theo số nút ẩn ...................................................73
Hình 4.5: Đồ thị biến thiên mức mỗi theo tốc độ học ...............................................74
Hình 4.6: Một số ký tự dễ nhầm trong bộ dữ liệu huấn luyện ..................................76
Hình 4.7: Giao diện chương trình .............................................................................77



9

LỜI MỞ ĐẦU
Nhận dạng là bài toán xuất hiện cách đây khá lâu và vẫn luôn thu hút được
nhiều sự quan tâm, nghiên cứu. Đặc biệt là trong vài thập niên gần đây, do sự thúc
đẩy của quá trình tin học hóa trong mọi lĩnh vực, bài toán nhận dạng không còn dừng
lại ở mức độ nghiên cứu nữa mà nó trở thành một lĩnh vực để áp dụng vào thực tế.
Các bài toán nhận dạng đang được ứng dụng trong thực tế hiện nay tập trung vào
nhận dạng mẫu, nhận dạng tiếng nói và nhận dạng chữ. Trong số này, nhận dạng ký
tự quang học là bài toán được quan tâm rất nhiều và cũng đạt được nhiều thành tựu
rực rỡ [1]. Về mặt lý thuyết, chưa có phương pháp nào hoàn chỉnh cho bài toán này
do tính phức tạp, sự biến dạng của dữ liệu đầu vào. Những năm gần đây, cùng với sự
phát triển của lý thuyết nhận dạng, công nghệ xử lý ảnh, đã có nhiều nghiên cứu mang
lại một số kết quả cho bài toán nhận dạng ký tự quang học, từ đó mở ra hàng loạt ứng
dụng thực tế.
Đồ án “Tìm hiểu kỹ thuật nhận dạng ký tự quang học và xây dựng ứng dụng
giải toán” nhằm giới thiệu một cách tiếp cận bài toán nhận dạng chữ viết tay với một
số ràng buộc để vào ứng dụng thực tiễn.
Được sự đồng ý và hướng dẫn tận tình của ThS Lê Hoàng Thanh, người đã tận
tình giúp đỡ và truyền đạt nhiều kinh nghiệm để đề tài có thể được thực hiện và hoàn
thành. Mặc dù hết sức cố gắng, song do thời gian có hạn, vốn kiến thức còn hạn chế
và những hạn chế của bản thân là chưa có nhiều kinh nghiệm trong nghiên cứu và lập
trình nên đồ án không thể tránh khỏi những thiếu sót, em rất mong nhận được sự
thông cảm và góp ý của quý Thầy, Cô để đồ án được hoàn thiện hơn.
Em xin chân thành cảm ơn!
Nha Trang, tháng 6 năm 2017
Sinh viên
Nguyễn Thị Kim Xuân



10

NHẬN XÉT
(Của giảng viên hướng dẫn)

.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................


11


NHẬN XÉT
(Của giảng viên phản biện)

.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................
.............................................................................................................................


12

CHƯƠNG 1: GIỚI THIỆU
1.1.


Mục đích, lý do chọn đề tài
Từ khi ra đời, máy tính đã nhanh chóng phát triển và đóng một vai trò rất quan

trọng trong nghiên cứu khoa học kỹ thuật cũng như trong đời sống. Nhưng máy tính
chỉ có thể làm việc theo một chương trình đã được hoạch định sẵn bởi lập trình viên.
Nó vẫn không có khả năng liên tưởng, kết nối sự việc này với sự việc khác và quan
trọng hơn hết là khả năng sáng tạo như con người. Bên cạnh đó khoa học công nghệ
không ngừng phát triển để đáp ứng ngày càng cao những nhu cầu của con người
nhưng không phải nhu cầu nào cũng có thể dễ dàng giải quyết và đáp ứng được. Nhận
dạng chữ viết hiện nay vẫn đang là vấn đề thách thức lớn đối với các nhà nghiên cứu
vì bài toán chưa thể giải quyết trọn vẹn được do phụ thuộc nhiều vào người viết.
Bài toán đặt ra ở đây là xây dựng mô hình chữ viết tay và ứng dụng nó vào
việc giải toán. Thực tế hiện nay phương pháp giải toán bằng hình ảnh không phải là
một khái niệm mới. Có rất nhiều phần mềm nhận dạng chữ viết tay để giải toán giúp
cho học sinh có thể kiểm tra lại kết quả làm bài của mình đúng hay sai mà không cần
nhờ thầy cô, hoặc để bố mẹ kiểm tra lại kết quả bài tập của con mình nhanh chóng và
chính xác dưới sự trợ giúp của các thiết bị thông minh.
Mục đích của đề tài nghiên cứu này là vận dụng các kiến thức được học và tìm
hiểu xây dựng một ứng dụng giúp nhận diện các nét vẽ để chuyển thành ký tự cho
phép người dùng giải các bài toán được nhận dạng thông qua các nét vẽ trên máy tính
và tìm hiểu trong lĩnh vực nhận dạng ký tự, từ đó có cái nhìn tổng quan về phương
thức thực hiện hay các vấn đề gặp phải trong bài toán nhận dạng ký tự, nhằm phát
triển được nhiều ứng dụng thực tiễn liên quan tới nhận dạng các ký tự toán học hơn.
1.2.

Đối tượng và phạm vi nghiên cứu
Đồ án “Tìm hiểu kỹ thuật nhận dạng ký tự quang học và xây dựng ứng dụng

giải toán” được thực hiện với mục đích giải quyết một lớp con các bài toán nhận dạng
chữ viết tay, tập trung vào bước nhận dạng ký tự do đây là bước mà mọi hệ nhận dạng



13

ký tự quang học cần phải có. Từ đó tạo cơ sở tiếp theo có thể xây dựng và phát triển
một ứng dụng nhận dạng giải toán. Từ phân tích trên cho thấy bài toán đã đặt ra phải
giải quyết được những yêu cầu sau:
 Xác định và rút trích đặc trưng từ ảnh đầu vào.
 Nhận dạng các ký tự trong ảnh.
 Nhận ra dạng toán và áp dụng giải toán từ các ký tự đã nhận dạng được.

Dữ liệu
huấn
luyện

Huấn
luyện

Mô hình
sau khi
huấn luyện

Nhận
dạng

Kết quả
nhận dạng

Trích chọn
đặc trưng


Tiền
xử lý

Dữ liệu
nhận
dạng

Hình 1.1: Mô hình nhận dạng chữ viết
Trong đồ án tập trung nghiên cứu phần nhận dạng ký tự viết tay bằng các thao
tác với chuột, với các công việc cụ thể là xây dựng thuật toán để xác định tách các ký
tự, rút trích đặc trưng và tiến hành nhận dạng các ký tự đơn, giải các bài toán từ các
ký tự đã nhận dạng được sau đó hiển thị lên màn hình kết quả nhận dạng và đáp án
bài toán. Sử dụng ngôn ngữ C# kết hợp các thư viện của EmguCV. Có thể tóm tắt
phương pháp thực hiện như sau:


14

Bước 1: Thiết kế giao diện tương tự MS Paint với các thao tác sử dụng gồm có một
phần màn hình dùng để vẽ hình, sử dụng chuột để viết chữ lên phần màn hình đó.
Bước 2: Tiền xử lý bằng các thuật toán xử lý ảnh.
Bước 3: Tách ký tự.
Bước 4: Xử lý các ký tự cắt được, rút trích đặc trưng, xây dựng mạng Neural.
Bước 5: Xây dựng mạng Neural để nhận dạng các ký tự trên ảnh đầu vào.
Bước 6: Xử lý và hiển thị kết quả nhận dạng lên giao diện chương trình.
Bước 7: Xác định và giải nếu nhận ra được ảnh ký tự vẽ vào thuộc 1 trong các dạng
toán sau: Biểu thức, phương trình bậc nhất, phương trình bậc hai, hệ phương trình.
Chương 3 sẽ trình bày kĩ hơn về cơ sở lý thuyết và các bước thực hiện.
1.3.


Ý nghĩa khoa học và thực tiễn
Nhận dạng chữ viết tay là một đề tài rất quan trọng trong nhiều ứng dụng khác

nhau, quan trọng nhất là trong lĩnh vực máy học nó hỗ trợ máy tính có thể đọc, nhận
biết để nhập dữ liệu từ nguồn dữ liệu bên ngoài đưa vào. Có thể thấy vấn đề xử lý
nhận dạng ký tự quang học nói chung hay chữ viết tay nói riêng được giải quyết.
Nhưng, đề tài này còn chưa được nghiên cứu rộng khắp, chưa thực sự quan tâm chưa
được sử dụng và ứng dụng rộng rãi tại Việt Nam cũng như trong các nghiên cứu công
nghệ tại trường Đại học Nha Trang.
Chính vì vậy, việc nghiên cứu các kỹ thuật nhận dạng ký tự quang học nói
chung và ký tự viết tay nói riêng là một việc cần thiết để làm rõ cơ sở lý thuyết các
kỹ thuật xử lý ảnh, rút trích đặc trưng, phân lớp dữ liệu phục vụ nhu cầu phát triển
trong những lĩnh vực có vô vàn ứng dụng thực tiễn trong đời sống. Đặc biệt là lĩnh
vực xây dựng áp dụng các kỹ thuật nhận dạng để giải toán nhằm giải quyết nhanh các
yêu cầu của người dùng. Kết quả nghiên cứu có thể giúp người dùng chủ động học
tập mọi nơi và có kết quả các bài toán nhanh, chính xác. Các nghiên cứu nhận dạng
chữ viết tay đã được phát triển từ hơn nữa thập kỷ qua và đạt được nhiều thành quả


15

thiết thực. Cho đến nay, bài toán nhận dạng chữ viết tay đạt được một số nghiên cứu
khả quan như:
Nhận dạng chữ in đã được giải quyết gần như trọn vẹn sản phẩm FineReader
9.0 của hãng ABBYY có thể nhận dạng chữ in theo 192 ngôn ngữ khác nhau. Phần
mềm nhận dạng chữ VnDOCR 4.0 của Viện Công nghệ Thông tin Hà Nội có thể nhận
dạng được các tài liệu chứa hình ảnh và văn bản với độ chính xác trên 98% [1].
Phần mềm nhận dạng công thức toán học cũng phát triển khá nhiều như: phần
mềm Mathpix có thể nhận diện và giải được các phương trình toán viết ra giấy bằng

chữ viết tay. Phần mềm Math Input Panel giúp tạo các công thức toán học bằng cách
sử dụng chuột để vẽ công thức, chương trình sẽ tự nhận diện và hiển thị công thức
lên cho người sử dụng (hình 1.2).

Hình 1.2: Giao diện phần mềm Math Input Panel


16

CHƯƠNG 2: TỔNG QUAN VỀ NHẬN DẠNG KÝ TỰ QUANG HỌC
Nhận dạng ký tự quang học (Optical Character Recognition - OCR), là loại
phần mềm máy tính được tạo ra để chuyển các hình ảnh của chữ viết tay hoặc chữ
đánh máy (thường được quét bằng máy scanner) thành các văn bản tài liệu. OCR
được hình thành từ một lĩnh vực nghiên cứu về nhận dạng mẫu, trí tuệ nhận tạo. Mặc
dù công việc nghiên cứu học thuật vẫn tiếp tục, một phần công việc của OCR đã
chuyển sang ứng dụng trong thực tế với các kỹ thuật đã được chứng minh. Nhận dạng
ký tự quang học (dùng các kỹ thuật quang học chẳng hạn như gương và ống kính) và
nhận dạng ký tự số (sử dụng máy quét và các thuật toán máy tính) lúc đầu được xem
xét như hai lĩnh vực khác nhau. Bởi vì chỉ có rất ít các ứng dụng tồn tại với các kỹ
thuật quang học thực sự, bởi vậy thuật ngữ “Nhận dạng ký tự quang học” được mở
rộng và bao gồm luôn ý nghĩa nhận dạng ký tự số [1].
Nhận dạng ký tự quang học đã được nghiên cứu hơn 40 năm qua. Đặc biệt
nhận dạng chữ viết tay đã nhận được sự quan tâm đáng kể do sự phát triển của các
máy tính cầm tay, điện thoại cầm tay dựa trên các bàn phím, chuột và nhiều thiết bị
định vị khác. Nhận dạng chữ viết tay được chia thành hai lớp bài toán lớn là nhận
dạng chữ viết tay trực tuyến (online) và nhận dạng chữ viết tay ngoại tuyến (offline)
[7]. Trong nhận dạng chữ viết tay ngoại tuyến, dữ liệu đầu vào được đưa vào dưới
dạng các ảnh được quét từ các giấy tờ, văn bản. Ngược lại nhận dạng chữ viết tay
trực tuyến là nhận dạng các chữ trên màn hình ngay khi nó được viết. Trong hệ nhận
dạng này máy tính sẽ lưu lại các thông tin về nét chữ như thứ tự nét viết, hướng và

tốc độ của nét...
Đầu tiên hệ thống nhận dạng yêu cầu phải được huấn luyện với các mẫu của
các ký tự cụ thể. Các hệ thống với độ chính xác nhận dạng cao đối với hầu hết các
phông chữ hiện nay đã trở nên phổ biến. Một số hệ thống còn có khả năng tái tạo lại
các định dạng của tài liệu gần giống với bản gốc bao gồm: hình ảnh, các cột, bảng
biểu, các thành phần không phải là văn bản. Hiện nay một số phần mềm đã cho phép


17

nhận dạng được các chữ viết tay theo kiểu chữ in hoa hoặc các con số điền trên các
tờ séc hoặc các phiếu thanh toán…
2.1.

Các giai đoạn phát triển

 Giai đoạn 1: (1900 - 1980)
 Nhận dạng chữ viết được biết đến từ năm 1900 [7], khi nhà khoa học người
Nga Tyuring phát triển một phương tiện trợ giúp cho những người mù.
 Các sản phẩm nhận dạng chữ thương mại có từ những năm 1950, khi máy tính
lần đầu tiên được giới thiệu tính năng mới về nhập và lưu trữ dữ liệu hai chiều
bằng cây bút viết trên một tấm cảm ứng. Công nghệ mới này cho phép các nhà
nghiên cứu làm việc trên các bài toán nhận dạng chữ viết tay online.
 Mô hình nhận dạng chữ viết được đề xuất từ năm 1951 do phát minh của M.
Sheppard được gọi là GISMO [6], một robot đọc – viết.
 Năm 1954, máy nhận dạng chữ đầu tiên đã được phát triển bởi J. Rainbow
dùng để đọc chữ in hoa nhưng rất chậm.
 Năm 1967, công ty IBM đã thương mại hóa hệ thống nhận dạng chữ.
 Giai đoạn 2: (1980 – 1990)
 Với sự phát triển của các thiết bị phần cứng máy tính và các thiết bị thu nhận

dữ liệu, các phương pháp luận nhận dạng đã được phát triển trong các giai
đoạn trước đã có được môi trường lý tưởng để triển khai các ứng dụng nhận
dạng chữ.
 Các hướng tiếp cận theo cấu trúc và đối sánh được áp dụng trong nhiều hệ
thống nhận dạng chữ [1].
 Trong giai đoạn này, các hướng nghiên cứu chỉ tập trung vào các kỹ thuật nhận
dạng hình dáng chứ chưa áp dụng cho thông tin ngữ nghĩa. Điều này dẫn đến
sự hạn chế về hiệu suất nhận dạng, không đạt hiệu quả trong nhiều ứng dụng
thực tế.
 Giai đoạn 3: (từ 1990 đến nay)
 Các hệ thống nhận dạng thời gian thực được chú trọng trong giai đoạn này.


18

 Các kỹ thuật nhận dạng kết hợp với các phương pháp luận trong lĩnh vực máy
học (Machine Learning) được áp dụng rất hiệu quả.
 Một số công cụ máy học hiệu quả như mạng Neural, SVM (Support Vector
Machines), mô hình Markov, KNN (K Nearest neighbors) và xử lý ngôn ngữ
tự nhiên [4]...
2.2.

Tình hình nghiên cứu trong nước
Nghiên cứu về nhận dạng và ứng dụng đã được tiến hành ở nước ta từ khá

sớm. Các chương trình trọng điểm quốc gia về tin học, CNTT từ năm 1981 đến nay
đều có nội dung nghiên cứu về nhận dạng. Đặc biệt các sản phẩn nhận dạng Tiếng
Việt bắt đầu được chú ý phát triển từ đầu những năm 90 và đạt được những kết quả
đánh khích lệ ban đầu, điển hình là các sản phẩm DOCR của FPT (1990-1993),
CadPro, ImageScan 1.0 của Tecarpro (1998). Tuy nhiên, những sản phẩm kể trên

không đi đến đích cuối cùng là phát triển thành sản phẩm thương mại hoàn chỉnh trên
phạm vi sử dụng hạn chế.
Có thể nói, trong các sản phẩn nhận dạng tiếng Việt thời gian gần đây thì phần
mềm VnDOCR của Phòng Nhận dạng – Viện Công nghệ Thông tin do TS. Lương
Chi Mai chủ trì xây dựng là thành công hơn cả. Đây là sản phẩm thương mại khá
hoàn chính và có lượng người sử dụng tương đối nhiều. Kết quả nhận dạng của phần
mềm này với các trang in tiếng Việt với kiểu chữ quy định rất tốt, tuy nhiên đối với
các trang in phức tạp hơn như trang hộ chiếu hay các tờ khai đề nghị cấp hộ chiếu thì
chất lượng không đáp ứng mong đợi. Điều này cũng có thể dự báo trước vì VnDOCR
được xây dụng với mục đích nhận dạng các văn bản phổ dụng như các trang sách,
các bản fax, công văn và các loại giấy tờ tài liệu văn phòng,… chứ không phải nhắm
vào việc xử lý các loại biểu mẫu viết tay (dù là viết kiểu chữ in hoa) với nền trang trí
hoa văn, họa tiết phức tạp.
Về dòng sản phẩm phần mềm xử lý biểu mẫu, qua các kết quả được công bố
tại các Hội thảo quốc gia về tin học ứng dụng những năm qua, các tác giả Ngô Quốc


19

Tạo và Đỗ Năng Toàn của Viện Công nghệ Thông tin cho thấy đã có những thành
tựu bước đầu trong việc nghiên cứu xử lý “đọc” tự độc các biểu mẫu dạng đánh dấu.
Ngoài ra tại Việt Nam cũng có một số hệ như WORC của công ty 3C, VIETIN của công ty SEATIC, Image Scon của Trung Tâm Tự Động Hóa Thiết Kế, hệ
WINGIS của công ty DolfSoft...
Hiện nay với phần mềm VietOCR được phát triển dựa trên nền tảng mã nguồn
mở Tesseract, với công nghệ Java/.NET, hỗ trợ nhận dạng cho các dạng ảnh PDF,
TIFF, JPEG, GIF, PNG, và BMP. Khả năng nhận dạng của VietOCR có thể đạt tới
95% đối với file ảnh có chất lượng tốt.
Nhìn chung, các sản phẩm phần mềm nhận dạng của nước ta đã thu được kết
quả khả quan, đặc biệt phần mềm VNDOCR đã được sử dụng rộng rãi trong các cơ
quan nhà nước. Riêng phần nhận dạng ký tự viết tay vẫn đang được nghiên cứu và

phát triển nhằm phục vụ cho các yêu cầu khác nhau.
2.3.

Tình hình nghiên cứu ở nước ngoài
Về lĩnh vực nhận dạng chữ, các phần mềm thương phẩm nhận dạng chữ in cho

các ngôn ngữ hệ Latinh và Slavơ đã đạt được chất lượng nhận dạng rất cao, ví dụ như
OMNIPAGE 11.0 của Caere (Mỹ), Fine Reader 7.0 của ABBYY (Nga), Yonde OCR
của Aisoft và KanjiScan (Nhật). Để đạt tới các phiên bản với chất lượng cao như vậy,
từ hơn 10 năm nay, các hãng phần mềm này vẫn phải liên tục cho phát triển hoàn
thiện các chức năng nhận dạng cũng như tiền và hậu xử lý.
Hiện nay, trên thị trường thế giới có rất nhiều sản phẩm phần mềm về OCR.
Những sản phẩm này chủ yếu nhận dạng ký tự tiếng Anh, Mỹ và một số ngôn ngữ
thông dụng khác như Pháp, Đức, Ý,… Một số sản phẩn tiêu biểu như BUSY, AEG
Reco, RecoLine, OmmiPage,… của các hãng nỗi tiếng như CGK Computer, HP,…
được giưới thiệu với những tính năng nỗi bật sau:
 Tự động nhận dạng chữ in máy, chữ viết tay (cả chữ hoa và chữ thường), trên
một hoặc nhiều dòng. Có thể xử lý cả bản in màu và in trắng đen.


20

 Cho phép nhận dạng nhiều kiểu chữ trong cùng một văn bản. Tốc độ nhận
dạng lên tới vài trăm ký tự mỗi giây.
 Các bộ phân lớp hướng quốc gia mang lại độ chính xác nhận dạng cao nhất
với từng loại ngôn ngữ. Kết quả nhận dạng cũng có thể được hiển thị ở nhiều
dạng mã khác nhau như ASCII, IBM437, UNICODE,…
 Hỗ trợ tất cả các bước liên quan trong việc xử lý văn bản: mô tả văn bản,
quét/nhập, nhận dạng ký tự, kiểm tra/hậu xử lý, soạn dữ liệu/kết xuất dữ liệu,
lưu trữ hồ sơ.

 Hỗ trợ nhận dạng tin cậy tất cả các mã vạch thông dụng. Nhận dạng và kiểm
tra các ký tự và các trường không đọc được bằng mắt thường.
 Cho phép sử dụng hỗ trợ văn bản của Microsoft bằng cách truyền dữ liệu tới
Exel hoặc Access.
Nhưng đối với chữ viết tay trực tuyến hoặc gián tiếp, chất lượng nhận dạng
thấp hơn nhiều và các phương pháp hiện nay mới chỉ nhận dạng được chữ viết tay có
hạn chế. Các chủ đề này vẫn còn đang được đề cập đến nhiều với các cách tiếp cận
khác nhau, đề cập tới các phương pháp cải tiến để tăng chất lượng nhận dạng, tách và
cắt chữ, và kết hợp với ngữ nghĩa của từng ngôn ngữ cụ thể. Vì chữ viết tay hoàn toàn
phụ thuộc vào người viết và sự biến đổi quá đa dạng trong cách viết và trạng thái sức
khỏe, tinh thần của từng người viết. Nhận dạng ký tự viết tay vẫn đang được nghiên
cứu và phát triển nhằm phục vụ cho các yêu cầu khác nhau. Có thể thấy nhận dạng
ký tự quang học đang là một hướng nghiên cứu rất được quan tâm hiện nay và đang
còn nhiều vấn đề cần phải hoàn thiện.


21

CHƯƠNG 3: CƠ SỞ LÝ THUYẾT VÀ PHƯƠNG PHÁP NGHIÊN CỨU
3.1.

Cơ sở lý thuyết xử lý ảnh

3.1.1. Tổng quan về ảnh số
Ảnh nhị phân chỉ chứa hai giá trị 0 hoặc 1 (hoặc 0 và 255 tùy theo quy định
của cấu trúc ảnh). Theo đó, giá trị 0 sẽ là giá trị ứng với những điểm đen trên ảnh và
giá trị 1 (hoặc 255) sẽ là giá trị ứng với những điểm trắng.
Ảnh xám: Sử dụng 8 bit để biểu diễn mức xám, giá trị của mỗi pixel nhận giá
trị nguyên từ 0 - 255. Với mức 0 biểu diễn cho mức cường độ tối nhất và 255 biểu
diễn cho mức cường độ sáng nhất.

Ảnh màu: Cách biểu diễn cũng tương tự như với ảnh xám, chỉ khác là mỗi
pixel được tổ hợp bởi các màu riêng biệt. Ví dụ hệ màu Red-Green-Blue (RGB), mỗi
pixel được tổng hợp từ 3 màu Red, Green và Blue. Mỗi màu được biểu diễn bởi 8 bit
và có dải từ 0 - 255. Các kênh màu thường được sử dụng: RGB, CMYK, HSV [2].
3.1.2. Nhị phân hóa ảnh
Nhị phân hóa là quá trình biến một ảnh màu hoặc ảnh xám thành ảnh nhị phân.
Ảnh nhị phân chỉ chứa hai giá trị 0 hoặc 1 (hoặc 0 và 255). Công thức để nhị phân
ảnh là đặt tất cả các giá trị của ảnh xám về 0 nếu chúng bé hơn một ngưỡng T cho
trước và về 255 nếu chúng lớn hơn ngưỡng T đó. Thuật toán phân ngưỡng cài đặt ở
đây sử dụng hàm phân ngưỡng:
𝐷𝑒𝑠𝑡(𝑥, 𝑦) {

1 𝑖𝑓 𝑆𝑜𝑢𝑟𝑐𝑒 (𝑥, 𝑦) ≥ 𝑇
0 𝑖𝑓 𝑆𝑜𝑢𝑟𝑐𝑒 (𝑥, 𝑦) < 𝑇

Trong đó, Source(x,y) là giá trị điểm ảnh ở vị trí (x,y) của ảnh nguồn, Dest(x,y)
là giá trị điểm ảnh tương ứng ở vị trí (x,y) của ảnh đích. T là giá trị ngưỡng. Vấn để ở
đây là với ngưỡng T như thế nào thì cho ta được tấm ảnh nhị phân như ý muốn, nghĩa
là ảnh làm nổi các vùng đối tượng và nền. Việc xác định giá trị T là rất khó vì chúng
phụ thuộc vào từng điều kiện chiếu sáng khác nhau của môi trường. Với môi trường
này T nhận một giá trị, môi trường khác lại một giá trị khác. Hình 3.1 thể hiện ảnh đã


22

được nhị phân hóa với cùng ngưỡng thấp, trung bình và ngưỡng cao. Người ta đề xuất
nhiều phương pháp để xác định giá trị ngưỡng. Một phương pháp là thiết lập ngưỡng
sao cho số lượng các điểm đen đạt một ngưỡng chấp nhận được theo phân phối xác
suất mức xám [2]. Trong đồ án sử dụng ngưỡng là 128.


a) Ảnh gốc ban đầu

b) Ngưỡng thấp (90)

c) Ngưỡng trung bình (128)

d) Ngưỡng cao (255)

Hình 3.3: Ngưỡng ảnh
3.1.3. Các phép biến đổi hình thái học (Morphology) cơ bản
Mục đích chính của các phép biến đổi hình thái học nhưng làm giảm bớt các
chi tiết thừa trong ảnh để làm nổi rõ những mảng chính, hoặc làm trơn các cạnh biên,
lấp các hố, các lỗ trống, khử lồi lõm trên đường biên… Một số phương pháp biến đổi
hình thái học cơ bản là: Erosion, Dilation, Opening và Closing.


23

Erosion: được sử dụng trên ảnh nhị phân để làm xói mòn hay loại bỏ bớt phần
dính liền tại ranh giới giữa các vùng. Ký hiệu A ϴ B. Pixel dưới điểm neo được thay
thế bằng giá trị pixel nhỏ nhất bị chồng lên bởi mặt nạ cấu trúc.

Hình 3.4: Erosion
Dialation: được sử dụng để mở rộng vùng hoặc lấp đầy khoảng trống giữa
ranh giới 2 vùng. Ký hiệu của phép này là A⊕ B. Pixel dưới điểm neo được thay thế
bằng giá trị pixel lớn nhất bị chồng lên bởi mặt nạ cấu trúc.

Hình 3.5: Dilation
Closing: là việc thực hiện liên tiếp phép Dilation và sau đó là Erode


Hình 3.6: Closing


24

Opening: là việc thực hiện liên tiếp phép Erode và Dilation, có tác dụng làm
mịn đường biên của một đối tượng, loại bỏ những chỗ lồi lõm.

Hình 3.7: Opening
3.1.4. Các phương pháp nâng cao chất lượng ảnh
Trong xử lý ảnh các ảnh đầu vào trong trường hợp là ảnh scan thì ảnh thường
được thu thập từ nhiều nguồn khác nhau và các ảnh thu thập được thường có nhiễu
do nhiều nguyên nhân bao gồm: sự thoái hóa theo thời gian, quá trình sao chép. Một
số kỹ thuật xử lý ảnh sẽ được áp dụng để loại bỏ nhiễu. Sau khi được xám hóa, ảnh
sẽ được lọc để giảm nhiễu.
Trên thực thế tồn tại nhiều loại nhiễu, tuy nhiên người ta thường xem xét 3
loại chính:
 Nhiễu cộng
 Nhiễu nhân
 Nhiễu xung
Chúng xuất hiện những điểm ảnh khác biệt so với vùng xung quanh, do đó để
lọc nhiễu người ta thường sử dụng bộ lọc thông thấp hay trung bình. Với nhiễu cộng
và nhiễu nhân ta dùng các bộ lọc thông thấp, trung bình, với nhiễu xung ta dùng lọc
trung vị. Sau đây là một số bộ lọc thường dùng.
3.1.4.1. Bộ lọc Gaussian
Gaussian Blur là cách làm mờ một ảnh bằng hàm Gaussian. Nó cũng là công
cụ phổ biến để thực hiện quá trình tiền xử lý (preprocessing), nó có thể giúp làm giảm


25


nhiễu (Noise) và mức độ chi tiết (không mong muốn) của hình ảnh. Một cách trực
quan, đây được xem như là phương pháp làm mờ mịn cũng giống như hiệu ứng hình
ảnh được đặt dưới một lớp màn trong suốt bị mờ. Trong toán học, việc ứng dụng
Gaussian Blur cho một hình cũng chính là tính tích chập (Convolution) hình đó với
hàm Gaussian.

Hình 3.8: Bộ lọc Gaussian Blur
3.1.4.2. Lọc trung bình
Lọc trung bình là kĩ thuật lọc tuyến tính, hoạt động như một bộ lọc thông thấp.
Trong lọc bình, ta sử dụng một cửa sổ lọc quét qua lần lượt từng điểm ảnh của ảnh
đầu vào input. Tại vị trí mỗi điểm ảnh lấy giá trị của các điểm ảnh tương ứng trong
vùng 3×3 của ảnh gốc “lấp” vào ma trận lọc. Giá trị điểm ảnh của ảnh đầu ra là giá
trị trung bình của tất cả các điểm ảnh trong cửa sổ lọc.

Hình 3.9: Lọc trung bình


×