T T
Loại
Phần tử XML (thẻ và thuộc tính)
Tên thẻ id W H x_resolution y_resolution
1 Mã số mô hình FormModel X
2 Thông tin về ảnh FormDocument X X X X
Bảng 4.5: Các thẻ chứa thông tin vùng nhập.
S T T
Loại Tên thẻ Phần tử XML (thẻ và thuộc tính)id key type X Y W H num label
1 CheckBox CheckBoxField X X X X X X X 2 TextBox TextBoxField X X X X X X X 3 RectBox RectBoxField X X X X X X X 4 Tooth ToothField X X X X X X X 5 Line LineField X X X X X X X 6 CheckBoxArea InputCheckBoxArea X X X X X X X 7 TextBoxArea InputTextBoxArea X X X X X 8 RectBoxArea InputRectBoxField X X X X X 9 ToothArea InputToothField X X X X X 10 LineArea InputLineField X
Mô hình biểu mẫu được mô tả bởi tập tin XML có dạng chung như sau:
Mỗi vùng nhập đều có nhãn. Thông tin về nhãn và cấu trúc được xác định sau quá trình phân tích là hai danh sách rời rạc. Để xây dựng mô hình biểu mẫu cần xác định nhãn của từng vùng nhập. Việc kết hợp vùng nhập và nhãn tương ứng là khâu chuẩn bị nội dung sau cùng để tạo một tập tin mô hình.
4.1.3.3. Kết hợp thông tin ô nhập và nhãn tương ứng
Máy tính không thể “hiểu” nội dung của nhãn nên việc kết hợp (ánh xạ) nhãn vào vùng nhập tương ứng sẽ dựa vào thông tin tọa độ, tức xét vị trí của nhãn so với vùng nhập.
Một số đặc điểm trong mối quan hệ giữa nhãn và vùng nhập:
• Tất cả các vùng nhập đều có nhãn và mỗi vùng nhập chỉ có một nhãn. <?xml version="1.0"?>
<FormModel id="mã_số_mô_hình"> <LogicalModel>
<FormDocument x_resolution="300" y_resolution="300" width="1250" height="1770"> <!--Các phần tử mô tả vùng nhập-->
</FormDocument> </LogicalModel> <FormConstraints/> </FormModel>
Hình 4.6: Tương quan về vị trí giữa nhãn và cấu trúc ô nhập
• Có ba vị trí kết hợp của nhãn với vùng nhập.
• Giữa nhãn và vùng nhập không chứa nhãn khác xét theo ba hướng: trái, phải và trên.
• Nhãn và vùng nhập được bố trí theo dòng, thứ tự từ trên xuống dưới và từ trái qua phải. Tương tự như vị trí các từ trong văn bản.
• Nhiều vùng nhập có thể có cùng một nhãn (trong trường hợp một vùng nhập gồm nhiều dòng) và mỗi vùng nhập có thể chứa các vùng nhập con.
• Độ ưu tiên vị trí của nhãn: ưu tiên 1 là bên trái, ưu tiên 2 là phía trên, ưu tiên 3 là bên phải.
Dựa vào các đặc điểm trên, một giải thuật ghép nhãn với ô nhập tương ứng với ý tưởng chính như sau:
(1) Sắp xếp hai danh sách nhãn và cấu trúc ô nhập tăng dần theo tọa độ Y. (2) Lấy từng phần tử trong danh sách cấu trúc ô nhập “trượt” trong danh sách nhãn. Quá trình “trượt” sẽ dừng khi phần tử cấu trúc thỏa mãn các điều kiện ràng buộc nêu trên với nhãn. Khi đó sẽ xác định được thông tin một vùng nhập.
Giải thuật ghép nhãn với ô nhập
Bước 1: tìm tất cả các nhãn bên trái ô nhập. Nếu có, chọn nhãn có khoảng cách gần nhất để ghép và kết thúc. Nếu không, nhảy đến Bước 2.
Bước 2: tìm tất cả các nhãn phía trên ô nhập. Nếu có, chọn nhãn có khoảng cách gần nhất để ghép và kết thúc. Nếu không, nhảy đến Bước 3.
Bước 3: tìm tất cả các nhãn bên phải ô nhập, nếu có chọn nhãn có khoảng cách gần nhất để ghép.
Điều kiện để nhãn nằm bên TRÁI ô nhập:
- x1 + w1 < x2
- tập các điểm từ {y1 ->y1+h1} giao với tập {y2 ->y2+h2} khác rỗng (để đảm bảo 2 vùng cùng nằm trên 1 dòng)
- d = x2 - (x1+w1)
Điều kiện để nhãn nằm bên PHẢI ô nhập:
- x2 + w2 < x1
- tập các điểm từ {y1 ->y1+h1} giao với tập {y2 ->y2+h2} khác rỗng (để đảm bảo 2 vùng cùng nằm trên 1 dòng)
- d = x1 - (x2+w2)
Điều kiện để nhãn nằm bên TRÊN ô nhập:
- y1 + h1 < y2
- tập các điểm từ {x1 ->x1+w1} giao với tập {x2 ->x2+w2} khác rỗng (để đảm bảo 2 vùng cùng nằm trên 1 cột)
- d = y2 - (y1+h1)
Kết quả sẽ có nhiều nhãn nằm bên trái (trên, phải). Nên kết quả trả về sẽ là một danh sách các nhãn, trong danh sách đó lấy nhãn nào có khoảng cách nhỏ nhất ghép với ô nhập.
4.2. Nhận dạng biểu mẫu
4.2.1. Phương pháp nhận dạng biểu mẫu
Có nhiều phương pháp nhận dạng biểu mẫu đã được đề xuất, thông dụng nhất là phương pháp nhận dạng dựa trên cấu trúc hình học. Nhận dạng biểu mẫu cũng có thể xem như là một bài toán so khớp và tìm kiếm ảnh; trong đó hai hoặc nhiều ảnh của một đối tượng được nhận từ các hệ thống cảm ứng khác nhau hoặc ở các thời điểm, khung nhìn khác nhau được so sánh và xác định độ tương đồng.
Casey et al.[34] mô tả một phương pháp phát triển tại IBM cho một lớp bài toán biểu mẫu sử dụng chữ in (machine-printed) trong lĩnh vực kinh doanh. Một ảnh biểu mẫu sau khi được điền thông tin sẽ được đưa vào hệ thống nhận dạng sử dụng mạng neuron trên cơ sở các đặc trưng về đường thẳng ngang và dọc. Các vùng dữ liệu được trích xuất sẽ được diễn dịch thành ký tự text bằng một hệ thống nhận dạng ký tự quang học (OCR). Cuối cùng các thành phần cố định của biểu mẫu sẽ được loại bỏ và giữ lại các nội dung điền vào.
Duygulu and Atlay [36] đưa ra phương pháp biểu diễn biểu mẫu như một cây X-Y có kế thừa, với quy ước là biểu mẫu chỉ chứa các vùng nhập dạng chữ nhật rời nhau. Phương pháp này xử lí rất hiệu quả đối với các biểu mẫu có vùng nhập được giới hạn vào các ô (box). Giải thuật nhận dạng dựa vào các cây X-Y không ứng dụng được trong trường hợp biểu mẫu chứa một phần hoặc toàn bộ cấu trúc ô nhập không tách rời nhau. Thậm chí 2 biểu mẫu khác nhau có cấu trúc phân cấp tương tự cũng bị đụng độ.
Taylor et al. [37] dùng các tính chất bất biến trong tịnh tiến và quay đối với các đặc trưng giao cắt giữa các đường thẳng để nhận diện. Ảnh được chia thành 9 vùng và đặc trưng mỗi vùng là số lượng các góc giao cắt và kiểu của chúng. Đặc trưng này được sử dụng cả hai giai đoạn nhận dạng và đăng ký.
Fan and Chang [35], đưa ra hướng tiếp cận về vấn đề nhận dạng biểu mẫu dựa vào 3 ma trận: ma trận chứa mối quan hệ của các đường thẳng dọc, ngang và ma trận chứa giao điểm của các đường thẳng dọc và ngang. 3 ma trận này được xem như mẫu (template) của 1 biểu mẫu, được lưu sẵn trong cơ sở dữ liệu. Biểu mẫu mới được trích đặc trưng và nhận dạng bằng cách so khớp với các mẫu biểu mẫu có sẵn. Ngưỡng độ tương đồng được dùng để xác định kết quả nhận dạng. Về mặt lí thuyết cách tiếp cận này áp dụng cho các biểu mẫu có ô nhập dạng ô chữ nhật hay đường thẳng. Tuy nhiên, giải thuật này lại phụ thuộc rất nhiều vào các ngưỡng giá trị rất khó thiết lập trong thực tế.
Trong đề tài này chúng tôi đề xuất nhận dạng biểu mẫu dựa trên từ khóa (keywords), không dựa trên cấu trúc hình học. Với hướng tiếp cận này thông tin về
loại biểu mẫu đã được xác định trước trong các mô hình biểu mẫu. Mỗi mô hình biểu mẫu sẽ chứa một bộ từ khóa, dựa vào kết quả việc so khớp bộ từ khóa này với từ khóa trích xuất từ ảnh biểu mẫu để nhận dạng.
4.2.2. Nhận dạng biểu mẫu bằng từ khóa
Ý tưởng chính của phương pháp này là, đối với mỗi biểu mẫu cần nhận dạng, duyệt từng mô hình biểu mẫu, dựa vào bộ từ khóa và tọa độ tương ứng của nó, dùng chương trình Tesseract OCR vùng ảnh xác định bởi tọa độ từ khóa, lấy kết quả so khớp với từ khóa trong mô hình. Căn cứ trên độ tương đồng cao nhất sẽ xác định được loại biểu mẫu.
Vấn đề so khớp biểu mẫu với mô hình được quy về bài toán so khớp hai chuỗi ký tự (strings matching). Tức đo độ tương đồng giữa từ khóa trong mô hình và từ khóa trích xuất từ biểu mẫu, độ tương đồng hai chuỗi càng cao thì biểu mẫu càng khớp với mô hình.
Với cách so sánh hai chuỗi ký tự theo cách thông thường kết quả sẽ chỉ ra hai trạng thái: hai chuỗi hoặc giống nhau hoặc khác nhau, không có giá trị trung gian. Vì từ khóa trích xuất từ ảnh không thể chính xác 100% nên có thể trong nhiều trường hợp không tìm được một mô hình nào khớp với biểu mẫu cần nhận dạng (hoặc nhiều mô hình lại có chung độ tương đồng với một biểu mẫu) mặc dù biểu mẫu đã có một mô hình tương ứng trong cơ sở dữ liệu mô hình rồi. Đây là việc không mong muốn. Một hướng tiếp cận khác trong việc so khớp hai chuỗi là đo độ tương đồng, tức đo mức độ giống nhau giữa hai chuỗi ký tự hay tìm một khoảng cách (distance) giữa hai chuỗi ký tự.
Hiện có nhiều phương pháp đo độ tương đồng của hai chuỗi ký tự [32]. Trong đề tài này chúng tôi dùng giải thuật đo độ tương đồng hai chuỗi được đề xuất bởi nhà khoa học Vladimir Levenshtein vào năm 1965, hay còn gọi tắt là giải thuật Levenshtein hay khoảng cách Levenshtein (Levenshtein Distance)[33].
Giải thuật Levenshtein được viết như sau:
Đầu vào: Hai chuỗi ký tự s, t.
Đầu ra: độ tương đồng của hai chuỗi s và t. Giải thuật:
n = len(s);// Gán n = độ dài của chuỗi s
m = len(t); // Gán m = độ dài của chuỗi t
int d[m,n];// Xây dựng một ma trận d gồm m dòng, n cột
for(i = 0; i < n; i++) // duyệt từng ký tự trong chuỗi s
for(j = 0; j < n; j++){//duyệt từng ký tự trong chuỗi t
if s[i] = t[j] cost = 0; // nếu hai ký tự giống nhau thì độ tương đồng =0, ngược lại = 1;
else cost = 1;
// Cập nhật giá trị mãng d bằng cách tìm giá trị nhỏ nhất trong ba giá trị.
d[i,j] = min(d[i-1,j] + 1,d[i,j-1] + 1,d[i-1,j-1] + cost); }
return d[m,n]; // độ tương đồng hai chuỗi ký tự
Kết quả của giải thuật là một số nguyên, giá trị càng nhỏ thì độ tương đồng càng cao, giá trị bằng zero là hai chuỗi giống nhau hoàn toàn. Ví dụ: ta có hàm LD(s1,s2) đo độ tương đồng hai chuỗi s1, s2 cài đặt theo giải thuật trên, khi đó LD(“information”, “information”) = 0; LD(“information”, “formatiou”) = 3.
Với việc dùng giải thuật đo độ tương đồng Levenshtein Distance (LD), giải thuật đo độ khớp nhau giữa một biểu mẫu và một mô hình được viết như sau:
Đầu vào: ảnh biểu mẫu (inputForm), mô hình biểu mẫu (labelList – danh
sách từ khóa).
Đầu ra: độ khớp của ảnh biểu mẫu và mô hình.
Giải thuật:
keyword = “”;// chuỗi ký tự chứa kết quả OCR vùng ảnh chứa từ khóa
for(i = 0; i < labelList.length(); i++){// duyệt từng từ khóa trong mô hình
// OCR vùng ảnh có tọa độ xác định bởi từ khóa của mô hình
keyword = tesseractOCR(labelList[i].bound, inputForm);
// đo độ tương đồng giữa từ khóa mô hình và từ khóa vừa OCR và cộng dồn độ tương đồng của tất cả từ khóa
d = d + LD(labelList[i].keyword, keyword); }
return (d/labelList.length());// kết quả: độ tương đồng trung bình.
Giải thuật nhận dạng biểu mẫu:
Đầu vào: ảnh biểu mẫu (inputForm), danh sách mô hình biểu mẫu (modelList).
Đầu ra: độ khớp của ảnh biểu mẫu và mô hình.
Giải thuật:
max = 0; // độ tương đồng (khớp) cao nhất
i d = 0; // mã số mô hình
for(i = 0; i < modelList.length(); i++){// duyệt từng mô hình
t = similarity(modelList[i], inputForm); // đo độ tương đồng
if( t > max){
max = t;// tìm độ tương đồng cao nhất
id = i; // vị trí của mô hình có độ khớp cao nhất
} }
4.3. Thực nghiệm
Mục tiêu của phần thực nghiệm là xây dựng một công cụ mô hình hóa biểu mẫu trực quan và đánh giá hiẹu quả giải thuật nhận dạng.
4.3.1. Mô hình hóa:
Công cụ mô hình hóa có chức năng chính là:
1. Tự động trích xuất nhãn, cấu trúc vùng nhập và ghép nhãn với vùng nhập tương ứng.
2. Tạo mới, cập nhật một mô hình.
3. Hỗ trợ điều chỉnh thủ công khi kết quả xử lí tự động chưa đạt yêu cầu, chỉnh.
4.3.2. Nhận dạng biểu mẫu
4.3.2.1. Mô tả tập dữ liệu
Mục tiêu thực nghiệm nhằm kiểm tra xem tỉ lệ nhận dạng đúng của phương pháp được đề xuất. Đặc biệt kiểm tra tỷ lệ nhận dạng đúng đối với những biểu mẫu có cấu trúc tương tự nhau (hình 4.10).
Để thực hiện mục tiêu trên chúng tôi xây dựng bộ dữ liệu kiểm tra bao gồm mười loại biểu mẫu, mỗi loại mười người điền, tổng cộng một trăm biểu mẫu để kiểm chứng. Chúng tôi dùng máy photocopy có chức năng quét ảnh để số hóa biểu mẫu. Độ phân giải ảnh biểu mẫu là 300dpi, ảnh quét với định dạng .TIFF không nén. Sau khi khử nhiễu và chống nghiêng mới tiến hành nhận dạng.
4.3.2.2. Phương pháp kiểm chứng
Tỉ lệ nhận diện đúng: được đo bằng tỉ lệ của tổng số biểu mẫu nhận diện
đúng trên tổng số biểu mẫu được dùng để thực nghiệm (100 mẫu).
Phương pháp nhận dạng biểu mẫu dựa vào đặc trưng từ khoá không phụ thuộc vào dữ liệu viết tay được điền vào. Mỗi từ khoá có hai thuộc tính: dữ liệu văn bản và toạ độ. Nên đối với những biểu mẫu có cấu trúc tương tự có thể có nhiều từ khoá có phần văn bản giống nhau nhưng toạ độ khác nhau hoặc ngược lại. Kết quả kiểm chứng trên một trăm biểu mẫu, tỷ lệ nhận dạng đúng khoảng 70%.
Chương 5: NHẬN DẠNG KÝ TỰ VIẾT TAY OFFLINE VỚI SVM
5.1. Giới thiệu
Giai đoạn sau cùng của một hệ thống xử lí biểu mẫu là nhận dạng dữ liệu điền vào. Trong đề tài này là việc nhận dạng ký tự viết tay. Nhận dạng ký tự viết tay hiện vẫn là bài toán nhiều thách thức trong giới nghiên cứu. Bài toán nhận dạng chữ offline viết tiếng Việt có dấu là một trong số đó.
Đã có nhiều công trình nghiên cứu ứng dụng các phương pháp học máy vào bài toán nhận dạng chữ viết tay tiếng Việt như mô hình Markov ẩn (HMM – Hidden Markov Model), mạng nơ ron (NN - Neural Network),... tuy nhiên kết quả nhận dạng theo các phương pháp này đạt độ chính xác không cao. Trong những năm gần đây, phương pháp máy véc tơ hỗ trợ (SVM - Support Vector Machines) [39] đã được áp dụng rộng rãi trong trong nhiều lĩnh vực, trong đó có lĩnh vực nhận dạng chữ viết tay và được đánh giá là phương pháp học máy tiên tiến, đạt độ chính xác phân lớp cao [38].
Vấn đề nhận dạng ký tự viết tay trong đề tài được thực hiện theo phương pháp đề xuất bởi tác giả Nguyễn Anh Phương và Ngô Quốc Tạo [38], dùng phương pháp SVM để nhận dạng.
5.2. Nhận dạng ký tự viết tay
5.2.1. Đặt vấn đề
Toàn bộ tập ký tự tiếng Việt có tất cả 99 ký tự, bao gồm: các chữ số {0,...,9}, các ký tự không dấu {A, B, C, D, Đ, E, G, H, I, K, L, M, N, O, P, Q, R, S, T, U, V, X, Y} và các ký tự có dấu {Ă, Â, À, Ả, Ã, Á, Ạ, Ằ, Ẳ, Ẵ, Ắ, Ặ, Ầ, Ẩ, Ẫ, Ấ, Ậ, Ê, È, Ẻ, Ẽ, É, Ẹ, Ề, Ể, Ễ, Ế, Ệ, Ì, Ỉ, Ĩ, Í, Ị, Ô, Ơ, Ò, Ỏ, Õ, Ó, Ọ, Ồ, Ổ, Ỗ, Ố, Ộ, Ờ, Ở, Ỡ, Ớ, Ợ, Ư, Ù, Ủ, Ũ, Ú, Ụ, Ừ, Ử, Ữ, Ứ, Ự, Ỳ, Ỷ, Ỹ, Ý, Ỵ}. Bài toán mà chúng tôi đặt ra là chỉ nhận dạng ký tự không nhận dạng chữ số.
5.2.2. Mô hình nhận dạng
5.2.2.1. Tiền xử lí
Sau khi đã khử nhiễu, ảnh được chuẩn hóa về kích thước chuẩn 16×16, đây là kích thước vừa đủ để biểu diễn ảnh ký tự. Việc chuẩn hóa kích thước ảnh được thực hiện theo các bước sau (Hình 5.2) :
Bước 1: Nhị phân hóa ảnh.
Bước 2: Tìm hình chữ nhật R bé nhất chứa các điểm đen trên ảnh. Bước 3: Lấy vùng ảnh I nằm trong hình chữ nhật R.