Dữ liệu thu nhận được thông qua màn hình cảm ứng là tọa độ di chuyển của bút viết cùng với các thông tin động khác như tốc độ viết, góc của bút viết và sức ép của bút, thứ tự nét viết và
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Nguyễn Lê Hùng
NHẬN DẠNG CHỮ VIẾT TAY TIẾNG VIỆT
TRÊN CÁC THIẾT BỊ CẦM TAY
LUẬN VĂN THẠC SỸ
Hà Nội - 2007
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
-oo0oo -
Nguyễn Lê Hùng
NHẬN DẠNG CHỮ VIẾT TAY TIẾNG VIỆT
TRÊN CÁC THIẾT BỊ CẦM TAY
Ngành: Công nghệ thông tin
Trang 31
BẢNG CÁC TỪ VIẾT TẮT 4
DANH MỤC CÁC HÌNH VẼ 5
MỞ ĐẦU 8
CHƯƠNG 1 TỔNG QUAN VỀ HỆ THỐNG NHẬN DẠNG CHỮ VIẾT 11
1.1 Giới thiệu 11
1.2 Lịch sử nhận dạng 12
1.3 Tổng quan về các thiết bị cầm tay 13
1.4 Hệ thống nhận dạng ký tự tự động(ACR) 16
1.4.1 Phận loại hệ thống dựa trên thiết bị thu nhận dữ liệu 16
1.4.2 Phân loại hệ thống dựa vào kiểu văn bản 18
CHƯƠNG 2 TIỀN XỬ LÝ 24
2.1 Phát hiện nét bút trễ 24
2.2 Lấy mẫu 24
2.3 Hiệu chỉnh lỗi trong quá trình viết chữ 27
2.3.1 Các lỗi thường gặp trong quá trình viết 27
2.3.2 Các lỗi trong hệ thống nhận dạng chữ viết tay trực tuyến 27
2.3.3 Hiệu chỉnh lỗi viết tay on-line 28
2.4 Làm trơn 32
2.5 Thuật toán làm mảnh 33
2.6 Chuẩn hóa kích thước 35
2.7 Nội suy các điểm bị mất 36
2.7.1 Sử dụng đường cong Bezier 36
2.7.2 Thuật toán vẽ đường thằng Bresenham 38
2.8 Hiệu chỉnh góc nghiêng 40
2.8.1 Hiệu chỉnh góc nghiêng theo phương nằm ngang 40
2.8.2 Hiệu chỉnh góc nghiêng theo phương thẳng đứng 43
Trang 42
CHƯƠNG 3 CẮT CHỮ VÀ TRÍCH CHỌN ĐẶC TRƯNG 48
3.1 Cắt từ khỏi dòng văn bản 48
3.1.1 Cắt dựa vào trọng lực 48
3.1.2 Cải tiến các thuật toán cắt từ 50
3.1.3 Biểu diễn các cụm ký tự và dấu 51
3.2 Cắt các ký tự khỏi từ 52
3.2.1 Ước lượng chiều rộng và cao của ký tự 52
3.2.2 Cắt bằng thuật toán mẹo 53
3.2.3 Cắt bằng tập các quy tắc 55
3.2.4 Sử dụng thông tin phụ để tăng độ chính xác 57
3.2.5 Kết hợp cắt từ và nhận dạng 59
3.3 Trích chọn đặc trưng 60
3.3.1 Hướng viết 60
3.3.2 Xác định độ cong 61
3.4 Pen-up/pen-down 61
3.5 Lượng tử hóa độ nghiêng 61
3.6 Xác định các điểm trội 62
CHƯƠNG 4 MỘT SỐ PHƯƠNG PHÁP NHẬN DẠNG 63
4.1 Đối sánh nhị phân 63
4.2 Warping thời gian động 65
4.3 Đối sánh chuỗi 66
4.3.1 Trích chọn chuỗi nét bút liền kề(stroke sequence strings) 67
4.3.2 Đối sánh chuỗi nét bút liền kề 67
4.4 Nhận dạng dựa vào mô hình phân bố điểm(PDM) 71
4.4.1 Căn thẳng hàng tập huấn luyện 71
4.4.2 Phân tích thành phần 73
4.4.3 Nhận dạng sử dụng PDM 75
4.5 Sử dụng Fourier Descriptor(FD) 75
Trang 53
CHƯƠNG 5 XÂY DỰNG CHƯƠNG TRÌNH NHẬN DẠNG
TIẾNG VIỆT ONLINE 86
5.1 Mô tả 86
5.2 Tiền xử lý 87
5.2.1 Tìm các điểm bị mất 87
5.2.2 Tách các dòng văn bản 87
5.2.3 Tách các từ khỏi dòng văn bản 87
5.2.4 Bỏ dấu tiếng việt và ước lượng chiều rộng của ký tự 88
5.2.5 Hiệu chỉnh góc nghiêng 89
5.2.6 Xác định các điểm cắt tiềm năng 89
5.3 Nhận dạng các ký tự 92
5.4 Hậu xử lý 92
5.5 Kết luận 94
KẾT LUẬN 95
TÀI LIỆU THAM KHẢO 96
Trang 64
BẢNG CÁC TỪ VIẾT TẮT
PDM Point Distribution Model Mô hình phân bố điểm OCR Optical Character Recognition Nhận dạng ký tự quang học DTW Dynamic Time Warping Warping thời gian động DFT Discrete Fourier Transform Biến đổi Fourier rời rạc DCT Discrete Cosine Transform Biến đổi Cosine rời rạc
Trang 75
DANH MỤC CÁC HÌNH VẼ
Hình 1.1 Mô hình nhận dạng chữ viết tay trực tuyến 11
Hình 1.2 Thiết bị cầm tay 15
Hình 1.3 Minh họa ký tự khi thu nhận được khi người dùng viết nhanh 18
Hình 1.4 Các cách viết khác nhau cho cùng ký tự N 22
Hình 1.5 A) Thòng lọng, B) Thòng lọng bị thu nhỏ, C) Thòng lọng chuyển thành đỉnh 22
Hình 1.6 Thay đổi cấu trúc của ký tự thành dạng có thòng lọng 22
Hình 1.7 Ví dụ minh họa ký tự bao phủ một ký tự khác 23
Hình 2.1 Xóa các ký tự trễ 24
Hình 2.2 Các bước thực hiện để lấy mẫu bằng nhau 25
Hình 2.3 Minh họa các bước lấy mẫu cho ký tự “a” (a) Ký tự gốc, (b) Sau khi chuẩn hóa kích thước và căn giữa, (c) Sau lần lẫy mẫu thứ nhất, (d) Sau khi áp dụng bộ lọc Gaussian và (e) sau lần lấy mẫu cuối cùng 26
Hình 2.4 Ví dụ về sửa lỗi “Xóa” 28
Hình 2.5 Ví dụ về sửa lỗi “Viết đè” 28
Hình 2.6 Ví dụ về loại lỗi “hoàn thành” và “chèn” 28
Hình 2.7 Sơ đồ xử lý hiệu chỉnh tổng quát 30
Hình 2.8 Chữ “Clintor” sau khi được làm trơn 32
Hình 2.9 7 ma trận khôi phục x ký hiệu cho bít có thể có giá trị bất kỳ 35
Hình 2.10 Minh họa cho thuật toán làm mảnh 35
Hình 2.11 Ánh xạ giữa các điểm 35
Hình 2.12 Chuẩn hóa kích thước của ký tự 36
Hình 2.13 Nội suy các điểm bị mất dựa vào đường cong Bezier 37
Hình 2.14 Xác định trọng tâm của hai thành phần 41
Trang 86
Hình 2.15 Từ “chat “ sau khi quay một góc 41
Hình 2.16 Hiệu chỉnh góc nghiêng của từ “about” 42
Hình 2.17 Các ký tự có độ nghiêng khác nhau 43
Hình 2.18 Xác định đường thẳng hiệu chỉnh 44
Hình 2.19.Minh họa tính góc nghiêng trung bình 45
Hình 2.20 Histogram khi thay đổi góc quay 47
Hình 3.1 Tính khoảng cách giữa hai thành phần 48
Hình 3.2 Dòng văn bản trước và sau khi phân tách 49
Hình 3.3 Minh họa các bước của thuật toán cắt từ 50
Hình 3.4 Hình chữ nhật nhỏ nhất chứa dấu và cụm ký tự 52
Hình 3.5 Biểu diễn mối liên kết giữa cụm ký tự và dấu 52
Hình 3.6 Minh họa từ “Chúng” được cấu tạo từ 3 cụm từ 53
Hình 3.7 Các bước thực hiện thuật toán cắt từ 55
Hình 3.8 Minh họa các đường baseline 56
Hình 3.9: Các điểm cắt ứng viên thay đổi khi áp dụng quy tắc 1 56
Hình 3.10 Các điểm cắt thay đổi sau khi áp dụng quy tắc 2 57
Hình 3.11 Dấu chấm giúp căt hai từ chính xác 58
Hình 3.12 Sơ đồ kết hợp giữa tách từ và nhận dạng 59
Hình 3.13 Xác định hướng viết 60
Hình 3.14 Độ cong tại điểm (x(t),y(t)) 61
Hình 3.15 Các điểm trội của ký tự khi các giá trị FI thay đổi 62
Hình 4.1 Các bước thực hiện thuật toán đối sánh mẫu nhị phân 63
Hình 4.2 Ma trận điểm ảnh được chia thành các khối kích thước 2x2 64
Hình 4.3 Các kỹ thuật đối sánh đường cong 65
Hình 4.4 Minh họa sau khi thực hiện thuật toán lấy mẫu 66
Hình 4.5 Hướng viết được biểu diễn tương ứng với các giá trị nguyên 67
Hình 4.6 Minh họa chuỗi biểu diễn ký tự A 67
Hình 4.7 Các cách viết ký tự “A” 69
Trang 97
Hình 4.8 Chuỗi biểu diễn tương ứng với các cách viết ký tự “A” 69
Hình 4.9 Biểu diễn đối tượng bằng các điểm 71
Hình 4.10 Mô hình PDM của một khúc xương 74
Hình 4.11 Biểu đồ hình khối mức đỉnh của hệ thống nhận dạng sử dụng Fourier Descriptors 76
Hình 4.12 Biểu đồ khối chi tiết của hệ thống nhận dạng sử dụng DFT 77
Hình 4.13 Các điểm biểu diễn đường cong 78
Hình 4.14 Đường cong sau khi làm trơn 79
Hình 4.15 Đường cong được biểu diễn bằng 64 điểm 79
Hình 4.16: Đường cong xấp xỉ có xu hướng trở về hình dạng cũ 81
Hình 4.17 Đường cong xấp xỉ sau lần lặp đầu tiên 82
Hình 4.18 Đường cong xấp xỉ thu được sau lần lặp thứ 8 83
Hình 4.19 Hình minh họa đường cong không đóng 83
Hình 5.1 Các bước cài đặt chương trình 86
Hình 5.2 Các nét bút thuộc các dòng khác nhau sẽ được phân loại 87
Hình 5.3 Chữ “nhanh” trước và sau khi hiệu chỉnh góc nghiêng 89
Hình 5.4 Xác định các điểm cắt tiềm năng 90
Hình 5.5 Từ “ngay” được chia thành 7 khối 91
Hình 5.6 Minh họa một phần cây lưu trữ trong bộ nhớ 91
Hình 5.7 Hiển thị kết quả nhận dạng ra màn hình 94
Trang 108
MỞ ĐẦU
Viết chữ là cách tự nhiên để thu thập, lưu trữ và truyền thông tin không chỉ giữa con người với nhau mà còn giữa con người và máy móc Các nỗ lực nghiên cứu trong lĩnh vực nhận dạng không chỉ cung cấp một cách giao tiếp giữa người và máy giống như viết trên giấy, mà còn cung cấp những chương trình hiệu quả tự động xử lý một lượng lớn tài liệu giấy để chuyển vào trong máy dưới dạng các tài liệu số hóa, nhận dạng các hóa đơn chuyển tiền.v.v
Từ khi phát minh ra máy vi tính, các nhà nghiên cứu đã tập trung nghiên cứu cho máy tính có thể bắt chước đọc giống con người Trong suốt hơn 40 năm nghiên cứu nhận dạng chữ viết của các nhà khoa học trên toàn thế giới, rất nhiều phương pháp nhận dạng đã được đề xuất nhưng cho đến nay vẫn chưa có một phương pháp nào cho tỉ lệ nhận dạng chính xác hoàn toàn
Ngày nay, các thiết bị hỗ trợ cá nhân (PDA) ngày càng trở nên phổ biến, cung cấp nhiều ứng dụng hữu ích cho người dùng như lịch làm việc, tìm kiếm, soạn thư điện tử v.v Các ứng dụng này có thể thu nhận dữ liệu từ bàn phím hoặc qua màn hình cảm ứng Bàn phím của các thiết bị PDA thường rất nhỏ nên thu thập dữ liệu qua bàn phím chậm và không tự nhiên bằng việc thu thập dữ liệu qua việc sử dụng bút viết lên màn hình cảm ứng
Dữ liệu thu nhận được thông qua màn hình cảm ứng là tọa độ di chuyển của bút viết cùng với các thông tin động khác như tốc độ viết, góc của bút viết và sức ép của bút, thứ tự nét viết và hướng của nét bút… Hệ thống nhận dạng trực tuyến sẽ nhận dạng các hình ảnh được tạo bởi đường đi của bút viết thành dạng văn bản để các ứng dụng xử lý văn bản có thể hiểu được Các thông tin động trong quá trình viết sẽ được sử dụng để nâng cao độ chính xác nhận dạng Đây cũng chính là sự khác biệt so với nhận dạng chữ không trực tuyến (off-line)
Trang 119
Trong luận văn này, tôi nghiên cứu đặc trưng của tiếng Việt, một số thuật toán được sử dụng trong các giai đoạn tiền xử lý, cắt chữ, nhận dạng để xây dựng hệ thống nhận dạng chữ viết tay tiếng Việt, các quy tắc để kiểm tra một từ tiếng Việt có hợp lệ hay không trong giai đoạn hậu xử lý Giai đoạn tách chữ luôn là giai đoạn khó trong việc xây dựng hệ thống nhận dạng ký tự, tôi giải quyến vấn đề này bằng cách áp dụng thuật toán tách chữ off-line kết hợp với các thông tin động thu được trong quá trình viết chữ online để tăng độ chính xác trong việc tìm các điểm cắt tiềm năng Các điểm cắt tiềm năng này sẽ được
tổ hợp và nhận dạng trong giai đoạn nhận dạng kết hợp với các quy tắc trong giai đoạn hậu xử lý để tìm ra kết quả phù hợp nhất
Bố cục của luận văn bao gồm phần mở đầu, phần kết luận và 5 chương nội dung được tổ chức như sau:
Trang 1210
Chương 5: Xây dựng chương trình nhận dạng chữ viết tay tiếng Việt on-line Trình bầy đánh giá về các thuật toán được sử dụng trong chương trình Demo kèm theo một số kết quả cài đặt
Trang 13Giai đoạn phân mảnh bao gồm các 2 bước, đầu tiên là tách các từ ra khỏi dòng văn bản, sau đó là tách riêng các ký tự ra khỏi từ Thứ tự các điểm của ký
tự được tách sẽ giữ nguyên giống như viết cả từ
Tiền xử lý Phân mảnh Trích chọn
đặc trưng
Phân loại Gắn nhãn Tìm kiếm
Ngôn ngữ mô hình
Hậu xử
lý
Hình 1.1 Mô hình nhận dạng chữ viết tay trực tuyến
Trang 1412
Giai đoạn trích chọn đặc trưng sẽ chọn các đặc trưng của ký tự để chuyển sang bước phân loại Đặc trưng được trích chọn ở bước này có thể gồm nhiều loại phụ thuộc vào thuật toán nhận dạng như điểm trội, mã Free man, hướng di chuyển
Ngôn ngữ mô hình giảm thiểu quá trình tìm kiếm Ngôn ngữ mô hình gồm một số loại sau:
Mô hình dự đoán: Thường được sử dụng trong nhận dạng âm thanh Dựa trên bảng thống kê một ký tự thường theo sau một ký tự khác với xác suất bao nhiêu Mô hình dự đoán chủ yếu được sử dụng kết hợp với phân tích ngữ cảnh và hay được sử dụng trong mô hình Markov ẩn
Mô hình mẫu: Tất cả mẫu về ký tự sẽ được lưu trữ trong cơ sở dữ liệu Mỗi một ký tự có nhiều biến thể khác nhau
Kỹ thuật tìm kiếm sẽ tìm kiếm đường dẫn gần nhất trong tất cả các mẫu của mỗi tự Một số kỹ thuật tìm kiếm thông dụng là lập trình động, tìm kiếm từ trái qua phải hay tìm kiếm tuần tự
Hậu xử lý bao gồm việc kiểm tra lại lần cuối kết quả nhận dạng trước khi hiển thị kết quả lên màn hình
1.2 Lịch sử nhận dạng
Cho đến nay, các hệ thống nhận dạng đã được phát triển từ nhiều năm, nhưng đến những thập kỷ gần đây mới phát triển mạnh mẽ Người ta chia lịch
sử phát triển của các hệ thống nhận dạng làm 3 thời kỳ:[12]
Thời ký thứ nhất từ năm 1900 – 1980: Đây là thời kỳ sơ khai Nhận dạng ký
tự được bắt đầu từ những năm 1900 khi các nhà khoa học người Nga nghiên cứu phát triển một hệ thống trợ giúp cho người khuyết tật Hệ thống nhận dạng đầu tiên xuất hiện vào giữa năm 1940 cùng với sự phát triển của máy vi tính Trong thời kỳ này, các hệ thống nhận dạng chủ yếu tập trung vào nhận dạng chữ in hoặc một tập nhỏ các ký tự viết tay Trong thời kỳ này, các hệ thống
Trang 15Các hệ thống nhận dạng thương mại xuất hiện đầu tiên vào những năm
1950 khi các thiết bị điện tử có màn hình cảm ứng thu nhận tọa độ di chuyển của bút cảm ứng xuất hiện Các thiết bị này đã giúp các nhà nghiên cứu làm việc với các vấn đề liên quan đến chữ viết tay trực tuyến
1980 –1990 Thời kỳ phát triển: Các nghiên cứu trước năm 1980 gặp nhiều khó khăn do thiếu các thiết bị máy tính có tốc độ cao và các thiết bị thu nhận dữ liệu Từ năm 1980 trở đi, với sự bùng nổ của công nghệ thông tin, các thiết bị phần cứng có có tốc độ cao đã giúp cài đặt được các thuật toán có độ phức tạp cao từ thời kỳ trước
Từ năm 1990 đến nay – Thời kỳ tiến bộ Đây là thời kỳ phát triển mạnh mẽ của lĩnh vực nhận dạng về cả nhận dạng chữ in và nhận dạng chữ viết tay, một phần là do các thiết bị phần cứng phát triển( máy tính có tốc độ cao, các thiết bị thu nhận dữ liệu như máy quét, camara, các thiết bị cảm ứng thu nhận kết quả chính xác hơn), phần còn lại là do có nhiều thuật toán nhận dạng tốt hơn tận dụng được tốt đa các các phương pháp mạng Neural, mô hình Markov ẩn, v.v
1.3 Tổng quan về các thiết bị cầm tay
Trong phần này, tôi sẽ đề cập đến các thiết bị hỗ trợ thu nhận chữ viết tay, các đặc trưng cũng như các hệ điều hành thường được dùng trên từng loại thiết
bị
Nhận dạng chữ viết tay trực tuyến là việc chuyển tự động các nét bút được viết trên các thiết bị số hóa hoặc PDA thành dạng văn bản.Các bộ cảm ứng của
Trang 1614
các thiết bị này sẽ thu thâp các tọa độ di chuyển của bút viết Các tính hiệu thu được sẽ được chuyển thành dạng mã ký tự để có thể xử lý được trong các chương trình xử lý văn bản
Các thành phần của một hệ thống nhận dạng chữ viết tay trực tuyến gồm:
Một bút cảm ứng để người viết viết lên màn hình cảm ứng
Một màn hình cảm ứng, nơi người viết viết văn bản và hiển thị kết quả
Một ứng dụng dịch cử động của người viết thành các ký tự
Nhận dạng chữ viết tay được sử dụng rộng rãi để thu thập dữ liệu cho các thiết bị PDA vì các thiết bị PDA thường không có bàn phím Thiết bị PDA đầu tiên hỗ trợ nhận dạng chữ viết tay là Apple Newton Tuy nhiên thiết bị này không được thương mại hóa rộng bởi khả năng nhận dạng còn kém Phiên bản tiếp theo của Apple Newton là Newton OS 2.0 Trong phiên bản này, độ chính xác đã được cải thiện đáng kể bao gồm cả việc hiệu chỉnh lỗi trong quá trình viết
Các thiết bị ra đời tiếp theo cố gắng tăng độ chính xác trong quá trình nhận dạng, bao gồm: Go‟ tablet computer được sản xuất bởi NCR, IBM sử dụng hệ điều hành Go‟s Penpoint, IBM‟s Thinkpad tablet computer sử dụng hệ điều hành Penpoint và các hệ thống nhận dạng sau đó như Microsoft Windows for Pen và IBM‟s Pen for OS/2 Tuy nhiên chưa có hệ thống nào được thương mại hóa rộng rãi
Mãi đến khi có sự xuất hiện của máy Palm dựa trên hệ thống nhận dạng Graffiti@, hệ thống nhận dạng này dựa trên việc định nghĩa một tập các nét bút cho từng ký tự Các hệ thống nhận dạng sau đó có độ chính xác cao được tích hợp vào các hệ điều hành như Microsoft‟s version of windows XP operating system for Tablet PCs hoặc Windows Mobile OS for PDAs
Thiết bị cầm tay PDA(Personal Digital Assistant) là các thiết bị có kích thước nhỏ, có cấu trúc gần giống như máy tính cá nhân Các thiết bị PDA cung
Trang 1715
cấp các công cụ để trợ giúp giải quyết công việc cho cá nhân Thường gồm các công cụ như Lịch làm việc, Sổ địa chỉ, ghi chú v.v Dữ liệu chủ yếu của các thiết bị PDA được thu thập bằng cách viết lên màn hình cảm ứng, hệ thống nhận dạng sẽ nhận dạng các nét bút thành đầu vào văn bản Ngoài ra một số thiết bị PDA khác còn cho phép kết nối với bàn phím thông qua cổng hồng ngoại PDAs gồm hai loại chính là Palm OS PDAs và Microsoft Pocket PC
Các phiên bản của Palm Pilots thường hỗ trợ màn hình 320 x 320, Pocket
PC thường hỗ trợ độ phân giải thấp nhất là 320 x 480, các thiết bị Pocket PC gần đây hỗ trợ độ phân giải 480 x 640 Các thiết bị có độ phân giải cao sẽ giúp người viết ghi được nhiều từ hơn
Bộ vi xử lý của các thiết bị cầm tay chủ yếu là Intel Xscale, Taxas Instrucments TI Omap, Samsum Bảng sau đây chỉ ra hệ điều hành của một số loại thiết bị cầm tay thông dụng trên thị trường
Hình 1.2 Thiết bị cầm tay
Trang 1816
Dòng máy iPad của HP Window Mobile Pocket 2003
O2 Xphone SmartPhone Windows 2003 Smartphone Edition
1.4 Hệ thống nhận dạng ký tự tự động(ACR)
Các hệ thống nhận dạng ký tự tự động được phân loại dựa trên hai tiêu chí:
Phân loại dựa trên phương pháp thu nhận dữ liệu
Phân loại dựa trên kiểu văn bản
Dữ liệu được thu thập từ rất nhiều thiết bị thu nhận dữ liệu, thiết bị thu nhận
dữ liệu ảnh hưởng nhiều đến việc quyết định thuật toán nhận dạng nào được áp dụng lên hệ thống ACR[12] Kiểu văn bản củng là nhân tố quan trọng ảnh hưởng đến hệ thống nhận dạng ACR Có kiểu dữ liệu yêu cầu tiền xử lý rất ít, tuy nhiên có kiểu văn bản yêu cầu phải xử lý nhiều hơn(Tách chữ, v.v ) trước khi nhận dạng Chi tiết về kiểu văn bản sẽ được thảo luận ở phần sau
1.4.1 Phận loại hệ thống dựa trên thiết bị thu nhận dữ liệu
Thiết bị thu nhận dữ liệu cho hệ thống ACR rất đa dạng như máy quét, các thiết bị cầm tay, v.v Dựa trên đặc trưng của các thiết bị thu nhận dữ liệu, hệ thống ACR được chia thành hai loại
Hệ thống nhận dạng ký tự on-line
Hệ thống nhận dạng ký tự off-line
Hệ thống nhận dạng off-line thu nhận dữ liệu từ giấy thông qua các thiết bị như máy quét hoặc camaras trong khi đó hệ thống nhận dạng on-line lại thu nhận dữ liệu từ các thiết bị đặc biệt thông qua màn hình cảm ứng như các thiết
Trang 1917
bị PDA, thu nhận được thứ tự của các nét bút(Strokes), tốc độ và các thông tin
về sự kiện hạ bút(pen-down) hoặc nhấc bút lên(pen-up)
Hệ thống nhận dạng ký tự on-line có nhiều đặc tính nổi trội gồm:
Khả năng thích ứng Hệ thống nhận dạng on-line có thể nhận trực tiếp các phản hồi từ phía người dùng về kết quả nhận dạng Các phải hồi này
sẽ được sử dụng để hiệu chỉnh tập huấn luyện cho tương thích với kiểu viết của người dùng hệ thống
Xử lý thời gian thực Hệ thống nhận dạng ký tự on-line có thể thu nhận được các thông tin tạm thời hay động trong khi viết (Hướng viết, thứ tự các nét bút v.v ) Dựa vào các thông tin động này, hệ thống có thể xử lý được các nét bút hỏng, nét bút xóa v.v
Đơn giản quá trình tiền xử lý Các thao tác như làm trơn chuẩn hóa kích thước v.v sẽ được thực hiện dễ dàng và nhanh hơn so vơi ảnh pixels
Phân mảnh đơn giản hơn Do biết được thứ tự của các nét bút và các điểm thuộc nét bút nên việc phân mảnh sẽ cho kết quả chính xác hơn Nhược điểm của hệ thống nhận dạng ký tự on-line:
Yêu cầu phải có các thiết bị đặc biệt, các thiết bị này có giá thành cao và cách viết không được tự nhiên bằng khi viết trên giấy
Không thể xử dụng được đối với giấy in hoặc viết tay
Nếu di chuyển bút viết nhanh hoặc các thiết bị cầm tay có tốc độ xử lý chậm thì số điểm thu nhận được cho một ký tự ít, đôi khi làm biến dạng
Trang 20Dữ liệu thu nhận được sẽ được đưa vào ma trận điểm ảnh, khích thước của
ma trận tương đối lớn(Thông thường các máy quét bây giờ có độ phân giải từ 1000-1600 điểm trên một inch) Do đó yêu cầu bộ nhớ lưu trữ trong quá trình
xử lý phải lớn
Hệ thống nhận dạng off-line được áp dụng giải quyết rất nhiều bài toán lớn khó trong thực tế như chuyển thành văn bản các tài liệu giấy, xử lý các hóa đơn chuyển tiền, thiết bị đọc trợ giúp cho người khuyết tật.Tuy nhiên hệ thống nhận dạng chữ viết tay off-line cũng có các nhược điểm sau:
Yêu cầu phải tiền xử lý nhiều(Do có nhiều nhiễu do thiết bị thu nhận kém ), chi phí vào việc phân mảnh và trích chọn đặc trưng lớn
Không thu được các thông tin động của người viết như thứ tự nét bút, số nét bút
Không phải là hệ thống nhận dạng thời gian thực
1.4.2 Phân loại hệ thống dựa vào kiểu văn bản
Dựa vào kiểu văn bản, ta chia hệ thống nhận dạng làm hai loại:
Hình 1.3 Minh họa ký tự khi thu nhận được khi người dùng viết nhanh
Trang 211.4.2.1 Nhận dạng ký tự in
Văn bản in bao gồm các tài liệu như sách báo, tạp chí được in hay photo Dựa vào độ phức tạp của các hệ thống nhận dạng chữ in người ta phân hệ thống nhận dạng ký tự in thành các loại:
Trang 2220
Dạng 3 Các ký tự viết rời rạc nhưng có thể dích vào nhau
Dạng 4 Các ký tự viết liền nhau
Dạng 5 Kết hợp giữa viết liền nhau, rời rạc không dính nhau và rời rạc dính nhau
Đối với dạng thứ nhất, việc tách các ký đơn giản và cho kết quả nhận dạng cao Đối với dạng này, vì khoảng các giữa các ký tự là như nhau nên sau khi
Trang 2321
nhận dạng ta phải xác định xem các ký tự nào thuộc cùng một từ Đối với tiếng việt, sẽ có một số quy tắc giúp ta nhận biết ký tự tiếp theo có nằm trong cùng một từ hay không như số ký tự trong một từ nhỏ hơn 6, các ký tự như “h”, “g”
là các ký tự bắt đầu từ hoặc kết thúc của một từ
Đối với dạng thứ hai, tiến trình tách các từ đơn giản vì các từ không dính nhau Khoảng cách giữa các ký tự cũng khác nhau Các ký tự thuộc cùng một từ
sẽ có khoảng cách nhỏ hơn khoảng cách giữa ký tự kết thúc một từ và ký tự bắt đầu của từ tiếp theo
Đối với dạng thứ ba, nếu là nhận dạng chữ viết tay offline thì tiếp trình cắt các ký tự tương đối khó vì các ký tự có thể đè lên nhau Nhưng đối với chữ viết tay online, ta có thể dễ dàng nhận biết được các ký tự tách biệt bằng một số thuật toán mẹo trên cơ sở hình chữ nhật nhỏ nhất bao quanh mỗi nét bút
Với dạng thứ 4, gần như một từ được tạo bởi một nét bút đơn Giai đoạn cắt cắt ký tự khỏi từ bằng các cách tiếp cận như chiếu theo phưong thẳng đứng hay nối các thành phần với nhau đôi khi không hiệu quả Trong một số trường hợp việc cắt sẽ không cho kết quả chính xác, khi đó ta phải cần kết hợp thêm yếu tố ngữ cảnh ví dụ như chữ “u” và “v”, “I” và “1” Các thuật toán cắt từ sẽ được đề cập tại phần sau của luận văn
Với dạng thứ 5, các ký tự được viết dưới dạng rời rạc sẽ được tách ra bởi thuật toán mẹo như ở dạng 3 Các ký tự viết theo dạng 4 sẽ được tách nhờ thuật toán tách ký tự Để quyết định xem có tách ký tự hay không ta sẽ tính kích thước trung bình của mỗi ký tự, nếu kích thước của một nét bút có chiều rộng lớn hơn kích thước trung bình của một ký tự thì nó ở dạng 4
Trong nhận dạng chữ viết tay, có rất nhiều yếu tố ảnh hưởng tới dữ liệu thu nhận được từ người viết Người ta chia các yếu tố này thành hai loại
1 Các yếu tố cảm giác: Liên quan đến vấn đề con người đọc như thế nào, đến khả năng con người có thể nhận ra các đối tượng có hình dáng khác nhau là một đối tượng
Trang 24Một số chữ khi viết đỉnh của của ký tự thành thòng lọng nhỏ sẽ thay đổi cấu trúc của ký tự
Hình 1.4 Các cách viết khác nhau cho cùng ký tự N
Hình 1.5 A) Thòng lọng, B) Thòng lọng bị thu nhỏ, C) Thòng lọng chuyển
thành đỉnh
Hình 1.6 Thay đổi cấu trúc của ký tự thành dạng có thòng lọng
Trang 26Việc xử lý nét bút trễ trong luận văn này được thực hiện bằng các thuật toán mẹo, các nét bút trễ được phát hiện dựa vào đặc trưng là thường có số điểm ngắn và thường được viết ở trên, ở dưới các nét bút cùng nằm trên vùng viết Hình sau minh họa một ví dụ xử lý các nét bút trễ
Theo [3], việc xử lý các nét bút trễ sẽ tăng độ chính xác trong quá trình nhận dạng lên khoảng 0.5%
2.2 Lấy mẫu
Các ký tự khi thu nhận có kích thước khác nhau và số điểm tạo thành ký tự khác nhau và khoảng cách giữa các ký tự cũng khác nhau Để tăng độ chính xác trong quá trình nhận dạng, các ký tự này phải được biểu diễn bởi các điểm khác sao cho khoảng cách giữa chúng là tương đối bằng nhau
Hình 2.1 Xóa các ký tự trễ
Trang 2725
Trước khi lấy mẫu, các ký tự phải có cùng chiều cao với nhau và giữ cùng tỉ
lệ với ký tự gốc Với những ký tự có chiều cao vô cùng nhỏ so với một ký tự thông thường như “.,-“ chúng sẽ không được chuẩn hóa chiều cao Các bước để lấy mẫu bằng nhau của một ký tự được thực hiện như sau:
Lấy mẫu bằng nhau
Ký tự được lấy mẫu Hình 2.2: Các bước thực hiện để lấy mẫu bằng nhau
Trang 282 / 3
3
2 /
i i
e
e w
Khi áp dụng bộ lọc Gaussian, các điểm quan trọng như các điểm cuối của nét bút hoặc các điểm cao của đường cong sẽ bị thay đổi, do đó để không làm mất các đặc trưng quan trọng này, các điểm quan trọng sẽ được xác định trước khi lấy mẫu và áp dụng bộ lọc Gaussian và không thay đổi các điểm đó khi lấy mẫu
Hình sau đây minh họa ký tự “a” sau mỗi bước xử lý
Hình 2.3 Minh họa các bước lấy mẫu cho ký tự “a” (a) Ký tự gốc, (b) Sau khi chuẩn hóa kích thước và căn giữa, (c) Sau lần lẫy mẫu thứ nhất, (d) Sau khi áp dụng bộ lọc Gaussian và (e) sau lần lấy mẫu cuối cùng
Trang 2927
2.3 Hiệu chỉnh lỗi trong quá trình viết chữ
2.3.1 Các lỗi thường gặp trong quá trình viết
Trước khi thảo luật về các phương thức tránh lỗi hoặc hiệu chỉnh lỗi trong
hệ thống nhận dạng chức trực tuyến, chúng ta sẽ xem xét các lỗi thường dẫn đến việc nhận dạng sai dựa trên các nghiên cứu trong tài liệu [23] gồm:
Các từ con người dễ dàng nhận dạng nhưng bằng thuật toán khó có thể nhận dạng
Sai lỗi chính tả
Xóa sửa ký tự
Các hình biểu diễn ký tự không rõ ràng
2.3.2 Các lỗi trong hệ thống nhận dạng chữ viết tay trực tuyến
Trong thống kê tại tài liệu [1], tác giả đã thử nghiệm với hệ thống cơ sở dữ liệu lớn gồm 3466 từ đơn và 3410 dãy ký tự, mỗi dãy gồm 8 từ Dữ liệu được thu thập ngẫu nhiên trên thiết bị số hóa từ nhiều người viết khác nhau Người viết được yêu cầu viết các từ ngẫu nhiên trên màn hình máy tính, các từ này có thể bị xiên xẹo, sai lệch vì người viết không cần phải sửa lại các lỗi trong quá trình thu thập dữ liệu
Dựa vào các loại lỗi đã được đề cập ở trên, tác giả đã phân tích dữ liệu và đưa ra thống kê là khoảng 13% từ và 23% dãy các từ chứa lỗi Trong các lỗi này, có nhiều lỗi xảy ra do người dùng cố gắng hiệu chỉnh lỗi mặc dù không được yêu cầu làm điều đó
Từ những số liệu thống kê đó, chúng ta phân loại được các loại hiệu chỉnh lỗi trong quá trình nhận dạng chữ viết tay gồm 3 loại:
Xóa ( Xem hình 2.4)
Trang 3028
Viết đè
Hoàn thành và chèn
2.3.3 Hiệu chỉnh lỗi viết tay on-line
Đầu vào S = ((x0,y0,p0), (x1,y1,p1), (x2,y2,p2), , (xn,yn,pn)) chứa lỗi do quá trình sửa lỗi của người viết gây ra sẽ được chuyển thành dạng S* = ((x*0,y*0,p*0), (x*1,y*1,p*1), (x*2,y*2,p*2), ., (x*n,y*n,p*n)) có thể được nhận dạng được Trong S* tất các các tọa độ của một ký tự sẽ được nối với một ký tự khác(nếu có) theo thứ tự tạo nên chữ và các lỗi viết tay sẽ bị xóa khỏi tập S
Hình 2.4 Ví dụ về sửa lỗi “Xóa”
Hình 2.5 Ví dụ về sửa lỗi “Viết đè”
Hình 2.6 Ví dụ về loại lỗi “hoàn thành” và “chèn”
Trang 3129
Việc nhận dạng xem người dùng hiệu chỉnh lỗi theo một trong 3 loại nào kể trên khó hơn nhiều so với việc xử lý ký tự bị “làm chậm” Ví dụ, chúng ta không thể xác định được nét bút bị trễ khi viết ký tự t và việc xóa ký tự viết sai
“l” bằng cách gạch ngang qua ký tự qua nó mà không sử dụng các thông tin về ngữ cảnh hoặc các thông tin phản hồi từ người viết
Để giải quyết các vấn đề trên, chúng ta xử lý lỗi chỉnh sửa tại mức tiền xử
lý Như vậy trong quá trình tương tác với người viết, hệ thống có thể xử lý các lỗi chỉnh sửa của người viết tại mức tiền xử lý Chúng ta sử dụng các thuật toán heuristics để phát hiện, phân loại và xử lý các lỗi do người dùng hiệu chỉnh lỗi mặc dù có thể việc xử lý này có thể không mang lại thành công( Chiếm tỉ lệ ít hơn so với khả năng thành công) Việc sử dụng các thuật toán heuristics sẽ giúp chúng ta cài đặt nhanh hơn và đáp ứng được bộ nhớ cũng như tốc độ xử lý của các các thiết bị cầm tay có tốc độ xử lý và bộ nhớ đang còn hạn chế
Để giảm việc xử lý và và nâng cao độ chính xác khi xử lý các lỗi do người viết chỉnh sửa chúng ta cũng có thể cung cấp các cơ chế hiệu chỉnh lỗi khác nhau để tăng khả năng mềm dẻo của chương trình Xem xét tình huống nếu người viết viết ký tự „l” và viết tiếp nét gạch nganh lên ký tự đó trước khi ký tự
đó được nhận dạng, sẽ rất khó để ta có thể phát hiện tình huốn đó có phải thuộc loại chỉnh sửa “Xóa” hay không Nhưng nếu người dùng gạch ngang 3 gạch thì chúng ta có thể xếp loại ký tự đó thuộc loại chỉnh sửa “Xóa”
Để chuyển S thành S*, hệ thống phải xác định được các điểm cần phải loại
bỏ khỏi tập S và các cặp tọa độ cần phải được chèn vào các vị trí khác Trong trường hợp xóa, các tọa độ thuộc ký tự hay cả từ bị xóa phải bị loại bỏ Trong trường hợp viết đè, ta phải loại bỏ phần bị viết đè khỏi dãy các điểm trong S và phần viết đè sẽ được chèn vào vị trí thích hợp trong dãy Trong trường hợp
“chèn” hoặc “hoàn thiện”, ta không phải xoá bất kỳ toạ độ nào trong S mà chỉ cần chèn các điểm mới vào vị trí thích hợp trong S Việc loại bỏ các điểm và chèn thêm các điểm vào được thực hiện trong trong sự kiện Pen-Up
Trang 32} , ,
{ min
Kiểm tra hiệu chỉnh
Xoá
Xoá nét bút
chỉnh Ghi đè
Kiểm tra hiệu chỉnh Hoàn thiện/Chèn
Trang 3331
Đầu tiên, hệ thống kiểm tra xem nét bút có phải là nét bút xoá hay không Việc kiểm tra sẽ được thực hiện bằng cách so sánh đặc trưng của nét bút được xem là hiệu chỉnh với tất cả các nét bút còn lại Nết có sự khác biệt lớn khi so sánh, nét bút hiệu chỉnh này sẽ được xem là nét bút “Xoá” Thuật toán mẹo sau đây dùng để kiểm tra xem nét bút hiệu chỉnh có phải là nét bút “Xoá” hay không
|
|max
|
|
1 1
1
n i
n i i
r j
r j
Với mỗi nét bút được phân loại là nét hiệu chỉnh, ta kiểm tra số điểm của nét hiệu chỉnh, nếu thấy số điểm tạo thành nét hiệu chỉnh nhiều hơn số điểm của một nét bút thông thường, thì nét bút ấy được phân loại là nét “Xóa”
Nếu R là tập các điểm của nét được coi là nét hiệu chỉnh và R_ là tập các điểm nằm trên cùng vùng trong R Khi đó R được coi là nét xóa nếu:
Số lượng điểm trong R > Số lượng các điểm trong
Trang 3432
nhật bao quanh nét bút hiệu chỉnh với hình chữ nhật của các nét bút còn lại Nếu thấy có sự giao nhau nhiều giữa hai hình chữ nhật, nét bút hiệu chỉnh đó có thể được coi là nét bút viết đè
Sau khi phát hiện ra nét bút hiệu chỉnh là nét bút viết đè Tiếp theo ta phải chèn nét bút viết đè vào vị trí thích hợp.Vị trí này được xác định bằng cách xác định vùng chứa hai điểm thấp nhất của vùng bị đè
Nếu nét bút hiệu chỉnh không được phân loại là nét xóa hoặc nét viết đè, nét bút hiệu chỉnh đó sẽ được xem là nét bút chèn hoặc nét bút hoàn thành Nét bút hiệu chỉnh đó sẽ được chèn vào vị trí thích hợp trong S
2.4 Làm trơn
Để làm trơn các điểm thu được của mỗi nét bút, ta thay thế giá trị của các điểm thu được ở đầu vào bằng giá trị được tính bởi các điểm xung quanh theo công thức:[3]
x t x t
x N
t x
2
) (
) 1 ( ) ( ) 1 (
) (
y t y t
y N
t y
2
) (
) 1 ( ) ( ) 1 (
) (
Tham số là giá trị góc được tạo bởi hai đường cong trước và sau của (x(t),y(t)) Tham số sẽ giúp tránh làm trơn các cạnh nhọn tại đó có sự thay đổi đột ngột hướng viết Việc làm trơn sẽ làm tăng độ chính xác của kết quả nhận dạng lên khoảng 0.5%
Hình 2.8: Chữ “Clintor” sau khi được làm trơn
Trang 35Để tránh trường hợp xóa điểm ảnh sẽ tách vùng điểm đen liên tục thành hai vùng Trước khi xóa thuật toán sẽ kiểm tra xem điểm ảnh cần xóa có nằm trong
ma trận khôi phục hay không Nếu có thì điểm ảnh đó sẽ không bị xóa
Các bước của thuật toán được trình bày như sau:
Bước 1: Tạo một bảng tìm kiếm gồm các ma trận 3 * 3 như sau:
Trang 3634
6
7
8 Không có
\Bước 2 Tính chỉ số cho mỗi cửa sổ 3*3 Việc tính chỉ số này sẽ giúp cho
thuật toán thực hiện nhanh hơn Chỉ số của mỗi cửa sổ được tính theo công thức:
3 2 1
4 0
5 6 7
Chỉ số = a0 * 20
+ a1*21 + a2*22 + a3*23 + a4*24 + a5*25 + a6*26 + a7*27
Bước 3: Sử dụng các chỉ số được tính ở bước 2 và kiểm tra xem có điểm
nào có thể loại bỏ được hay không Nếu không có, chuyển sang bước 5
Bước 4: Kiểm tra chiều ngang của ma trận có điểm có khả năng loại bỏ Nếu chiều rộng của nó nhỏ hơn 2 pixel, thì xóa điểm đó Ngược lại kiểm tra xem điểu có khả năng loại bỏ được có nằm trong ma trận khôi phục hay không
Ma trận khôi phục gồm 7 ma trận như sau:
Trang 37tự sẽ làm mất đi một số đặt trưng của ký tự đó
Giả sử ký tự ban đầu có kích thước m1 * n1, ta sẽ đưa kích thước của ký tự
đó về dạng n * n Mỗi điểm ảnh của ảnh kết quả sẽ lấy giá trị tại ảnh gốc theo công thức:
a‟ij = a (i * m1/ n) (j*n1/n)
Hình 2.9 7 ma trận khôi phục x ký hiệu cho bít có thể có giá trị bất kỳ
Hình 2.10 Minh họa cho thuật toán làm mảnh
(i,j)
(i‟,j‟) Hình 2.11 Ánh xạ giữa các điểm
Trang 3836
Trong quá trình chuẩn hóa kích thước, để tránh hiện tượng răng cưa ta có
thể dùng phép nội suy Billinear(dựa trên giá trị trung bình của 4 điểm ảnh gần
nó nhất) hay Bicubic(dựa trên giá trị trung bình của 16 điểm ảnh gần nó nhất)
2.7 Nội suy các điểm bị mất
2.7.1 Sử dụng đường cong Bezier
Khi thiết bị phần cứng có hiệu năng thấp hoặc do tốc độ viết của người viết quá nhanh, thiết bị thu thập dữ liệu đầu vào không thể thu thập tất cả các điểm cần thiết, điều này sẽ làm ảnh hưởng đến cấu trúc của từ cần nhận dạng
Trong bước tiền xử lý, chúng ta sẽ nội suy các điểm bị mất do các nguyên nhân kể trên bằng các sử dụng đường cong Bezier Khi khoảng cách giữa hai điểm p1, p2 vượt qua một ngưỡng Ta sẽ tìm hai điểm điều khiên nằm giữa hai điểm p1, p2 dựa vào hướng tạo bởi p0,p1 và p2, p3 Từ 4 điểm này, ta sẽ xây dựng phương trình đường cong Bezier và nội suy ra tất cả các điểm còn lại
Giả sử đường con Bezier được tạo bởi hai điểm cuối E1(x1,y1) và E2(x2,y2)
và hai điểm điều khiển C1(x3,y3) và C2(x4,y4) Các điểm trên đường cong Bezier thỏa mãn phương trình bậc 3 sau đây:
X(t) = ax t3 + bxt2 + cxt +dx
Hình 2.12 Chuẩn hóa kích thước của ký tự khi chuyển thành dạng nhị phân
Trang 392 3
2 3
y y y
c t b t a
c t b t a dt dX dt dY dX
dY
Khi t =1, C2E2 =
1 2
2
2 3
2 3
y y y
c t b t a
c t b t a dt dX dt dY dX
1 3
x x
y y
4 2
3
2 3
x x
y y c b a
c b a
x x x
y y y
Trang 4038
Theo đánh giá[3], tiến trình xử lý này sẽ làm tăng độ chính xác trong quá trình nhận dạng lên khoảng 15% đối với các trường hợp thiết bị phần cứng có hiệu năng thấp hoặc do người viết quá nhanh
2.7.2 Thuật toán vẽ đường thằng Bresenham
Trong các bước xử lý tiếp theo như tách từ, tách ký tự, các thuật toán có đầu vào là ma trận nhị phân Do đó ta cần phải chuyển các điểm ảnh thu được của người viết vào một ma trận nhị phân Nếu khoảng cách giữa hai điểm lớn hơn ngưỡng ta sẽ tìm các điểm bị mất bằng đường cong Bezier(Xem phần trên), ngược lại ta sẽ tìm các điểm bị mất bằng thuật toán vẽ đường thằng Bresenham