Tuy nhiên, với sự phát triển không ngừng của khoa học kỹ thuật về phần cứng cũng như phần mềm, các yêu cầu về mặt ứng dụng thực tế của lĩnh vực nhận dạng mẫu ngày càng tăng lên và hiện n
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN&TRUYỀN THÔNG
-
NGÔ MINH HIẾU
TÌM HIỂU PHƯƠNG PHÁP ĐÁNH GIÁ ĐỘ CHÍNH XÁC CỦA CÁC HỆ THỐNG NHẬN DẠNG CHỮ VIỆT
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Thái Nguyên 2015
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN&TRUYỀN THÔNG
===================
NGÔ MINH HIẾU
TÌM HIỂU PHƯƠNG PHÁP ĐÁNH GIÁ ĐỘ CHÍNH XÁC CỦA CÁC HỆ THỐNG NHẬN DẠNG CHỮ VIỆT
Chuyên ngành: Khoa học máy tính
Mã số: 60 48 01 01
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
NGƯỜI HƯỚNG DẪN KHOA HỌC
TS NGUYỄN THỊ THANH TÂN
Thái Nguyên 2015
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan rằng bản luận văn này là tự thân nghiên cứu và hoàn thành dưới sự hướng dẫn khoa học của TS Nguyễn Thị Thanh Tân Nếu có gì
vi phạm tôi xin hoàn toàn chịu trách nhiệm
Thái Nguyên, ngày tháng năm 2015
Ngô Minh Hiếu
Trang 4LỜI CẢM ƠN
Lời đầu tiên tôi xin gửi lời cảm ơn chân thành và lòng biết ơn sâu sắc tới
TS Nguyễn Thị Thanh Tân, người đã chỉ bảo và hướng dẫn tận tình cho tôi và đóng góp ý kiến quý báu trong suốt quá trình học tập, nghiên cứu và thực hiện luận văn này
Tôi xin trân trọng cảm ơn Ban giám hiệu Trường Đại học Công nghệ Thông tin và Truyền thông, Đại học Thái Nguyên, khoa CNTT đã giúp đỡ và tạo các điều kiện cho chúng tôi được học tập và làm khóa luận một cách thuận lợi
Và cuối cùng tôi xin gửi lời cảm ơn đến gia đình, người thân và bạn bè, những người luôn bên tôi và là chỗ dựa giúp cho tôi vượt qua những khó khăn nhất Họ luôn động viên tôi khuyến khích và giúp đỡ tôi trong cuộc sống và công việc cho tôi quyết tâm hoàn thành luận văn này
Tuy nhiên do thời gian có hạn, mặc dù đã nỗ lực cố gắng hết mình nhưng chắc rằng luận văn khó tránh khỏi những thiếu sót Rất mong được sự chỉ bảo, góp ý tận tình của quý Thầy Cô và các bạn
Tôi xin chân thành cảm ơn!
Thái Nguyên, ngày tháng năm 2015
Ngô Minh Hiếu
Trang 5MỤC LỤC
LỜI CAM ĐOAN 1
LỜI CẢM ƠN 2
MỤC LỤC 3
HÌNH VẼ 5
BẢNG 6
DANH MỤC CÁC TỪ VIÊT TẮT 7
MỞ ĐẦU 8
CHƯƠNG 1 - TỔNG QUAN VỀ NHẬN DẠNG CHỮ 12
1.1.Qui trình chung của một hệ nhận dạng chữ 12
1.1.1.Phân lớp mẫu 12
1.1.2.Nhận dạng văn bản 13
1.2.Tìm hiểu một số phần mềm nhận dạng chữ 16
1.2.1.VnDOCR 16
1.2.2.FineReader 18
1.2.3.OmniPage 20
1.2.4 VietOCR 20
1.3 Những vấn đề ảnh hưởng tới chất lượng của một phần mềm nhận dạng 22
1.3.1.Chữ bị dính, nhòe 23
1.3.2.Văn bản bị đứt hoặc mất nét 24
1.3.3.Văn bản bị nhiễu 25
1.3.4.Văn bản được in với các kiểu font chữ đặc biệt 26
1.3.5.Cỡ chữ quá lớn hoặc quá nhỏ 26
1.4 Kết luận 27
CHƯƠNG 2 - PHƯƠNG PHÁP ĐÁNH GIÁ HIỆU QUẢ CỦA CÁC THUẬT TOÁN NHẬN DẠNG CHỮ VIỆT 28
2.1 Một số khái niệm 28
2.2 Bài toán hiệu chỉnh chuỗi ký tự (string editing) 29
2.3 Thuật toán Ukkonen 34
Trang 62.4 Đánh giá độ chính xác mức ký tự 40
2.5 Đánh giá độ chính xác mức ký tự theo lớp mẫu 45
2.6 Hiệu quả của các ký tự đánh dấu 45
2.7 Độ chính xác mức từ 47
CHƯƠNG 3 :THỰC NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ 52
3.1.Phân tích, cài đặt chương trình 52
3.1.1.Quy trình thực hiện 52
3.1.2.Các cấu trúc dữ liệu 53
3.1.3.Danh sách các từ dừng trong tiếng Việt 55
3.1.4 Danh sách các ký tự đặc biệt 56
3.1.5.Module đánh giá độ chính xác mức ký tự 57
3.1.6.Module đánh giá độ chính xác mức từ 59
3.2.Đánh giá thực nghiệm 66
3.2.1Dữ liệu thực nghiệm 66
3.2.2 Kết quả thực nghiệm 69
3.3.Kết luận chương 3 71
KẾT LUẬN 72
DANH MỤC TÀI LIỆU THAM KHẢO 73
Trang 7HÌNH VẼ
Hình 1.1: Qui trình chung của một hệ thống nhận dạng chữ 15
Hình 1.2 Màn hình làm việc của VnDOCR 17
Hình 1.3 Màn hình kết quả phân tích và nhận dạng ảnh hình 1.7 18
Hình 1.4 Màn hình làm việc của OmniPage 20
Hình 1.5 Màn hình làm việc của VietOCR 21
Hình 1.6 Trường hợp văn bản in đậm 23
Hình 1.7: Một số hình ảnh bị biến dạng của các ký tự 23
Hình 1.8 Hình ảnh các ký tự tiếng Việt bị nhập nhằng phần dấu 24
Hình 1.9 Trường hợp văn bản bị đứt và mất nét 24
Hình 1.10 Hình ảnh của ký tự bị biến dạng do lỗi đứt nét 24
Hình 1.11 Một số dạng nhiễu thường gặp trên văn bản 25
Hình 1.12 Văn bản bị các nhiễu đánh dấu 25
Hình 1.13 Văn bản bị nhiễu do bị chồng chữ ký/con dấu 26
Hình 1.14 Văn bản được in với kiểu font chữ đặc biệt 26
Hình 2.1: Đồ thị G(A,B), với A = zxy và B = xyxz 32
Hình 2.2: Các đường đi trên đồ thị G(A, B) 33
Hình 2.3: Sự tương ứng giữa chuỗi văn bản nhận dạng và văn bản mẫu 42
Hình 2.4: Độ chính xác mức từ 49
Hình 3.1 Quy trình thực hiện của chương trình 52
Hình 3.2: Kết quả đánh giá độ chính xác mức ký tự trên một văn bản tiếng Anh 62
Hình 3.3: Đánh giá độ chính xác mức từ trên 1 file văn bản tiếng Anh 66
Trang 8BẢNG
Bảng 2.1: Giải thuật cho bài toán chỉnh sửa chuỗi 34
Bảng 2.2: Độ chính xác mức ký tự 44
Bảng 3.1 Bảng danh sách các từ dùng trong tiếng Việt 56
Bảng 3.2 Thông tin các thao tác hiệu chỉnh 58
Bảng 3.3 Thông tin về đánh giá độ chính xác mức ký tự 58
Bảng 3.4: Các tập dữ liệu tiếng Anh 67
Bảng 3.5: Các tập dữ liệu Tiếng Việt 68
Bảng 3.6: Độ chính xác mức ký tự trên tập dữ liệu tiếng Anh 69
Bảng 3.7: Độ chính xác mức ký tự trên các tập dữ liệu tiếng Việt 70
Bảng 3.8: Độ chính xác mức từ trêntập dữ liệu tiếng Anh 70
Bảng 3.9: Độ chính xác mức từ tập dữ liệu tiếng Việt 70
Trang 92 LCS Longest common
subsequence
Dãy chung dài nhất
3 OCR Optical Character
Recognition
Nhận dạng ký tự quang học
Trang 10MỞ ĐẦU
1 Tính cấp thiết của luận văn
Nhận dạng mẫu là một ngành khoa học mà vai trò của nó là phân lớp các đối tượng thành một số loại hoặc một số lớp riêng biệt Tuỳ thuộc vào lĩnh vực ứng dụng, các đối tượng có thể ở dạng ảnh, dạng tín hiệu sóng hoặc một kiểu dữ liệu bất kỳ nào đó mà cần phải phân lớp Những đối tượng này được gọi bằng một thuật ngữ chung đó là “mẫu” (pattern) Nhận dạng mẫu đã được biết đến từ rất lâu, nhưng trước những năm 1960 nó hầu như chỉ là kết quả nghiên cứu về mặt lý thuyết trong lĩnh vực thống kê Tuy nhiên, với sự phát triển không ngừng của khoa học kỹ thuật về phần cứng cũng như phần mềm, các yêu cầu về mặt ứng dụng thực tế của lĩnh vực nhận dạng mẫu ngày càng tăng lên và hiện nay nhận dạng mẫu đã được sử dụng trong rất nhiều lĩnh vực như y học, tự động hoá một số qui trình sản xuất công nghiệp, dự báo thời tiết, dự báo cháy rừng,v.v Ngoài ra nhận dạng mẫu còn là thành phần quan trọng trong hầu hết các hệ thống máy tính thông minh được xây dựng để thực hiện việc ra quyết định
Cùng với sự phát triển của nhận dạng mẫu, nhận dạng chữ đã và đang ngày càng trở thành một ứng dụng không thể thiếu được trong đời sống xã hội của con người Nhận dạng chữ là quá trình chuyển đổi từ dạng hình ảnh của một hay nhiều trang ảnh chứa các thông tin văn bản thành tệp văn bản thực sự
có thể soạn thảo được trên máy tính Ngoài ứng dụng số hóa các trang văn bản, tài liệu, hiện tại nhận dạng chữ còn được ứng dụng rộng rãi trong các hoạt động giao dịch hàng ngày và qui trình tự động hóa các công việc văn phòng, chẳng hạn như nhập liệu tự động phiếu chấm thi trắc nghiệm, phiếu điều tra, nhận dạng các dòng địa chỉ trên phong bì thư, nhận dạng nhãn sản phẩm, nhận dạng thông tin cá nhân trên chứng minh nhân, hộ chiếu, card visit,v.v
Trang 11Trên thế giới, bài toán nhận dạng chữ đã được đầu tư nghiên cứu từ những năm 50 của thế kỷ trước Những sản phẩm nhận dạng chữ hiện đã được thương mại hóa rộng rãi trên thị trường, điển hình như ABBYY FineReader
11 (có khả năng nhận dạng được 189 ngôn ngữ khác nhau, kể cả tiếng Việt) Bên cạnh đó, còn có các dòng sản phẩm được tích hợp với phần cứng của máy tính như OmniPage, Omniform, Scanshell, v.v Với lợi thế có một cộng đồng nghiên cứu rộng lớn, từ những năm 1996, Viện nghiên cứu khoa học thông tin (The Information Science Research Institute – ISRI), thuộc trường Đại học Nevada, Las Vegas đã kết hợp với các nhóm nghiên cứu tại Mỹ và Anh để xây dựng một một bộ công cụ đánh giá hiệu quả của các engine nhận dạng (OCRtk) và một cơ sở dữ liệu văn bản mẫu lớn (gồm trên 2229 trang văn bản), đa dạng về chủng loại (sách , báo, tạp chí, fax, thư tín, báo cáo tài chính của các doanh nghiệp, tài liệu khoa học kỹ thuật, văn bản luật, v.v.) và chất lượng Mỗi trang văn bản được quét với lần lượt với 3 ngưỡng độ phân giải 200, 300 và 400 dpi với các mức độ đậm, nhạt khác nhau Ngoài ra, để đánh giá hiệu quả của các thuật toán nhận dạng chữ viết tay còn có các bộ dữ liệu chuẩn như đối với nhận dạng chữ viết tay còn có các bộ dữ liệu chuẩn như MNIST, USPS, v.v
Cùng với xu thế phát triển của thế giới, bài toán nhận dạng chữ Việt cũng đã thu được những kết quả ứng dụng đáng kể, với các sản phẩm thương mại hóa điển hình như sản phẩm VnDOCR (đã được ứng dụng tại hầu hết các
cơ quan, đơn vị trên toàn quốc), sản phẩm FineReader 11 (đã được ứng dụng
để số hóa tài liệu trong các dự án chính phủ điện tử) Tuy nhiên, do mới chỉ thực sự được đầu tư nghiên cứu trong khoảng hơn chục năm trở lại đây nên các sản phẩm nhận dạng chữ Việt chưa thể đáp ứng được hết các yêu cầu của người sử dụng, chẳng hạn như độ chính xác nhận dạng không cao đối với chữ viết tay và các văn bản đầu vào kém chất lượng, chỉ làm việc với ảnh đa cấp
Trang 12xám hoặc ảnh nhị phân có nền đồng nhất, [1] Vì những lý do nêu trên, việc đầu tư nghiên cứu để tiếp tục nâng cao độ chính xác của các thuật toán nhận dạng chữ Việt là một vấn đề thực sự cần thiết, có cả ý nghĩa khoa học lẫn thực tiễn Vấn đề lớn nhất mà hiện nay các nhóm nghiên cứu về nhận dạng chữ Việt đang phải đối mặt là chưa có được một bộ công cụ cũng như cơ sở dữ liệu mẫu chuẩn, phục vụ cho việc thử nghiệm và đánh giá các thuật toán nhận dạng
2 Mục tiêu của luận văn
Nội dung nghiên cứu của luận văn hướng tới 2 mục tiêu chính:
Xây dựng bộ công cụ đánh giá độ chính xác của các phần mềm nhận dạng chữ Việt
Xây dựng cơ sở dữ liệu mẫu chuẩn, phục vụ cho việc nghiên cứu, đánh giá và thử nghiệm các thuật toán nhằm nâng cao chất lượng nhận dạng
Phần thực nghiệm, luận văn sẽ tiến hành đánh giá độ chính xác của một số phần mềm nhận dạng chữ hiện đang được thương mại hóa hoặc công bố rộng rãi trên thị trường như VnDOCR, FineReader, Omnipage, VietOCR
3 Bố cục của luận văn
Các nội dung trình bày trong luận văn được chia thành 3 chương:
Chương I: Tổng quan về nhận dạng chữ
Chương này trình bày tổng quan về bài toán nhận dạng chữ, những yếu
tố ảnh hưởng tới độ chính xác của các phần mềm nhận dạng chữ
Chương II: Phương pháp đánh giá hiệu quả của các phần mềm nhận dạng chữ Việt
Chương này trình bày cơ sở lý thuyết của các độ đo và phương pháp đánh giá chất lượng (độ chính xác) của các hệ thống nhận dạng được đề xuất
Trang 13trên cơ sở bài toán đối sánh hai chuỗi ký tự dựa trên ý tưởng quy hoạch động với họ các hàm mục tiêu được xây dựng từ các chi phí của các bước hiệu chỉnh để biến văn bản được nhận dạng thành văn bản mẫu
Chương III: Thực nghiệm và đánh giá kết quả
Trong chương III, luận văn sẽ mô tả chi tiết quá trình cài đặt chương trình thử nghiệm tự động đánh giá chất lượng (độ chính xác) của các phần mềm (thuật toán) nhận dạng chữ Chương trình được kiểm thử với các phần mềm VnDOCR, FineReader, Omnipage, VietOCR, v.v
Trang 14CHƯƠNG 1 - TỔNG QUAN VỀ NHẬN DẠNG CHỮ
Nhận dạng chữ là lĩnh vực được nhiều nhà nghiên cứu quan tâm và cho đến nay lĩnh vực này cũng đã đạt được nhiều thành tựu cả về mặt lý thuyết lẫn ứng dụng thực tế Chương này sẽ trình bày các khía cạnh tổng quan về bài toán nhận dạng chữ Trong đó, phần đầu tiên của chương sẽ đề cập đến các thao tác xử lý cơ bản trong qui trình chung của bài toán nhận dạng chữ Phần tiếp theo là những tìm hiểu, khảo sát về các phần mềm nhận dạng chữ đang được công bố và thương mại hóa trên thị trường như phần mềm FineReader, VnDOCR, Omnipage, VietOCR Phần cuối cùng trình bày và hệ thống lại những vấn đề thường gặp trong bài toán nhận dạng cũng như các yếu tố ảnh hưởng đến chất lượng của một hệ thống nhận dạng
1.1 Qui trình chung của một hệ nhận dạng chữ
Qui trình chung của một hệ thống nhận dạng chữ thường gồm hai giai đoạn là: Phân lớp mẫu và nhận dạng văn bản
1.1.1 Phân lớp mẫu
Phân lớp (sắp lớp) mẫu là giai đoạn quyết định trong quá trình nhận dạng Hai kiểu phân lớp điển hình thường được sử dụng là: phân lớp có giám sát (học có giám sát) và phân lớp không giám sát (học không giám sát) Các vấn đề thường được đặt ra trong bước phân lớp là:
Độ chính xác: Độ tin tưởng của một luật phân lớp được thể hiện bởi tỷ
lệ phân lớp đúng Nhìn chung, độ chính xác được đo bởi tập dữ liệu học và độ chính xác được đo bởi tập dữ liệu thử nghiệm là khác nhau Đây không phải là một điều bất thường, đặc biệt trong các ứng dụng học máy, đối với tập dữ liệu học thì có thể đúng hoàn toàn, nhưng trên tập dữ liệu thử nghiệm có khi kết quả lại rất tồi tệ Khi nói đến độ chính xác của một thuật toán phân lớp thì thường là nói đến độ chính xác trên tập dữ liệu thử nghiệm Kinh nghiệm thực tế cho thấy, độ chính xác của
Trang 15một thuật toán phân lớp phụ thuộc khá nhiều vào tập dữ liệu học (cả về mặt số lượng lẫn chất lượng) nói một cách khác là việc trích chọn đặc trưng của các mẫu có ảnh hưởng lớn tới độ chính xác của quá trình phân lớp
Tốc độ phân lớp: Đây là yếu tố đặc biệt quan trọng đối với các hệ
thống có tính thời gian thực, chẳng hạn như nhận dạng chữ viết tay trực tuyến (online),
Tính dễ hiểu: Thuật toán phân lớp đơn giản, dễ cài đặt và hiệu quả
Thời gian học: Nhất là trong một môi trường thường xuyên thay đổi,
cần phải học một luật phân lớp một cách nhanh chóng hoặc hiệu chỉnh một luật đã có trong thời gian thực Để học nhanh, nhiều khi ta chỉ cần
sử dụng một số lượng nhỏ các mẫu huấn luyện để thiết lập các luật phân lớp
1.1.2 Nhận dạng văn bản
Các bước cần thực hiện trong giai đoạn này được thể hiện cụ thể trên Hình 1.1 [1] bao gồm:
1 Thu nhận và lưu trữ ảnh: Đây là công đoạn đầu tiên trong một quá
trình nhận dạng ảnh Trong một hệ thống nhận dạng, ảnh thường được thu nhận qua scanner, sau đó được lưu trữ dưới các định dạng file (.pcx,
.bmp, .jpg, .tif, .gif, .png, ) Nhìn chung việc lựa chọn định dạng file lưu trữ sẽ tuỳ thuộc vào các văn bản đầu vào cần nhận dạng và các yêu cầu cụ thể của từng hệ thống
2 Tiền xử lý ảnh: Đây là công đoạn sử dụng các kỹ thuật xử lý ảnh để
nâng cao chất lượng ảnh đầu vào Nhìn chung, chất lượng của ảnh đầu vào sẽ ảnh hưởng nhiều đến chất lượng nhận dạng Vì vậy, tiền xử lý ảnh
là một bước không thể thiếu được trong một hệ thống nhận dạng hay xử lý
Trang 16ảnh Các kỹ thuật thường được sử dụng trong quá trình tiền xử lý là: Phân ngưỡng, căn chỉnh độ lệch trang văn bản, lọc nhiễu, nối nét đứt trên ảnh,
3 Phân đoạn ảnh: Đây là một trong những công đoạn quan trọng nhất
trọng nhất của quá trình nhận dạng và có ảnh hưởng lớn đến kết quả nhận dạng Hai cách tiếp cận phổ biến được đề xuất trong quá trình phân đoạn ảnh là:
Cách tiếp cận trên xuống (top-down): Toàn bộ ảnh văn bản cần phân đoạn được coi là một khối lớn, sau đó khối này được phân thành các khối nhỏ hơn, các khối nhỏ này lại tiếp tục được phân thành các khối nhỏ hơn nữa cho đến khi thu được các ký tự hoặc không thể phân nhỏ hơn được nữa Nhìn chung, với cách tiếp cận này, phương pháp thường dùng để phân đoạn ảnh là sử dụng các biểu đồ tần suất ngang và dọc Tuy nhiên, do biểu đồ tần suất bị ảnh hưởng nhiều bởi độ nghiêng trang văn bản nên trước khi xử lý phân đoạn, ta thường phải căn chỉnh độ lệch của trang văn bản
Cách tiếp cận dưới lên (bottom-up): Quá trình phân đoạn bắt đầu bằng việc xác định những thành phần nhỏ nhất, sau đó gộp chúng lại thành những thành phần lớn hơn, cho đến khi thu được tất cả các khối trong trang văn bản
Trang 17Hình 1.1: Qui trình chung của một hệ thống nhận dạng chữ
4 Nhận dạng: Đây chính là thao tác gán nhãn cho đối tượng dựa trên
những tri thức đã học được, nói cách khác đây là thao tác tìm kiếm một lớp mẫu phù hợp nhất với đối tượng đầu vào
5 Học mẫu mới: Do tập mẫu huấn luyện không thể bao quát được toàn bộ
các mẫu trong thực tế nên trong quá trình nhận dạng có thể sẽ gặp những mẫu mới mới mà hệ thống không thể nhận dạng chính xác được Khi đó việc học thêm những mẫu này sẽ góp phần làm tăng chất lượng của hệ thống nhận dạng
6 Hậu xử lý: Đây là một trong những công đoạn cuối cùng của quá trình
nhận dạng Trong nhận dạng chữ, có thể hiểu hậu xử lý là bước ghép nối các ký tự đã nhận dạng được thành các từ, các câu, các đoạn văn nhằm tái
Phân trang văn bản
Nhận dạng Cập nhật tri thức
(thông qua huấn
luyện mẫu mới)
Hậu xử lý Tiền xử lý
Lưu văn bản
Cơ sở tri thức Thu nhận ảnh
Trang 18hiện lại văn bản đồng thời phát hiện ra các lỗi nhận dạng bằng cách kiểm tra chính tả dựa trên cấu trúc và ngữ nghĩa của câu, đoạn văn Việc phát hiện ra các lỗi, các sai sót trong nhận dạng ở bước này đã góp phần đáng
kể vào việc nâng cao kết quả nhận dạng Đặc biệt đối với các ảnh văn bản đầu vào không tốt (chẳng hạn: Bản in bị mờ, bị đứt nét do photo nhiều lần, ) hoặc các văn bản in chứa nhiều thông tin hỗn hợp (chẳng hạn: Trong văn bản có cả số lẫn chữ và các ký hiệu), điều này rất dễ gây nhầm lẫn trong nhận dạng Thậm chí có những trường hợp nhập nhằng chỉ có thể giải quyết được bằng ngữ cảnh bằng cách phân tích ngữ cảnh của câu, chẳng hạn như trường hợp nhập nhằng giữa từ “lO” với số “10”
7 Lưu văn bản: Sau khi văn bản cần nhận dạng đã được tái tạo về dạng
nguyên bản sẽ được lưu lại ở các định dạng file được hệ thống hỗ trợ, chẳng hạn như file dạng (.doc, rtf, xls, )
1.2 Tìm hiểu một số phần mềm nhận dạng chữ
1.2.1 VnDOCR
Phần mềm nhận dạng tiếng Việt VnDOCR là một sản phẩm của Viện Công nghệ Thông tin VnDOCR có khả năng nhận dạng ký tự tiếng Việt từ máy scan hoặc file ảnh và chuyển đổi về dạng file văn bản như: *.doc.*.txt,
*.xls, *.rtf, [18] và có thể đọc và sửa trên các phần mềm soạn thảo văn bản thông dụng như Office, Wordpad, Notepad
Trang 19Hình 1.2: Màn hình làm việc của VnDOCR
Môi trường
+ PC với hệ điều hành Windows 9x, Windows ME, Windows 2000, Windows
XP hoặc Windows NT
Tiện ích: Bộ gõ chữ Việt và bộ phông ABC, VNI, Unicode
Thông tin đưa vào
+ Quét trực tiếp các loại sách báo, văn bản qua máy quét (scanner)
+ Đọc và xử lý hơn 30 dạng tệp tin ảnh phổ dụng nhất như PCX, BMP, TIF, GIF, JPG,
Có thể nhận dạng trực tiếp tài liệu quét qua scanner Các trang tài liệu có thể được quét và lưu trữ dưới dạng tệp tin nhiều trang
Có thể là các dạng tệp tin của Microsoft Word (.doc), tệp ký tự ASCII (.txt), Rich Text Format (.rtf), *.xls (đối với bảng biểu)
Theo công bố, độ chính xác của phần mềm có thể đạt tới 99 % trong trường hợp các file ảnh cần nhận dạng có chất lượng tốt
Trang 20- Nhận dạng văn bản: Nhận dạng các khối văn bản đã được xác định ở bước phân trang
- Hậu xử lý: Định dạng lại trang văn bản ban đầu, chỉnh lỗi chính tả,…
Một số hạn chế của phần mềm (Tính đến phiên bản 4.0)
- VnDOCR chỉ làm việc với ảnh đen trắng
- Với ảnh có cấu trúc vật lí phức tạp thì hiệu quả phân tích trang và độ chính xác nhận dạng còn chưa cao
Trang 21Môi trường làm việc:
PC với hệ điều hành: Windows XP, 2003, Vista, 2008, Windows 7,
Windows 8, Windows 8.1
Các tính năng cơ bản của phần mềm:
Tiền xử lý: Căn chỉnh độ nghiêng, tăng cường chất ảnh (xóa nhiễu, làm dày nét chữ nhằm nối nét đứt, làm mỏng nét chữ,… )
Phân tích cấu trúc trang văn bản nhằm xác định các vùng thông tin khác nhau (chẳng hạn vùng ảnh, vùng văn bản, vùng bảng, các dạng tiêu đề…)
Hậu xử lý: Định dạng lại trang văn bản ban đầu, chỉnh lỗi chính tả,…
Ngoài ra còn có các tính năng mở rộng như:
Xuất ra XML và tích hợp với Microsoft Office Word
Hỗ trợ các fiel ảnh đầu vào có định dạng file PDF
Kết quả nhận dạng có thể được xuất ra nhiều định dạng file như: DOC, DOCX, XLS, XLSX, PPTX, RTF, PDF,PDF/A, HTML, CSV, TXT, ODT, EPUB, FB2, DjVu
Chức năng tìm kiếm với Morphology Support
Các tùy chọn lưu ảnh cao cấp
Các ứng dụng thêm cho việc hoàn thành và in ấn các Form
Trang 221.2.3 OmniPage
OmniPage là phần mềm nhận dạng văn bản của Nuance, có khả năng nhận dạng trên 120 ngôn ngữ, độ chính xác có thể đạt tới 99% trên các file ảnh đầu vào chất lượng tốt [20]
Hình 1.4: Màn hình làm việc của OmniPage
Các tính năng cơ bản của phần mềm:
Hỗ trợ nhiều định dạng file ảnh, bao gồm cả file pdf
Nhận dạng chính xác tới 99% trên hơn 120 ngôn ngữ khác nhau
Nhận dạng được các trang có nhiều loại font, kiểu font hoặc có nền
Trang 23Hình 1.5: Màn hình làm việc của VietOCR
Các tính năng cơ bản của phần mềm:
Hạn chế của phần mềm: Độ chính xác nhận dạng không cao, các module
phân trang văn bản chưa tốt
Trang 241.3 Những vấn đề ảnh hưởng tới chất lượng của một phần mềm nhận dạng
Chất lượng của ảnh đầu vào là yếu tố quyết định tới độ chính xác của một hệ thống nhận dạng Hầu hết các hệ thống nhận dạng chữ hiện đang được thương mại hóa trên thị trường đều cho độ chính xác cao trên những ảnh đầu vào có chất lượng tốt Tuy nhiên, độ chính xác này thường không được đảm bảo trong trường hợp ngược lại Ngay cả khi văn bản được in thông thường,
dễ dàng nhận dạng mặt chữ và định dạng, vẫn có rất nhiều lỗi sinh ra do ảnh đầu vào có chất lượng thấp hay nói một cách khác là do những lỗi về mặt hình ảnh (imaging defect) Những lỗi này thường bao gồm các ký tự bị dính, bị nhiễu, in quá đậm, các ký tự bị mờ, đứt hoặc mất nét Ngoài ra các nhiễu vệt
và các đường baseline cong cũng là những nguyên nhân gây ảnh hưởng đến chất lượng nhận dạng Các lỗi hình ảnh thường sinh ra trong quá trình in ấn (printing process) hoặc quá trình thu nhận hình ảnh (scanning process) Các băng mực máy in quá đậm có thể tạo ra các ký tự bị nhòe hoặc có vết bẩn, trong khi các băng mực bị mòn sẽ sinh ra các bản in mờ nhạt Việc sao chụp (photocopy) các văn bản nhiều lần sẽ làm mất dần các thông tin làm cho các
ký tự trên đó bị đứt, gẫy và mất nét Ở bước thu nhận hình ảnh, các phần mềm điều khiển thiết bị quét thường cho phép người dùng hiệu chỉnh ngưỡng độ sáng thông qua chức năng điều khiển độ sáng (brightness control) Việc lựa chọn giá trị ngưỡng này ảnh hưởng trực tiếp tới độ chính xác của hệ thống OCR bởi vì nếu chọn ngưỡng thấp sẽ làm cho các ký tự bị đứt, mất nét (broken characters), nếu chọn ngưỡng cao sẽ làm cho các ký tự bị dính (touching characters) Giá trị ngưỡng này đôi khi cũng bất thường do các nhiễu nhiệt hoặc nhiễu điện, bản thân độ nhạy cảm (sensitivity) cũng có thể rất khác nhau giữa các phần tử cảm ứng của máy quét do sự không hoàn hảo
Trang 25của qui trình sản xuất Do đó, các ký tự giống hệt nhau trên các phần khác nhau trên trang văn bản có thể có hình ảnh nhị phân khác nhau [1]
1.3.1 Chữ bị dính, nhòe
Tách ký tự (character segmentation) là quá trình xác định vị trí của các
ký tự riêng biệt trong một từ Khi các ký tự bị dính nhau hoặc bị nhòe do chữ được quá đậm, các hệ thống OCR cần phải áp dụng những kỹ thuật đặc biệt
để phân tách chúng (xem Hình 1.6)
Hình 1.6: Trường hợp văn bản in đậm
Thậm chí đối với những ký tự có thể phân tách một cách dễ dàng, việc in quá đậm cũng có thể làm biến dạng hình ảnh của chúng, làm cho việc nhận dạng chúng rất khó khăn Với kiểu in đậm, hình dạng của các ký tự hoa thường có xu hướng tương tự nhau và giống như các hình khối Điều này gây khó khăn cho việc phân tách và nhận dạng chúng (xem Hình 1.7)
Hình 1.7: Một số hình ảnh bị biến dạng của các ký tự
Ngoài ra, đối với các văn bản kém chất lượng, đã qua nhiều bước tiền xử
lý, hình ảnh của các ký tự tiếng Việt có thể bị biến dạng do phần dấu bị nhòe,
bị dính vào các thành phần khác của chữ và rất khó để phân biệt (xem Hình 1.8)
Trang 26Hình 1.8: Hình ảnh các ký tự tiếng Việt bị nhập nhằng phần dấu
1.3.2 Văn bản bị đứt hoặc mất nét
Thực tế cho thấy là các ký tự bị đứt/mất nét gây ra nhiều lỗi hơn các ký
tự in đậm hoặc mờ Đây có thể là hệ quả của một thực tế là thông thường sẽ
có nhiều điểm trắng hơn điểm đen cho dù là trong trong các vùng văn bản của trang ảnh Như vậy, việc chuyển từ một điểm đen sang điểm trắng sẽ mất nhiều thông tin hơn là trường hợp ngược lại Các nguyên nhân điển hình gây
ra sự đứt/mất nét ký tự thường là do băng mực máy in bị mòn, các văn bản cần nhận dạng đã qua sao chụp nhiều lần hoặc ảnh được quét với độ phân giải thấp (xem Hình 1.9)
Hình 1.9: Trường hợp văn bản bị đứt và mất nét
Hình ảnh của các ký tự thu được từ các văn bản này có thể bị thiếu hoặc mất đi những đặc trưng quan trọng giúp nhận biết được ký tự (xem Hình 1.10)
Hình 1.10: Hình ảnh của ký tự bị biến dạng do lỗi đứt nét
Nhìn chung, thách thức đối với một thuật toán phân lớp ký tự hiện vẫn là trường hợp chỉ còn lại một vài điểm ảnh của một ký tự, thậm chí không đủ để
Trang 27con người nhận biết ký tự đó một cách riêng biệt Khi có quá nhiều ký tự bị đứt nét có thể làm hỏng cả đoạn văn bản Các hệ thống nhận dạng rất khó xử
lý những trường hợp như vậy, và có thể sinh ra những kết quả sai lệch hoàn toàn Trong những trường hợp đứt nét phức tạp, việc xác định mảnh nào thuộc vào ký tự nào là một công việc rất khó đối với một hệ thống OCR
1.3.3 Văn bản bị nhiễu
Các dạng nhiễu đặc biệt là nhiễu dạng vệt rất dễ gây nhầm lẫn cho các hệ thống OCR Nhiễu thường sinh ra do chất lượng in thấp hoặc do giấy in không tốt (chẳng hạn giấy báo) Mặc dù nhiễu thường bắt nguồn từ các trang văn bản cần nhận dạng, nhưng chúng cũng có thể được sinh ra bởi các đốm bụi trên trục lăn của máy quét, bởi các vết hằn từ mặt kia của trang văn bản (xem Hình 1.11)
Hình 1.11: Một số dạng nhiễu thường gặp trên văn bản
Bên cạnh những nhiễu liên quan đến chất lượng in ấn và chất lượng máy quét, còn có rất nhiều dạng nhiễu có thể xuất hiện trên văn bản gốc cần nhận dạng Chẳng hạn như các dạng nhiễu do người đọc cố tình khoanh tròn hoặc gạch chân vào các vùng văn bản (xem Hình 1.12)
Hình 1.12: Văn bản bị các nhiễu đánh dấu
Trang 28Đặc biệt với các văn bản ở dạng công văn, biên bản hoặc quyết định, thường xuất hiện các loại nhiễu do con dấu hoặc chữ kí bị chờm lên các vùng văn bản cần nhận dạng (xem Hình 1.13) Những nhiễu dạng này hiện vẫn là vấn đề khó đối với bài toán nhận dạng
Hình 1.13: Văn bản bị nhiễu do bị chồng chữ ký/con dấu
1.3.4 Văn bản được in với các kiểu font chữ đặc biệt
Các hệ thống nhận dạng thường được huấn luyện để nhận dạng các ký tự của các kiểu font chữ thông thường chẳng hạn đối với tiếng Việt có các font chữ Unicode thường dùng như Arial, Courier, Tahoma, Times New Roman
và Verdana Do các ký tự của font chữ VnTime không khác biệt nhiều so với các ký tự của font chữ Times, một hệ thống OCR có khả năng nhận dạng các
ký tự của font chữ VnTime một cách dễ dàng mà không cần phải được huấn luyện với font chữ này
Tuy nhiên khi văn bản được in với font chữ đặc biệt chẳng hạn như VnGothic (xem Hình 1.14) Đây là font chữ khác hẳn với các loại font chữ trên, hệ thống nhận dạng có thể sẽ bị thất bại hoàn toàn nếu nó không được huấn luyện trước với kiểu font chữ này
Hình 1.14: Văn bản được in với kiểu font chữ đặc biệt
1.3.5 Cỡ chữ quá lớn hoặc quá nhỏ
Cỡ chữ quá lớn về bản chất là không khó để nhận dạng Tuy nhiên các hệ thống OCR thường được tối ưu cho các cỡ chữ thông thường Để đối phó với
Trang 29các các ký tự có kích cỡ quá lớn, các hệ thống OCR có thể chuẩn hóa chúng, tức là giảm kích thước của chúng tới kích thước chuẩn trước khi nhận dạng chúng Tuy nhiên, quá trình xử lý này có thể làm biến dạng hình ảnh của ký
tự Điều này có thể gây ra các lỗi nhập nhằng cho thuật toán phân lớp ký tự Ngược lại, đối với những văn bản được in với cỡ chữ quá bé, rất nhiều chi tiết quan trọng của ký tự có thể bị mất đi khi được quét với độ phân giải
30 DPI Trong trường hợp này, việc quét văn bản với độ phân giải cao hơn có thể khắc phục được vấn đề trên Tuy nhiên, điều này lại có thể gây ra hiện tượng nhòe và dính nét ký tự gây khó khăn cho các hệ thống nhận dạng trong việc phân tách các ký tự
1.4 Kết luận
Trong chương này, luận văn đã đề cập đến các bước cơ bản của một quá trình nhận dạng chữ với 6 bước cơ bản, bao gồm thu nhận ảnh, tiền xử lý, phân trang văn bản, nhận dạng, hậu xử lý, lưu văn bản Bên cạnh đó, luận văn
đã tập trung khảo sát một số phần mềm nhận dạng chữ hiện đang được công
bố và thương mại hóa trên thị trường như phần mềm VnDOCR của Viện Công nghệ Thông tin, viện Hàn Lâm Khoa Học và Công Nghệ Việt Nam, phần mềm FineReader của hãng ABBYY, phần mềm OmniPage của hãng Nuance và phần mềm VietOCR, được xây dựng từ thư viện mã nguồn mở Tesseract của Google Ngoài ra, phần cuối của chương cũng đã tìm hiểu và hệ thống lại những vấn đề ảnh hưởng tới chất lượng của một hệ thống nhận dạng
Trang 30CHƯƠNG 2 - PHƯƠNG PHÁP ĐÁNH GIÁ HIỆU QUẢ CỦA
CÁC PHẦN MỀM NHẬN DẠNG CHỮ VIỆT
Một hệ thống nhận dạng chữ có thể được định nghĩa một cách hình thức
là một hệ thống máy tính có khả năng chuyển đổi có khả năng chuyển đổi các văn bản in trên giấy thành các văn bản điện tử có khả năng soạn thảo, hiệu chỉnh và tìm kiếm,v.v
Trong chương này, luận văn trình bày cơ sở lý thuyết của các độ đo và phương pháp đánh giá chất lượng (độ chính xác) của các hệ thống nhận dạng dựa trên ý tưởng tìm kiếm một ánh xạ (sự tương ứng) giữa các ký tự trong file văn bản được nhận dạng với các ký tự trong file văn bản mẫu
Các kết quả khảo sát từ thực tế cho thấy các lỗi chính tả trên các file văn bản được nhận dạng thường sinh ra do bị mất (không nhận dạng được) hoặc thừa ký tự (do việc phân tách ký tự bị sai) Do vậy, chúng ta không thể giả thuyết ký tự thứ i trong file văn bản được nhận dạng tương ứng với ký tự thứ i trong file văn bản mẫu Trong thực tế, có thể tìm kiếm ánh xạ giữa hai chuỗi
ký tự bằng cách xác định một chuỗi các thao tác hiệu chỉnh để biến chuỗi ký
tự này thành chuỗi ký tự kia với chi phí tối thiểu Việc tìm kiếm sự tương ứng tối ưu này được biết đến như bài toán hiệu chỉnh chuỗi ký tự
2.1 Một số khái niệm
Tỷ lệ nhận dạng (recognition rate): Tỷ lệ phần trăm của các ký tự
được phân lớp một cách chính xác
Tỷ lệ loại bỏ (rejection rate): Tỷ lệ phần trăm của các ký tự mà hệ
thống không có khả năng nhận dạng Trong quá trình xử lý, một hệ thống nhận dạng dạng có thể đánh dấu lại các ký tự bị loại bỏ và không cần xét đến ở các bước hiệu chỉnh sau đó
Tỷ lệ lỗi (error rate): Tỷ lệ phần trăm của các ký tự bị phân lớp sai
Các ký tự bị phân lớp sai không được phát hiện bởi hệ thống, việc kiểm
Trang 31tra lại văn bản đã nhận dạng là cần thiết để phát hiện và hiệu chỉnh những lỗi này
Chuỗi ký tự: Chuỗi ký tự là một dãy các ký tự được kết thúc bằng ký
tự NULL (‘\0’) Ở đây, mỗi văn bản mẫu và mỗi văn bản được nhận
dạng sẽ được coi là một chuỗi ký tự
Chuỗi con (subsequence): Nếu một chuỗi A bất kỳ có thể biến đổi
được thành chuỗi ký tự C bởi không hoặc nhiều thao tác xóa thì C được gọi là chuỗi con (subsequence) của A
Chuỗi con chung (common subsequence): Một chuỗi ký tự C được
gọi là chuỗi con chung của 2 chuỗi A và B nếu và chỉ nếu C là chuỗi
con của A và C là chuỗi con của B
Chuỗi con chung lớn nhất (longest common subsequence -LCS):
Nếu C là một chuỗi con chung của hai chuỗi A, B và không tồn tại bất
kỳ một chuỗi con nào khác của A, B mà có số ký tự nhiều hơn C thì C được gọi là chuỗi con chung lớn nhất của A và B, ký hiệu C =
LCS(A,B)
Cụ thể, giả sử LA,B là số lượng ký tự trong LCS(A,B) của A và B
Nếu A = yxzyyx và B = yyxx, thì:
- Chuỗi yzyx là một chuỗi con của A
- Chuỗi xx là một chuỗi con chung của A và B
- Chuỗi yxx và yyx là các chuỗi con chung dài nhất của A và B, LA,B =3. 2.2 Bài toán hiệu chỉnh chuỗi ký tự (string editing)
Cho = … là chuỗi gồm m ký tự và chuỗi = …gồm n ký tự trong bảng chữ cái ∑ Trong bài toán hiệu chỉnh chuỗi ký tự, 3 thao tác hiệu chỉnh có thể được áp dụng cho A:
1 Thao tác chèn (Insertion): chèn bất kì ký hiệu nào trong bảng chữ cái ∑
vào trước , sau hoặc giữa và (1 ≤i <m );
Trang 322 Thao tác xóa (Deletion): một ký tự có thể bị xóa (1 ≤i ≤m);
3 Thao tác thay thế (Substitution): một ký tự ai nào đó có thể bị thay thế bởi một ký tự x bất kỳ (x≠ai) (1 ≤i ≤m);
Một hàm chi phí γ= ( , , ) xác định chi phí của chèn, xóa và thay thế, tương ứng, với , , là các số thực không âm
Giả sử , , là chi phí tối thiểu để biến chuỗi A thành chuỗi B sử dụng hàm chi phí γ Khi γ là (1,1,1) hoặc (1,1,2) thì , , được gọi là
khoảng cách Levenshtein (Levenshtein distance) giữa A và B Hàm khoảng cách này còn được gọi là không gian Levenshtein (Levenshtein metric) bởi
vì nó đáp ứng được các tính chất của một metric:
1 , , >0 nếu A≠ B; , , =0;
2 , , = , , ;
3 , , ≤ , , + , , ;
Đối với một hàm chi phí tùy ý γ = (γ ,γ ,γ ), d , , được gọi là
khoảng cách hiệu chỉnh (edit distance) hoặc khoảng cách Levenshtein có trọng số (weighted Levenshtein distance) giữa A và B Hàm khoảng cách
này là một metric khi γ = γ >0 và γ >0
Từ đây chúng ta có thể đưa bài toán hiệu chỉnh chuỗi thành bài toán
tìm đường đi ngắn nhất trên một đồ thị hiệu chỉnh (edit graph) được định
nghĩa cụ thể như sau:
Giả sử = … và = … là các chuỗi ký tự, có độ
dài tương ứng m và n (m ≥ 0, n ≥ 0) Đồ thị hiệu chỉnh của A và B, ký hiệu
, là một đồ thị có hướng, không có chu trình, có (m+1)(n+1) đỉnh,
được ký hiệu , với 0 ≤ i ≤ m và 0 ≤ j ≤ n Các cạnh (cung) của đồ thị , được chia thành ba nhóm:
Trang 331 Cạnh ngang (horizontal arcs): các cạnh ( , , , ), với 0 ≤ i ≤
Nếu ai = bj thì cạnh chéo ( , , , ) được gọi là cạnh phù hợp
(matching arc), ngược lại thì được gọi là một cạnh không phù hợp
Một đường hiệu chỉnh (edit path) là một đường đi có hướng bất kỳ từ
đỉnh , đến , trên đồ thị , Đường đi này xác định một chuỗi các thao tác hiệu chỉnh để biến chuỗi A thành chuỗi B Một cạnh ngang ( , ,
, ) trên đường đi xác định rằng ký tự được chèn vào, trong khi đó một cạnh dọc ( , , , ) xác định rằng ký tự bị xóa Một cạnh không phù hợp ( , , , ) xác định rằng bị thay thế bởi , và một cạnh phù hợp ngầm định rằng không có thao tác hiệu chỉnh nào được thực hiện Trong thực tế, các cạnh phù hợp trên đường đi sẽ xác định một chuỗi con chung của A và B
Nếu trọng số của mỗi cung bằng với chi phí của bước hiệu chỉnh mà
nó đang biểu diễn thì một đường hiệu chỉnh có trọng số nhỏ nhất sẽ được coi là một đường đi tối ưu (đường đi ngắn nhất) trên đồ thị hiệu chỉnh ,
và tổng trọng số (độ dài) của đường đi đó được gọi là khoảng cách hiệu chỉnh giữa 2 chuỗi
Hình 2.1 thể hiện đồ thị hiệu chỉnh cho các chuỗi A = zxy và B = xyxz Mỗi cạnh biểu diễn một thao tác hiệu chỉnh đã được gán nhãn với I là
Trang 34thao tác chèn, D là thao tác xóa, S là thao tác thay thế Các cạnh phù hợp không được gán nhãn
Hình 2.1: Đồ thị G(A,B), với A = zxy và B = xyxz
Hai đường đi trên đồ thị G(A,B) được chỉ ra trên Hình 2.2 Mỗi đường đi xác định một chuỗi các thao tác để chuyển chuỗi A thành chuỗi B Trong đó, đường đi thứ nhất (đường nét đứt) chứa 1 thao tác xóa (D) và 2 thao tác chèn (I), trong khi đường đi thứ 2 (đường nét chấm) chỉ chứa 1 thao tác chèn (I) và 2 thao tác thay thế (S)
Nếu sử dụng hàm chi phí (1,1,2) thì đường nét đứt sẽ là đường đi ngắn nhất trên đồ thị và khoảng cách chỉnh sửa được tính bằng 3 Nếu sử dụng hàm chi phí (2,1,1) thì đường nét chấm là đường đi ngắn nhất trên đồ thị và khoảng cách chỉnh sửa bằng 4
Trang 35Hình 2.2: Các đường đi trên đồ thị G(A, B)
Một vài giá trị cận dưới đã được đề xuất đối với độ phức tạp của thuật toán hiệu chỉnh chuỗi Trong [15], các tác giả đã chứng minh đối với các chuỗi có độ dài n bao gồm các ký tự từ một bảng chữ cái vô hạn, độ phức tạp tính toán được ước lượng là ( ) Tuy nhiên, đối với một bảng chữ cái hữu hạn, Masek và Paterson [2] đã đề xuất một thuật toán chỉ yêu cầu độ phức tạp thời gian O( /log n) trong trường hợp xấu nhất Đối với bài toán LCS, một số độ phức tạp thời gian sau đây đã được chứng minh và công nhận:
1 (ns) đối với một bảng chữ cái kích thước hữu hạn [2]
2 (nlog n) đối với một bảng chữ cái vô hạn [7]
Rất nhiều thuật toán đã được đề xuất cho bài toán hiệu chỉnh chuỗi Bảng 2.1 liệt kê một số thuật toán tiêu biểu cùng với độ phức tạp được ước lượng tương ứng, trong đó n là độ dài của mỗi chuỗi ký tự, d là khoảng cách hiệu chỉnh, L là chiều dài của một LCS
Trang 36Bảng 2.1: Giải thuật cho bài toán chỉnh sửa chuỗi
chi phí
Độ phức tạp Thời gian Không gian
Wagner & Fischer [14] Bất kỳ O( ) O( )
Hirschberg [7] (1,1,2) O(nL + nlog O(nL)
(1,1,2) O(dLlogn) O(d2 + n) Masek & Paterson [9] Bất kỳ O( /log n) O( /log n) Nakatsu, Kambayashi, & Yajima (1,1,2) O(nd) O(nd)
Ukkonen [13] Bất kỳ O(nd) O(nd)
(1,1,1) O(nd) O( + n)
Wu, Manber, Myers, & Miller [16] (1,1,2) O(nd) O(n) Apostolico, Browne, & Guerra [3] (1,1,2) O(nd) O(n) Thuật toán Ukkonen với hàm chi phí (1,1,1) có thể được sử dụng để tính toán độ chính xác mức ký tự cho một hệ thống nhận dạng chữ (OCR)
2.3 Thuật toán Ukkonen
Trong thực tế, các thuật toán hiệu chỉnh chuỗi ký tự có độ phức tạp thời gian ( ) là không khả thi đối với bài toán tìm kiếm sự tương ứng tối
ưu giữa một chuỗi văn bản nhận dạng được với một chuỗi văn bản mẫu do
số lượng ký tự trên các chuỗi này thường khá lớn (vài chục nghìn ký tự) Do các chuỗi văn bản này thường khá giống nhau và khoảng cách hiệu chỉnh nhỏ Vì vậy, một thuật toán yêu cầu độ phức tạp về thời gian và không gian
Trang 37Thuật toán 2.1: Thuật toán Ukkonen
Ukkonen_Algorithm(A, B)
Input: Các chuỗi văn bản A = a1a2…am và B = b1b2…bm
Output: d = khoảng cách hiệu chỉnh giữa A và B sử dụng hàm chi phí (1, 1, 1)
row = mảng của các đường đi trên đồ thị
end
Trang 38Mảng row là một mảng 2 chiều, thưa Trong đó, chỉ lưu trữ những
phần tử được định nghĩa (mục đích để giảm độ phức tạp tính toán) Những phần tử không được định nghĩa sẽ được coi là có giá trị bằng -1 Đường
chéo k của đồ thị G(A, B) chứa tất cả các đỉnh vi,j sao cho j – i = k Vì vậy,
các đường chéo của đồ thị sẽ thuộc phạm vi từ -m tới n Phần tử row[k][d]
xác định chỉ số hàng xa nhất trên đồ thị G(A,B) mà có thể đi đến được bởi
một đường đi có độ dài d từ đỉnh v0,0 tới một đỉnh trên đường chéo k
Trước tiên, xuất phát từ đỉnh khởi đầu v0,0, đường đi có độ dài 0, thuật toán chỉ cần xét đường chéo 0 Bước tiếp theo, thuật toán sẽ tiến hành tìm kiếm các đường xa nhất có độ dài bằng 1 bằng cách xét các đường chéo -1, 0, +1 Sau đó, tiếp tục sử dụng các đường đi này để tìm kiếm các đường
đi xa nhất có độ dài bằng 2 đối với các đường chéo -2, 0, +2, thực hiện tương tự như vậy cho đến khi gặp được đỉnh đích vm,n Độ dài của đường đi
này chính là khoảng cách hiệu chỉnh và mảng row sẽ chứa các thông tin cần
thiết để dò lại đường đi ngắn nhất đã được xác định
Thông thường, row(k,d) được tính với mỗi k trong đoạn [-d, +d] Tuy
nhiên, một số đường chéo có thể sẽ bị loại bỏ do chúng không nằm trong
kết quả cuối cùng Vì vậy, thuật toán sử dụng biến r để tránh những đường
đi mà biết chắc chắn là không cần thiết Ngoài ra, các kết quả trung gian của thuật toán cũng có thể được sử dụng để loại bỏ thêm các đường chéo không cần thiết
Thuật toán dò lại đường đi ngắn nhất từ mảng row được mô tả cụ thể
như sau: