Song đối với một khối lượng tài liệu khổng lồ ví dụ như cả kho sách, đây là một vấn đề nan giải; mặc dù với việc đánh máy độ chính xác rất cao nhưng lại tốn quá nhiều thời gian, trong kh
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trang 3MỤC LỤC
DANH MỤC HÌNH VẼ 3
MỞ ĐẦU 5
CHƯƠNG 1 – TỔNG QUAN VỀ OCR 8
1.1 Giới thiệu về OCR 8
1.1.1 OCR là gì 8
1.1.2 Một số công nghệ, phần mềm OCR tiêu biểu 10
1.1.3 Một số khái niệm cơ bản 11
1.2 Các bước cơ bản trong một hệ thống OCR 13
1.2.1 Thu nhận ảnh 13
1.2.2 Tiền xử lý ảnh 14
1.2.2.1 Nhị phân hóa ảnh 14
1.2.2.2 Chỉnh độ nghiêng và hướng 16
1.2.2.3 Giảm nhiễu 17
1.2.3 Phân tích bố cục 18
1.2.4 Tách dòng và từ 19
1.2.5 Huấn luyện và nhận dạng 20
1.2.6 Xử lý kết quả 21
CHƯƠNG 2 – CÁC CÔNG NGHỆ SỬ DỤNG TRONG HỆ THỐNG 22
2.1 Công nghệ Tesseract OCR 22
2.1.1 Giới thiệu về Tesseract OCR 22
2.1.2 Tesseract làm việc như thế nào? 24
2.1.3 Vấn đề tập huấn ngôn ngữ 26
2.2 Công nghệ Android 29
2.2.1 Giới thiệu về hệ điều hành android 29
2.2.2 Kiến trúc hệ thống 30
2.3 Mô hình client/server 33
2.3.1 Giới thiệu về mô hình client/server 33
2.3.2 Các kiến trúc client/server 34
2.3.2.1 Client/Server hai tầng 34
2.3.2.2 Client/server ba tầng 35
2.3.2.3 Client/server n-tầng 36
2.4 Công nghệ dịch thuật Google Translate 36
2.4.1 Xử lý ngôn ngữ tự nhiên 36
2.4.2 Dịch tự động 37
2.4.3 Dịch vụ dịch thuật trực tuyến Google Translate 40
CHƯƠNG 3 – HỆ THỐNG NHẬN DẠNG VÀ DỊCH TRÊN THIẾT BỊ DI ĐỘNG 42
3.1 Sơ đồ tổng quát của hệ thống 42
3.2 Ứng dụng trên client 43
3.2.1 Chức năng 43
3.2.2 Giao diện 43
3.3 Ứng dụng trên server 47
3.3.1 Chức năng tiền xử lý ảnh 48
3.3.2 Chức năng OCR 50
3.3.3 Chức năng hậu xử lý kết quả OCR 52
3.3.4 Chức năng sửa lỗi chính tả tự động 52
3.3.4.1 Hàm đánh giá minimum edit distance (MED) 53
3.3.4.2 Hàm đánh giá maximum số cặp ký tự giống nhau 53
3.3.5 Chức năng dịch sang ngôn ngữ khác 54
CHƯƠNG 4 – THỰC NGHIỆM VÀ ĐÁNH GIÁ 55
Trang 44.1 Thực nghiệm trên Tesseract engine 55
4.1.1 Tập mẫu thực nghiệm 55
4.1.2 Kết quả OCR 55
4.1.3 Nhận xét 56
4.2 Thực nghiệm trên một số hệ thống OCR khác nhau 57
4.2.1 Tập mẫu thực nghiệm 58
4.2.2 Kết quả 58
4.2.3 Nhận xét 58
KẾT LUẬN 59
TÀI LIỆU THAM KHẢO 61
Trang 5DANH MỤC HÌNH VẼ
Hình 1.1: Ứng dụng OCR 8
Hình 1.2: Các đường cơ bản trong dòng text 12
Hình 1.3: Thành phần liên thông 4 và 8 13
Hình 1.4: Quy trình cơ bản trong một hệ thống OCR 13
Hình 1.5 Mô tả lược đồ mức xám 15
Hình 1.6 Phân ngưỡng trên lược đồ mức xám 15
Hình 1.7 Kết quả chọn ngưỡng xám theo phương pháp Otsu 16
Hình 1.8 Ảnh văn bản trước và sau khi chỉnh nghiêng 16
Hình 1.9 Ảnh văn bản trước và sau khi chỉnh hướng đúng 17
Hình 1.10 Các vùng nhiễu trên ảnh văn bản 17
Hình 1.11 b-Cấu trúc vật lý; c,d-Cấu trúc lôgic 19
Hình 2.1 Kiến trúc Tesseract 24
Hình 2.2 Ảnh trước và sau phân tích bố cục 24
Hình 2.3 Fitting cap line, mean line, baseline, descent line 25
Hình 2.4 Ví dụ bổ fixed pitch thành các ký tự 25
Hình 2.5 Sự khác nhau trong khoảng các từ 25
Hình 2.6 Các thành viên của "Liên minh di động mở" 29
Hình 2.7 Kiến trúc Android OS 30
Hình 2.8 Mô hình client/server 33
Hình 2.9 Mô hình kiến trúc client/server 2 tầng 35
Hình 2.10 Mô hình kiến trúc client/server 3 tầng 35
Hình 2.11 Dịch vụ dịch thuật online Google translate 40
Hình 2.12 Các ngôn ngữ Google Translate hỗ trợ dịch 40
Hình 3.1 Sơ đồ hệ thống nhận dạng và dịch trên thiết bị di động 42
Hình 3.2 Giao diện chính chương trình client 43
Trang 6Hình 3.3 Giao diện tab image 44
Hình 3.4 Ảnh chụp ở chế độ chụp “full mode” 44
Hình 3.5 Ảnh chụp ở chế độ chụp “block mode” 45
Hình 3.6 Chương trình đang chờ xử lý 45
Hình 3.7 Giao diện thiếp lập tùy chọn 45
Hình 3.8 Giao diện tab OCR Result 46
Hình 3.9 Giao diện tạo liên hệ mới 46
Hình 3.10 Giao diện gửi SMS 47
Hình 3.11 Giao diện tìm kiếm và hiển thị thông tin 47
Hình 3.12 Ảnh có bố cục và phân bố màu sắc phức tạp 48
Hình 3.13 Ảnh gốc sau khi nhị phân hóa và làm sạch 49
Hình 3.14 Các ảnh con cắt ra từ ảnh gốc 50
Hình 3.15 Kết quả OCR trên ảnh gốc 50
Hình 3.16 Kết quả OCR trên các ảnh con 50
Hình 3.17 Định nghĩa hàm OcrFromImage() 51
Hình 4.1 Kết quả thực nghiệm OCR với Tesseract engine 55
Hình 4.2 Kết quả thực nghiệm OCR trên 4 hệ thống khác nhau 58
Trang 7MỞ ĐẦU Đặt vấn đề
Từ lâu con người đã quen với việc sử dụng máy tính để lưu trữ những tài liệu cần thiết, xuất phát từ những tiện ích to lớn do máy tính mang lại: lưu trữ khối dữ liệu lớn, ít bị hư hỏng, dễ quản lí, dễ tìm kiếm, dễ chỉnh sửa Tuy nhiên giấy vẫn là một vật liệu quan trọng đã, đang và sẽ được sử dụng để lưu trữ tài liệu vì sự cần thiết của nó trong cuộc sống hàng ngày (ví dụ sách, báo ) Một nhu cầu tất yếu, con người muốn đưa các tài liệu đang lưu trữ trên giấy (cũng như trên một số vật liệu khác) lên máy tính để có thể làm việc với chúng một hiệu quả hơn Một cách thông thường, con người sẽ đánh máy trực tiếp các tài liệu đó lên máy tính Đối với một số lượng nhỏ tài liệu, việc này hoàn toàn bình thường Song đối với một khối lượng tài liệu khổng lồ (ví dụ như cả kho sách), đây là một vấn đề nan giải; mặc dù với việc đánh máy độ chính xác rất cao nhưng lại tốn quá nhiều thời gian, trong khi với các công nghệ hiện có cho phép
ta giải quyết vấn đề này: chụp ảnh tài liệu và nhận dạng ký tự trong ảnh
Nhận dạng ký tự quang học (tiếng Anh: Optical Character Recognition,
viết tắt là OCR)[20] là quá trình rút trích ký tự trong ảnh cho ra dưới dạng văn bản để có thể lưu trữ, chỉnh sửa và tìm kiếm được Lĩnh vực OCR là một nhánh trong ngành khoa học xử lý ảnh, tuy còn mới mẻ so với nhiều lĩnh vực khoa học khác nhưng nhanh chóng đã đạt được nhiều bước tiến quan trọng Xuất phát từ nhu cầu thực tế là đưa các tài liệu lưu trữ trên giấy vào máy tính mà không phải đánh máy, nhiều công nghệ OCR ra đời (phát hành dưới dạng sản phẩm thương mại, miễn phí hoặc nguồn mở) đã và đang ứng dụng rộng rãi trong các lĩnh vực liên quan đến việc nhận dạng Với sự đầu tư mạnh mẽ và nghiên cứu liên tục của các cá nhân tổ chức, kết quả nhận dạng trong lĩnh vực OCR ngày càng được cải thiện, đặc biệt sự nhận dạng ký tự Latinh đánh máy có thể tiến tới tỉ lệ chính xác 100% Ngoài công nghệ nhận dạng ký tự quang học OCR thì hiện nay còn có thêm nhiều cơ chế nhận dạng tiêu biểu khác được ứng dụng vào thực tế như:
nhận dạng ký tự thông minh (Intelligent Character Recognition, viết tắt ICR), nhận dạng vùng đánh dấu (Optical Mark Recognition, viết tắt OMR), nhận dạng chữ mực từ (Magnetic Ink Character Recognition, viết tắt MICR), nhận dạng mã
vạch (Barcode Regconition)
Chúng ta thường thực hiện công việc nhận dạng trực tiếp trên máy tính: dùng các thiết bị thu ảnh để scan, chụp ảnh các tài liệu và đưa các ảnh đó lên máy tính rồi chạy ứng dụng nhận dạng đã cài đặt Điều này hầu như chỉ thực
Trang 8hiện được khi chúng ta làm việc ở nhà, ở cơ quan với chiếc máy tính bên cạnh Tuy nhiên nhu cầu OCR của chúng ta có thể xuất hiện mọi lúc mọi nơi, ví dụ muốn lưu nhanh thông tin trong một name card mà người bạn đưa cho vào điện thoại mà không phải nhập bằng tay Song chúng ta không thể lúc nào cũng mang bên mình máy scan, máy ảnh cũng như máy tính để hỗ trợ cho việc OCR Chưa
kể đôi khi chúng ta muốn dịch nhanh một bảng chỉ dẫn bằng tiếng nước ngoài
mà không có từ điển bên cạnh Một khó khăn nữa là các ứng dụng OCR hiệu quả cho công việc của chúng ta lại đa phần được tung ra dưới dạng thương mại, muốn sử dụng phải mất một chi phí không nhỏ Chính những sự bất tiện thực tế trên, vấn đề đặt ra là phải có những hệ thống phần cứng-phần mềm nhỏ gọn, di động nhưng vẫn thực hiện một cách linh hoạt và hiệu quả các chức năng chụp ảnh tài liệu, OCR trên ảnh đã chụp và dịch kết quả ra ngôn ngữ khác
Hiện nay công nghệ mạng internet phát triển mạnh mẽ, internet có mặt hầu hết khắp nơi trên thế giới Công nghệ di động phát triển vượt bậc, việc sử dụng điện thoại bùng nổ, điện thoại di động trở thành mặt hàng bình dân mà ai cũng có thể sở hữu được Nhiều công nghệ OCR tiên tiến được đưa ra dưới dạng
mã nguồn mở và được các công ty, tổ chức lớn tài trợ phát triển Với nền tảng công nghệ hiện có ở trên đã tạo ra nhiều giải pháp để xây dựng được nhiều hệ thống có khả năng đáp ứng cao với vấn đề đặt ra
Mục tiêu nghiên cứu
Với mong muốn tìm hiểu về lĩnh vực và một số công nghệ OCR tiên tiến, đồng thời mong muốn góp phần vào kho ứng dụng OCR hiện có một sản phẩm nguồn mở mới: một hệ thống trên thiết bị di động giúp con người có thể thu ảnh, rút trích thông tin trong ảnh, dịch kết quả ra ngôn ngữ mong muốn và quản lý các thông tin ấy trên thiết bị di động Thiết bị di động được chọn là điện thoại di động chạy hệ điều hành nguồn mở Android Và từ đó luận văn lựa chọn đề tài
nghiên cứu “Xây dựng hệ thống nhận dạng và dịch trên thiết bị di động”
Nội dung nghiên cứu
Về mặt lý thuyết:
- Nghiên cứu tổng quan về lĩnh vực OCR, các thành phần trong một
hệ thống OCR cơ bản
- Nghiên cứu công nghệ mã nguồn mở Tesseract
- Nghiên cứu công nghệ mã nguồn mở Android
- Nghiên cứu mô hình client/server
- Nghiên cứu công nghệ dịch Google Translate
- Nghiên cứu phương pháp sửa lỗi chính tả tự động
Trang 9Về mặt thực hành:
- Nghiên cứu xây dựng ứng dụng web service chạy trên server : sử dụng nguồn mở của Tesseract để tạo ra module có chức năng OCR trên ảnh; sử dụng các hàm API do Google cung cấp để tạo ra module có chức năng dịch văn bản sang ngôn ngữ tùy chọn Web service còn hỗ trợ chức năng hậu xử lý kết quả OCR và tự động sửa
lỗi chính tả trên ngôn ngữ tiếng Anh
- Nghiên cứu xây dựng ứng dụng trên client: sử dụng Android SDK
để tạo ra ứng dụng chạy trên điện thoại Android có chức năng chụp ảnh; gửi ảnh về server và nhận kết quả xử lý từ server trả về; quản
lý nội dung thông tin đã rút trích từ ảnh
Bố cục luận văn
Ngoài phần mở đầu giới thiệu về mục tiêu, ý nghĩa, tình hình nghiên cứu liên quan và phần kết luận tóm tắt những kết quả chính đạt được cũng như đưa
ra nhận xét; bố cục luận văn gồm 4 chương chính:
Chương 1: Trình bày kiến thức tổng quan về lĩnh vực OCR làm nền tảng
cho các nghiên cứu về sau
Chương 2: Trình bày nội dung tìm hiểu về công nghệ mã nguồn mở
Tesseract OCR, công nghệ Android, mô hình client/server, công nghệ dịch Google Translate Các công nghệ, mô hình này được sử dụng để xây dựng hệ thống
Chương 3: Giới thiệu kiến trúc và các thành phần cơ bản của hệ thống
nhận dạng và dịch trên thiết bị di động đã xây dựng
Chương 4: Trình bày kết quả thực nghiệm chức năng rút trích thông tin từ
ảnh của hệ thống cũng như so sánh một sách tương đối kết quả OCR với một số
hệ thống khác
Trang 10CHƯƠNG 1 – TỔNG QUAN VỀ OCR 1.1 Giới thiệu về OCR
Hình 1.1 Ứng dụng OCR[21]
1.1.1 OCR là gì
OCR (optical character recognition)[7] là lĩnh vực nhận dạng ký tự quang học Kỹ thuật này cho phép máy tính tự động nhận dạng ký tự thông qua cơ chế quang học Đối tượng của OCR là ảnh scan các tài liệu, sách, hoặc các video liên quan Mục tiêu của OCR là chuyển các nguồn tài liệu này sang các định
dạng có thể chỉnh sửa và tìm kiếm được
Vào những những năm đầu của thế kỷ 20, các nhà khoa học đã quan tâm nghiên cứu trong lĩnh vực OCR Tuy nhiên kết quả lúc bấy giờ vẫn còn rất hạn chế Từ những năm 90 đến nay, OCR có những nghiên cứu mang tính đột phá, kết hợp với những công nghệ tiến tiến của thời đại đã cho ra đời những hệ thống OCR mạnh mẽ và hiệu suất cao
Trang 11Năm 1929, đã xuất hiện chiếc máy nhận dạng chữ số Đến những năm đầu của thập niên 1950, chiếc máy đầu tiên có khả năng chuyển tài liệu bản in thành ngôn ngữ trên máy tính được phát minh bởi David Shepard, một chuyên gia về giải mã làm việc cho cơ quan An Ninh quốc gia Hoa Kỳ Năm 1955 khi Reader‟s Digest mua lại công nghệ này, sản phẩm từ công nghệ OCR được đưa
ra thương mại hóa lần đầu tiên Tuy nhiên mãi đến năm 1978, phiên bản OCR cho máy tính mới được ra đời; ứng dụng đầu tiên của nó là dùng để tải những văn bản luật và tin tức lên cơ sở dữ liệu trực tuyến Ngày nay, công nghệ OCR được kết hợp với máy scan tốc độ cao và những thuật toán máy tính phức hợp đã làm gia tăng tốc độ xử lý cũng như sự chính xác của dữ liệu Những công nghệ OCR hiện tại đều có thể nhận dạng hầu hết các font chữ với độ chính xác cao, một số còn hỗ trợ khả năng kết xuất ra những đoạn văn bản có định dạng gần giống hoàn toàn với bản gốc[21]
Ngoài công nghệ nhận dạng ký tự quang học OCR thì hiện nay còn có thêm nhiều cơ chế nhận dạng tiêu biểu khác[9] được ứng dụng vào thực tế như:
nhận dạng ký tự thông minh ICR (Intelligent Character Recognition), nhận dạng vùng đánh dấu OMR (Optical Mark Recognition), nhận dạng chữ mực từ MICR (Magnetic Ink Character Recognition) và cơ chế nhận dạng mã vạch (barcode)
Các công nghệ tiên tiến này đã hỗ trợ rất nhiều cho các tổ chức và doanh nghiệp trong việc xử lý thông tin phát sinh xuyên suốt quá trình hoạt động Những lĩnh vực thường được ứng dụng các công nghệ nhận dạng trên là giáo dục, tài chính,
y tế, bảo hiểm, giao vận và ngay cả trong các tổ chức của chính phủ như thuế, hải quan[21]
Công nghệ nhận dạng OCR đã tạo ra sự ảnh hưởng to lớn trong việc lưu trữ, chia sẻ và chỉnh sửa thông tin Trước đây, nếu chúng ta muốn chuyển một quyển sách từ bản in sang bản điện tử thì cách duy nhất là ngồi nhập thủ công toàn bộ quyển sách vào máy tính thông qua chương trình soạn thảo văn bản, và điều này buộc chúng ta phải trả giá với một khoảng thời không nhỏ Tuy nhiên, ngày nay với sự phát triển vượt bậc của công nghệ thông tin, chỉ cần một máy scan kết nối với một máy tính tích hợp sẵn phần mềm nhận dạng OCR, bằng một vài thao tác đơn giản, toàn bộ quyển sách sẽ được chuyển thành tập tin đúng như mong muốn của người sử dụng Do đó có thể nói, công nghệ OCR đã giúp người ta đến gần với nhiều dạng thông tin hơn, xóa bỏ nhiều rào cản về việc chia
sẻ nguồn tri thức của nhân loại
Mặc dù không được sử dụng phổ biến và nhắc đến nhiều như các ngành công nghiệp viễn thông, phần cứng hay phần mềm nhưng ngành công nghiệp
Trang 12nhận dạng lại mang đến hiệu quả rõ ràng nhất khi được đưa vào ứng dụng trong thực tế Việc chuyển đổi thông tin từ tài liệu giấy sang tài liệu điện tử giúp nhiều người dùng có thể truy cập thông tin một cách dễ dàng, cùng một lúc dù ở bất cứ đâu mà không phải chờ đợi hoặc mất quá nhiều thời gian cho việc tìm kiếm Điều này cũng tạo cho công tác quản lý và bảo mật thông tin trở nên đơn giản hơn khi tất cả những thay đổi hoặc ngày giờ truy cập thông tin đều được kiểm soát chặt chẽ Đối với các doanh nghiệp, các tổ chức, các cơ quan hành chính, công nghệ OCR mang lại nhiều lợi ích kinh tế, tiết kiệm được những khoảng chi phí không nhỏ như giảm thiểu không gian lưu trữ, giảm tối đa nguồn nhân lực trong công tác quản lý thông tin
Hiện nay nhiều ứng dụng OCR được đưa ra sử dụng dưới dạng offline trên máy tính hoặc tích hợp và chạy online trên các thiết bị OCR chuyên dụng Đặc biệt các hệ thống OCR thời gian thực được chú trọng phát triển Các kỹ thuật nhận dạng hiện nay kết hợp rất hiệu quả với một số phương pháp luận
trong lĩnh vực học máy (machine learning) như mạng nơ ron, mô hình Markov
ẩn, SVM (supper vector machines), xử lý ngôn ngữ tự nhiên Mặc dù được phát triển mạnh mẽ, nhưng kết quả nghiên cứu trong lĩnh vực OCR cũng gặp phải những trở ngại nhất định OCR không bao giờ đạt tới tỷ lệ chính xác 100% trong nhiều trường hợp Các yếu tố ảnh hưởng nhiều đến kết quả OCR như chất lượng ảnh đầu vào, bố cục ảnh, loại font chữ, các ký tự đặc biệt (ví dụ công thức toán học), các dạng chữ viết phức tạp (như chữ Trung Quốc) và một số yếu tố khác 1.1.2 Một số công nghệ, phần mềm OCR tiêu biểu
Lĩnh vực OCR hiện nay được rất nhiều cá nhân, tổ chức quan tâm nghiên cứu, nhiều công nghệ OCR ra đời và được ứng dụng rộng rãi trong nhiều lĩnh vực liên quan đến nhận dạng Dưới đây liệt kê danh sách một số phần mềm OCR tiêu biểu[17]:
Trang 13Microsoft Office OneNote 2007 Proprietary
Nicomsoft CrystalOCR Proprietary
1.1.3 Một số khái niệm cơ bản
Pixel (Picture element)[2] : Ảnh trong thực tế là một ảnh liên tục về
không gian và giá trị về độ sáng Ảnh cần phải số hóa để có thể xử lý ảnh bằng máy tính Trong quá trình số hóa ảnh người ta biến đổi tín hiệu liên tục thành tín hiệu rời rạc thông qua quá trình lấy mẫu (rời rạc hóa về không gian) và lượng hóa thành phần giá trị mà nguyên tắc mắt thường không phân biệt được hai điểm
kề nhau Khái niệm Picture Element (ta quen gọi hay viết là pixel - phần tử ảnh,
điểm ảnh) được sử dụng trong quá trình này Do vậy một ảnh có thể coi là một tập các pixel Ở đây cũng cần phân biệt khái niệm pixel hay đề cập đến trong các
hệ thống đồ họa máy tính Để tránh nhầm lẫn ta tạm gọi khái niệm pixel này là pixel thiết bị Khái niệm pixel thiết bị có thể xem xét như sau: khi ta quan sát màn hình (chế độ đồ họa), màn hình không liên tục mà gồm nhiều điểm nhỏ, gọi
là pixel Trong ảnh 2 chiều, mỗi pixel gồm một cặp tọa độ x, y và màu
Độ phân giải của ảnh(Resolution)[2]: chính là mật độ điểm ảnh được ấn định trên một ảnh số được hiển thị Theo định nghĩa, khoảng cách giữa các điểm ảnh phải được chọn sao cho mắt người vẫn thấy được sự liên tục của ảnh Việc lựa chọn khoảng cách thích hợp tạo nên một mật độ phân bổ, đó chính là độ phân giải và được bố trí theo hai trục x, y trong không gian hai chiều Đơn vị cho độ phân giải là dpi (dots per inch)
Trang 14Mức xám của ảnh: Mỗi điểm ảnh đều có một cường độ sáng Mỗi mức
xám là kết quả của sự mã hóa tương ứng một cường độ sáng của mỗi điểm ảnh với một giá trị số - kết quả của quá trình lượng hóa Các thang giá trị mức xám thông thường là 16, 32, 64, 128, 256, trong đó mức thông dụng nhất là 256, mỗi pixel được mã hóa bởi 8 bit
Ảnh nhị phân: Tùy theo giá trị mức xám của điểm ảnh mà các ảnh được
phân chia ra thành ảnh màu, ảnh xám hay ảnh nhị phân Khi trên một ảnh chỉ có giá trị 0 hoặc 1 thì ta nói đó là một ảnh nhị phân hay một ảnh đen trắng và các điểm ảnh của nó gọi là điểm ảnh nhị phân
Ảnh màu: hay còn gọi là ảnh RGB Cách biểu diễn cũng tương tự như
ảnh đen trắng, chỉ khác là các số tại mỗi phần tử của ma trận biểu diễn cho ba màu riêng lẻ gồm: đỏ (Red), lục (Green), lam (Blue) Để biểu diễn cho một điểm ảnh màu cần 24 bit, 24 bit này chia thành 3 khoảng 8 bit Mỗi khoảng này biểu diễn cho cường độ sáng của một trong các màu chính tổ hợp của các màu ta được nhiều mức biểu diễn, như vậy mỗi điểm ảnh có thể được mô tả rõ giá trị màu tự nhiên của nó (true color)
Ảnh đa cấp xám: là ảnh có nhiều mức xám khác nhau Thực tế chỉ ra rằng
bất cứ ứng dụng nào trên ảnh mức xám cũng được ứng dụng trên ảnh màu Ta có thể biến đổi ảnh màu về ảnh xám Mỗi điểm ảnh màu gồm 3 giá trị (Red, Green, Blue), nếu 3 giá trị này bằng nhau thì ta có ảnh xám (grey) Khi đó mỗi điểm ảnh ta chỉ cần lưu 1 giá trị
Các đường cơ bản trong dòng text
Hình 1.2 Các đường cơ bản trong dòng text
Đường 1 (capline): là đường thẳng giới hạn chiều cao của đỉnh cao nhất
của một số chữ cái (ví dụ S, b,h,l )
Đường 2 (mean line): là đường thẳng ở giữa của một dòng chữ, giới hạn
chiều cao của các chữ bình thường (ví dụ u,a,r,n,….)
Đường 3 (baseline): là đường thẳng thẳng nối các phần chân của hầu hết
các chữ cái trong dòng text, và bất kì một chữ nào cũng nằm trên một đường này
Đường 4 (descent line) là đường thẳng giới hạn phần thấp của các chữ có
thể tạo ra trên một dòng (p,y,…)
Trang 15 Khoảng cách giữa mean line và baseline là chiều cao cơ bản của một dòng chữ, gọi là x-Height
Thành phần liên thông (connected component): là tập hợp các pixel lân
cận nhau Thành phần liên thông gồm thành phần liên thông 4 và thành phần liên thông 8
Hình 1.3 Thành phần liên thông 4 và 8
1.2 Các bước cơ bản trong một hệ thống OCR
Hoạt động của một hệ thống OCR thông thường gồm các bước sau: thu nhận ảnh, tiền xử lý ảnh, phân tích bố cục trang, tách dòng và từ, huấn luyện và nhận dạng, hậu xử lý Kết quả của mỗi bước ảnh hưởng rất lớn đến kết quả cuối cùng của hệ thống
Hình 1.4 Quy trình cơ bản trong một hệ thống OCR
1.2.1 Thu nhận ảnh
Thu nhận ảnh là bước đầu tiên trong quy trình của hệ thống OCR Hình ảnh tài liệu bên ngoài được thu nhận qua các thiết bị thu ảnh như camera, máy ảnh, máy scan và được số hóa để biến đổi tín hiệu tương tự thành tín hiệu rời rạc (lấy mẫu) và lưu vào máy tính dưới các định dạng file ảnh Ảnh thu được có thể
là ảnh trắng đen, ảnh màu, ảnh đa cấp xám Độ phân giải của ảnh ảnh hưởng rất lớn đến kết quả OCR Ảnh thu được có độ phân giải 300dpi không phải là chuẩn
Trang 16chính thức quy ước cho các ảnh đầu vào của các hệ thống OCR nhưng cũng có thể xem như một chuẩn tương đối tốt Tuy nhiên không phải ảnh có độ phân giải càng cao thì kết quả OCR càng tốt Do đó các hệ thống OCR khuyến nghị các bức ảnh đầu vào nên có độ phân giải từ 200dpi – 400dpi Để nâng cao hiệu quả OCR, ngoài việc cố gắng đảm bảo độ phân giải của ảnh nằm trong khoảng tương đối chấp nhận được, các bức ảnh thu được cần tiến hành xử lý nhằm nâng cao chất lượng trước khi đưa vào nhận dạng Quá trình này gọi là tiền xử lý ảnh 1.2.2 Tiền xử lý ảnh
Các bức ảnh thu được chất lượng thường không tốt như ý muốn, có thể do một số nguyên nhân như: chất lượng của thiết bị thu ảnh (độ phân giải thấp), yếu
tố nguồn sáng, tài liệu ảnh thực tế bị suy biến, tư thế chụp không đúng Do vậy, ảnh trước khi đưa vào nhận dạng cần phải qua một số bước xử lý nhằm tăng cường chất lượng ảnh, làm nổi bật một số đặc tính của ảnh, đặc biệt tăng độ tương phản giữa foreground (đối tượng trong ảnh) và background (nền ảnh) Một số công việc chủ yếu trong bước này bao gồm nhị phân hóa ảnh, dò hướng đúng và chỉnh độ nghiêng ảnh, giảm nhiễu để loại bỏ những thành phần không cần thiết
1.2.2.1 Nhị phân hóa ảnh
Mục đích của nhị phân hóa là biến ảnh gốc thành ảnh nhị phân nhằm tăng
sự tương phản giữa nền (background) và các đối tượng (object hay foreground) Nếu đầu vào là ảnh màu, trước khi nhị phân hóa cần chuyển sang ảnh xám theo tiêu chuẩn:
Grey = 0.3R + 0.59G + 0.11 B
Quan trọng nhất trong bước nhị phân hóa ảnh gốc là xác định ngưỡng xám T (0 ≤ T ≤ 255) Nếu giá trị cường độ của một pixel ≤ T, pixel này được thiết lập là màu đen, ngược lại là màu trắng Nhị phân hóa ảnh gồm 2 loại:
Nhị phân hóa toàn cục: sử dụng một ngưỡng T duy nhất cho toàn bộ bức ảnh
Nhị phân hóa cục bộ: tính toán lại ngưỡng T thích hợp cho từng vùng ảnh
Trang 17
Việc tính toán chọn ngưỡng T phù hợp có ý nghĩa rất lớn trong quá trình nhị phân hóa Một số phương pháp xác định ngưỡng xám T phổ biến và hiệu quả như Otsu (ngưỡng toàn cục); Niblack, Sauvola (ngưỡng cục bộ) Dưới đây trình bày phương pháp Otsu trong việc xác định ngưỡng xám toàn cục
Phương pháp Otsu được mô tả như sau:
Bước 1: Chọn một giá trị ước lượng ngưỡng xám ban đầu T Thông
thường T được chọn là giá trị mức xám trung bình của bức ảnh Ví dụ
Trang 18Bước 3: Tính toán giá trị mức xám trung bình 1 và 2 của hai phân vùng
Bước 4: Tính toán lại giá trị ngưỡng T mới : T = 1 2
2
Bước 5: Lặp lại bước 2 đến bước 4 đến khi nào độ biến thiên của ngưỡng
T bé hơn giá trị cho trước
Hình 1.7 Kết quả chọn ngưỡng xám theo phương pháp Otsu
1.2.2.2 Chỉnh độ nghiêng và hướng
Ảnh thu được có thể bị nghiêng, bị xoay ngang dọc do vị trí đặt tài liệu cần thu ảnh lệch vị trí đúng với thiết bị thu ảnh Với những bức ảnh như thế, hiệu quả nhận dạng giảm đi rõ rệt Do đó trước khi nhận dạng, ta cần thực hiện việc chỉnh lại độ nghiêng và hướng của trang ảnh Sau khi xác định được độ nghiêng và hướng chính xác của ảnh sẽ thực hiện việc quay ảnh về lại trạng thái đúng ban đầu Tuy nhiên ít nhiều chất lượng ảnh sẽ bị giảm sau khi quay
Một số phương pháp xác định độ nghiêng trang ảnh như phương pháp hình chiếu, phương pháp biến đổi Hough, phương pháp dựa trên các thành phần liên thông và một số phương pháp khác như phân tích độ lệch so với trục dọc, biến đổi Fourier, các phép toán hình thái[8] Nhiều phương pháp dò hướng cũng được đề xuất và áp dụng, một số tác giả như Caprari đưa ra năm 1999, Aradhyu đưa ra năm 2005, Lu và một số tác giả khác đưa ra năm 2006[8] Việc dò tìm độ nghiêng và hướng của trang ảnh có thể thực hiện riêng lẻ hoặc kết hợp đồng thời với nhau Một phương pháp tiêu biểu cho việc kết hợp giữa việc dò độ nghiêng
và hướng được đưa ra bởi Breuel (và một số tác giả khác) sử dụng mô hình hóa hình học của các dòng text chữ viết Latinh[8]
Dò độ nghiêng và quay ảnh thực hiện trong phạm vi góc -45o, +45o (Hình
Hình 1.8 Ảnh văn bản trước và sau khi chỉnh nghiêng
Trang 19Hình 1.9 Ảnh văn bản trước và sau khi chỉnh hướng đúng
1.2.2.3 Giảm nhiễu
Việc xuất hiện nhiễu, đặc biệt ở biên ảnh (các thành phần không mong muốn trong ảnh) làm tăng thời gian và giảm kết quả OCR bởi nhiễu trong ảnh nếu không làm lọc đi sẽ được OCR như là ký tự bình thường, thậm chí làm sai lệch nghiêm trọng kết quả với các vùng text thực sự
Hình 1.10 Các vùng nhiễu trên ảnh văn bản[8]
Nhiễu trong tài liệu ảnh có thể do nhiều nguyên nhân: sự xuống cấp của tài liệu theo thời gian, sự tác động vật lý, hóa học của môi trường xung quanh; tác động ngoại cảnh trong quá trình chụp ảnh như ánh sáng không tốt Do đó trước khi nhận dạng, ảnh cần áp dụng một vài kỹ thuật phù hợp để giảm nhiễu nhằm tạo ra một ảnh tốt hơn cho các bước phía sau của quá trình OCR
Nhiễu trong ảnh thực tế gồm nhiều loại song chúng ta thường chú ý và xem xét đến 3 loại nhiễu chính: nhiễu cộng, nhiễu nhân, nhiễu xung [3]
- Nhiễu cộng thường phân bố khắp ảnh Nếu gọi ảnh quan sát (ảnh thu được) là Xqs , ảnh gốc là Xgốc, nhiễu là , ảnh thu được có thể biểu diễn bởi:
Xqs = Xgốc +
Trang 20- Nhiễu nhân thường được phân bố khắp ảnh và ảnh thu được sẽ biểu diễn bởi công thức:
Xqs = Xgốc *
- Nhiễu xung thường gây đột biến tại một số điểm ảnh
Từ bản chất của nhiễu (thường tương ứng với tần số cao) và từ cơ sở lý thuyết lọc là: bộ lọc chỉ cho tín hiệu có tần số nào đó thông qua, do đó để lọc nhiễu người ta thường sử dụng bộ lọc thông thấp (theo quan điểm tần số không gian) hay lấy tổ hợp tuyến tính để sang băng (bộ lọc trung bình) Để làm nổi cạnh (ứng với tần số cao), người ta sử dụng bộ lọc thông cao, lọc Laplace[2]
Do có nhiều loại nhiễu can thiệp vào quá trình xử lý ảnh nên cần nhiều bộ lọc thích hợp 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à lọc đồng hình (homomorphie); với nhiễu xung ta dùng bộ lọc trung vị, giả trung vị, lọc ngoài (Outlier)[2]
Trong lọc trung bình người ta ưu tiên cho các hướng để bảo vệ biên của ảnh khỏi bị mờ khi làm trơn ảnh Các kiểu mặt nạ được sử dụng tùy theo các trường hợp khác nhau Các bộ lọc trên là bộ lọc tuyến tính theo nghĩa điểm ảnh
ở tâm cửa sổ sẽ được thay bởi tổ hợp các điểm lân cận chập với mặt nạ Lọc thông thấp thường được dùng để làm trơn nhiễu
Các bộ lọc phi tuyến cũng được dùng trong kỹ thuật tăng cường ảnh Trong kỹ thuật này người ta dùng bộ lọc trung vị, giả trung vị, lọc ngoài Với bộ lọc trung vị các điểm ảnh sẽ được thay thế bởi trung vị các điểm ảnh, còn lọc giả trung vị sẽ dùng trung bình cộng của 2 giá trị “trung vị” (trung bình cộng của max và min)[2]
1.2.3 Phân tích bố cục
Tài liệu ảnh thường gồm các “vùng đối tượng” có nội dung, tích chất khác nhau (vùng ảnh, vùng text, bảng biểu ) Phân tích bố cục tài liệu ảnh là một bước quan trọng được thực hiện để xác định cấu trúc, xác định các vùng đối tượng được bố trí trong tài liệu ảnh Cấu trúc của tài liệu ảnh thường được quan tâm trong việc phân tích bố cục là cấu trúc vật lý và cấu trúc lôgic
Cấu trúc vật lý chỉ ra vị trí, đường biên giữa các vùng đối tượng khác nhau Việc xác định cấu trúc vật lý có ý nghĩa rất lớn đối với lĩnh vực OCR trong việc chỉ lấy và xử lý các vùng text, giảm thời gian thực hiện và tăng độ chính xác kết quả
Trang 21Cấu trúc logic chỉ chức năng của từng vùng đối tượng (ví dụ vùng tiêu đề, vùng địa chỉ ) cũng như mối liên hệ logic giữa các vùng đối tượng ấy Xác định cấu trúc logic của tài liệu ảnh cũng có thể suy ra quy tắc đọc phù hợp Ví dụ các văn bản ngôn ngữ Latinh đọc từ trái qua phải, một số ngôn ngữ khác như Trung Quốc, Nhật bản đọc từ phải qua trái Việc xác định cấu trúc logic thường thực hiện sau khi xác định được cấu trúc vật lý
Hình 1.11 b-Cấu trúc vật lý; c,d-Cấu trúc lôgic [3]
Các phương pháp phân tích bố cục tài liệu ảnh có thể chia làm hai loại chính [3]:
- Phương pháp có thứ bậc:
Phương pháp bottom-up: bắt đầu từ các phần tử nhỏ nhất (pixel, thành phần liên thông), thực hiện liên kết các phần tử liên quan để thành các vùng lớn hơn
Phương pháp top-down: bắt đầu từ một vùng ảnh lớn, liên tục phân rã thành các vùng nhỏ hơn
- Phương pháp không có thứ bậc: như Fractal Signature, Adaptive and-merge
split-Một số thuật toán phổ biến được áp dụng trong phân tích bố cục tài liệu ảnh như: Run-length Smearing Algorithm (1982); Recursive X-Y Cuts (1984); Whitespace Analysis (1994); Docstrum (1993); Voronoi (1998); RAST (2002) – bởi Thomas Breuel
1.2.4 Tách dòng và từ
Phân tích bố cục tài liệu ảnh xác định các block text Các thuật toán tìm dòng sẽ chạy trên các block text để tách thành các dòng text (text-line) Một số
Trang 22thuật tìm dòng được thiết kế có thể xác định được các dòng text mà không cần xoay ảnh nghiêng về vị trí đúng Do đó tránh cho chất lượng tài liệu ảnh bị giảm xuống khi phải thực hiện thao tác xoay ảnh
Tùy theo tính chất của các ký tự trong một từ cũng như vị trí tương đối của các từ trong một dòng text, các thuật toán tách từ được chọn một cách phù hợp để cắt các dòng text đã xác định ở trên thành các từ rời nhau
1.2.5 Huấn luyện và nhận dạng
Một hệ thống OCR thường chỉ cho ra kết quả rất hạn chế nếu như không được tập huấn, một ảnh ký tự dù hình dạng đơn giản cũng rất khó xác định đó là
ký tự gì nếu không có sự so sánh với ảnh ký tự mẫu cho trước Huấn luyện chính
là làm cho hệ thống OCR có thể nhận biết một cách chính xác các ảnh của một tập lớn các ký tự mẫu khác nhau về ngôn ngữ, font chữ Các dấu hiệu để nhận biết tập ảnh các ký tự này được hệ thống lưu lại theo một phương thức nào đó thành dữ liệu tập huấn Khi muốn nhận dạng một ký tự, hệ thống dựa vào dữ liệu tập huấn sẽ cho ra một ký tự tương ứng phù hợp nhất
Hầu hết các thuật toán OCR thường có hai phần chính: trích chọn đặc trưng và phân loại Một thành phần phụ cũng tham gia vào quá trình nhận dạng
là quá trình xử lý dựa trên ngữ cảnh [3]
Trích chọn đặc trưng liên quan đến việc rút trích ra những thuộc tính của đối tượng dưới dạng các độ đo Để biểu diễn một lớp ký tự phải xây dựng một
mô hình nguyên mẫu chung cho các lớp ký tự Và do đó quá trình trích chọn đặc trưng sẽ cố gắng tìm ra các đặc tính dựa trên nguyên mẫu đã xây dựng cho các lớp Các đặc trưng chung như số lượng các lỗ hổng trong ký tự, mặt lõm của đường viền bên ngoài, sự nhô ra của điểm cao nhất và các đặc trưng nội tại, các điểm cắt ngang, các điểm kết thúc, các góc sẽ được sử dụng Mỗi ảnh ký tự sẽ trích ra các đặc trưng và phân loại chúng vào lớp tương ứng
Trong phương pháp phân loại dựa trên thống kê, những mẫu ảnh ký tự được biểu diễn bằng các điểm đặc trưng trong không gian đa chiều Mỗi một thành phần trong không gian đa chiều biểu diễn cho một độ đo đặc trưng Quá trình phân loại sẽ chia không gian đa chiều thành các vùng tương ứng với các lớp ký tự và chúng được gán nhãn tương ứng
Nhận dạng dựa trên ngữ cảnh sử dụng thông tin từ các ký tự khác nhau
được nhận dạng trong một từ và ý nghĩa của từ khi lắp ghép ký tự vào từ Công việc này thường được kết hợp với từ điển của ngôn ngữ nhận dạng Một công cụ hiệu quả mà các hệ thống OCR hay sử dụng là mô hình ngôn ngữ thống kê
Trang 23Hiện nay nhiều phương pháp nhận dạng được nghiên cứu và liên tục cải tiến tạo nên hiệu quả rõ rệt cho kết quả nhận dạng, tuy nhiên cũng gặp những khó khăn nhất định Hai trở ngại lớn cho các phương pháp nhận dạng là loại chữ
1.2.6 Xử lý kết quả
Kết quả nhận dạng ít nhiều vẫn xuất hiện lỗi Lỗi có thể do con người trước nhận dạng như lỗi đánh máy (lỗi này ít xảy ra) hoặc lỗi do nhận dạng (phổ biến) Lỗi nhận dạng có thể chia thành một số loại:
- Lỗi phân đoạn: cl d, rn m
- Lỗi do nhầm lẫn hình dạng: e c, 2 Z, o 0
- Lỗi do nhiễu (nhận dạng nhiễu thành các ký tự): ?/”
Với kết quả nhận dạng được, ta thường áp dụng các biện pháp sửa lỗi để
tăng hiệu quả xử lý Nếu lỗi thuộc về loại lỗi chính tả (ví dụ huu – hưu, mang –
marg, h0a – hoa), có thể dùng các chương trình sửa lỗi chính tả phù hợp với
từng ngôn ngữ Nếu là lỗi cú pháp (ví dụ tinh – tình, vân – vấn), thường người
đọc sẽ duyệt lại và sửa bằng tay
Trang 24CHƯƠNG 2 – CÁC CÔNG NGHỆ SỬ DỤNG TRONG HỆ THỐNG 2.1 Công nghệ Tesseract OCR
2.1.1 Giới thiệu về Tesseract OCR
Tesseract[11,12] là công nghệ OCR được phát triển những năm từ 1984 đến 1994 ở HP, bắt đầu như một dự án nghiên cứu tiến sĩ ở phòng thí nghiệm Tuy đạt được những kết quả nhất định nhưng lúc ấy vẫn chưa thể phát triển thành sản phẩm thương mại Cuối năm 2005, HP phát hành Tesseract dưới dạng
mã nguồn mở và hiện tại được tập đoàn Google tài trợ phát triển Địa chỉ hiện tại
cho mã nguồn Tesseract là http://code.google.com/p/teseract-ocr Tesseract
được phát triển để chạy trên cả hệ điều hành nhân Linux và Windows Phiên bản hiện tại là Tesseract 3.01 với một số nhà phát triển tiêu biểu như Ray Smith, Thomas Breuel, Luc Vincent
Từ khi Tesseract OCR trở thành mã nguồn mỡ, nó được phát triển một cách nhanh chóng, hỗ trợ nhận dạng trên 30 ngôn ngữ khác nhau, độ chính xác đang tiến tới tỉ lệ 100% trên một số ngôn ngữ với những ảnh văn bản chất lượng Tuy vậy dự án Tesseract vẫn chưa phát triển một GUI cho người dùng sử dụng công nghệ này Các tổ chức, cá nhân muốn sử dụng Tesseract OCR phải dùng source code cung cấp sẵn đem về tùy biến và xây dựng thành GUI OCR riêng cho mình Sản phẩm OCR dựa trên Tesseract có thể phát hành lại dưới dạng mã nguồn mã hay sản phẩm thương mại Một số GUI dựa trên Tesseract:
VietOCR: Yêu cầu Java hoặc NET
gImageReader: Yêu cầu python, PyGtk
OCRFeeder: Yêu cầu linux, Python, pyGTK, Ghostscript, Unpaper
FreeOCR: Yêu cầu Windows, NET
PDF OCR X: Yêu cầu Mac OS X 10.5/Windows với Java 1.6 trở lên Lime OCR: Yêu cầu Windows, ImageMagick
Ocrivist: Yêu cầu Linux, Pascal
Lector: Yêu cầu Python, Qt4
Tesseract-GUI: Yêu cầu python, pyGTK
QTesseract: Yêu cầu QT4, c++
Bên cạnh các GUI, cộng đồng quan tâm đến OCR đã xây dựng nhiều wrapper cho Tesseract tương ứng trên nhiều ngôn ngữ lập trình, thuận tiện cho việc xây dựng các ứng dụng OCR nhanh chóng mà không phải đi sâu tìm hiểu source code Tesseract đã phát hành Các wrapper Tesseract được xây dựng để tạo ứng dụng OCR trên cả máy tính và điện thoại di động
Trang 25Với phiên bản Tesseract 3.0x:
C wrapper: http://code.google.com/p/ocrivist/source/browse/#svn%2Ftessintf .Net: http://code.google.com/p/tesseractdotnet/
- http://code.google.com/p/tesjeract (JNI wrapper)
- http://tess4j.sourceforge.net/ (JNA wrapper)
Ngoài ra còn có một số wrapper khác như:
- tesseract-android-tools: tập các hàm Android API cho tesseract
- Mobile OCR: Mục đích là tạo ra ứng dụng OCR (trên ảnh do camera
mobile chụp được) trên nền tảng Android Ứng dụng tương lai có thể áp dụng cho những người có thị lực kém
- Clarify: giúp OCR chỉ trên file PDF Clarify là một modun python
module, wrapper cho tesseract-ocr, xpdf và netpbm Yêu cầu: python, tesseract-ocr, xpdf, netpbm
- hOcr2Pdf.NET: là thư viện cho người lập trình tạo ra các ứng dụng để có
thể tìm kiếm trên file pdf Yêu cầu: NET 2.0 or higher, Tesseract 3.0, JBig2.exe
- ScanBizCards: Giải pháp cho scan business card trên mobile Yêu cầu
iPhone 4/iPhone 3/Android 2.0
- customocr.com: là dịch vụ OCR dựa trên Web
- Tally-Ho: đọc màn hình cho các site như là google book
- Mayan EDMS: hệ thống quản lý tài liệu với tesseract
- Olena: nền tảng xử lý ảnh phổ biến và hiệu quả có sử dụng tesseract
Trang 262.1.2 Tesseract làm việc như thế nào?
Hình 2.1 Kiến trúc Tesseract [11,12]
Quá trình làm việc của Tesseract [11,12] được mô tả tóm tắt như sau:
- Adapting thresholding:: thực hiện việc nhị phân hóa ảnh đầu vào (ảnh
màu hoặc ảnh xám ) dựa trên việc xác định ngưỡng xám tương thích
Tesseract cung cấp 2 phương pháp xác định ngưỡng xám: ngưỡng otsu, ngưỡng tương thích cục bộ isodata
- Page layout analysis: thuật toán phân tích bố cục trang qua việc dò
tab-stop [13] được đề xuất và cài đặt trong Tesseract bởi Ray Smith nhằm xác định các block text, vùng ảnh
Hình 2.2 Ảnh trước và sau phân tích bố cục [13]
- Text-line finding: Thuật toán tìm dòng text [10] được thiết kế dò các
dòng text trong block mà không phụ thuộc vào độ nghiêng của ảnh tài liệu ban đầu Khi đó các block text được tổ chức thành các dòng text
Trang 27- Baseline fitting: Với mỗi dòng text tìm được, Tesseract xem xét và ước
lượng để tìm ra các đường cap line, mean line, baseline, descent line thích hợp
Hình 2.3 Fitting cap line, mean line, baseline, descent line
- Fixed pitch detection and chopping: Trên mỗi dòng text, Tesseract kiểm
tra để xác định có phải là fixed pitch text (phần text mà mỗi ký tự có độ rộng không đổi) hay không Tại những nơi xác định được fixed pitch text, Tesseract sẽ bổ các từ thành các ký tự
Hình 2.4 Ví dụ bổ fixed pitch thành các ký tự
- Proportional (non-fixed pitch) word finding: Chữ in nghiêng, chữ số,
dấu chấm câu là những yếu tố tạo ra các trường hợp đặc biệt về khoảng cách giữa các ký tự cũng như giữa các từ trên các dòng text Ví dụ khoảng trống giữa hàng chục và hàng đơn vị trong “11.9%” bằng khoảng trống chung nhưng lại lớn hơn khoảng cách hai từ “erated” và “junk” Hay là hầu như không có khoảng trống giữa các ký tự trong các từ “of” và
“financial” Việc bổ các proportional text thành các từ sử dụng tính chất khoảng cách và khoảng cách mờ
Hình 2.5 Sự khác nhau trong khoảng các từ
- Word recognition: Các khối được chia cắt nhỏ nhất ở bước trên được gọi
là blod Quá trình nhận dạng từ trải qua 2 pha Pha đầu tiên của quá trình nhận dạng cố gắng nhận dạng lần lượt từng blod Với mỗi blod thỏa mãn
sẽ được chuyển đến một phân lớp tương thích (adaptive classifier) như là
dữ liệu tập huấn Phân lớp tương thích được tăng thêm khả năng làm cho việc nhận dạng chính xác hơn cho những phần text phía sau Các từ không được nhận dạng tốt ở pha thứ nhất sẽ được nhận dạng lại ở pha thứ hai bằng cách bổ các từ này thành các ký tự nhỏ hơn, nhận dạng và kết hợp lại Trong quá trình nhận dạng từ, kết hợp với việc phân tích ngữ cảnh và
cú pháp để cho ra kết quả chính xác hơn
Trang 282.1.3 Vấn đề tập huấn ngôn ngữ
Ứng dụng thực tế cho thấy Tesseract engine rất nhạy cảm tới sự khác biệt trong hình dáng font chữ Do đó để có thể OCR tốt, Tesseract cũng cần tập huấn cho từng ngôn ngữ với nhiều loại font khác nhau, đặc biệt là các font hay sử dụng Để nhận dạng một ký tự đã được trích chọn, Tesseract sẽ tìm kiếm trong
dữ liệu ngôn ngữ đã tập huấn và đưa ra ký tự tương đồng nhất Ngoài ra dữ liệu ngôn ngữ huấn luyện còn tham gia việc thay thế một số ký tự lỗi dựa theo ngữ
cảnh ngay sau khi nhận dạng Ví dụ: c0m = com, rr=n, l<=k, cl=d Luận văn
trình bày vấn đề tập huấn ngôn ngữ cho Tesseract 3.0x[14]
Tesseract ban đầu chỉ được thiết kế để OCR ngôn ngữ tiếng Anh nhưng nhanh chóng được cải tiến về engine và hệ thống tập huấn để có thể làm việc với các ngôn ngữ khác và các ký tự UTF-8 Với Tesseract 3.01, đã có 38 ngôn ngữ được tập huấn Tiếng Việt cũng đã có ngôn ngữ được tập huấn với các font cơ bản như Times New Roman, Courier New, Vni-Times
Để huấn luyện cho một ngôn ngữ, cần tạo ra một số file dữ liệu trong thư
mục tessdata, sau đó ghép (móc nối với nhau) các file này thành một file đơn Tên quy ước thường là languagecode.file_name, language code tuân theo chuẩn
ISO 639-3 Tuy nhiên language code có thể là một chuỗi bất kỳ Ví dụ những file được tạo ra cho ngôn ngữ tiếng Anh (3.00) gồm:
và cuối cùng được trộn chung thành file tessdata/eng.traineddata
File tessdata/eng.traineddata chỉ đơn giản là ghép các file con
ở trên lại với nhau, đồng thời có một table sẽ lưu giữ vị trí làm dấu hiệu nhận biết các file con ấy Thư viện ccutil/tessdatamanager.h trong source code cung cấp danh sách các tên file hiện tại đã được chấp nhận
Trang 29Quy trình tập huấn Tesseract được giới thiệu chi tiết trong trang
http://code.google.com/p/wiki/Training Tesseract, tuy hơi phức tạp nhưng có thể
tóm tắt các bước sau (chú ý trước khi tập huấn cài đặt cần Tesseract 3.0x vào máy):
Tạo ra ảnh tập huấn Với mỗi trang văn bản mẫu (nội dung văn bản là các
ký tự của một ngôn ngữ theo một loại font nhất định), in ra và quét ở độ phân giải khoảng 300dpi tif, đặt tên scan.tif Cần đảm bảo tối thiểu số mẫu cho mỗi
ký tự, trung bình là 10 và 5 cho một số ký tự hiếm Với những ký tự tần số xuất hiện cao, ít nhất là 20 mẫu nhưng không quá 32 mẫu
Tạo ra box file cho mỗi ảnh tập huấn Box file là một file text chứa danh sách các ký tự trong ảnh tập huấn Để tạo ra box file, chạy câu lệnh:
tesseract scan.tif scan batch.nochop makebox
lúc này sẽ sinh ra file scan.txt, kiểm tra sửa lỗi ở file này, đặt lại tên thành scan.box Tesseract chưa có GUI để tạo ra box file, có thể dùng một số GUI đã
có để hỗ trợ edit box file Dưới đây là danh sách một vài Box File Editor đã được cộng đồng xây dựng:
Với mỗi cặp file ảnh huấn luyện và box file tương ứng: chạy tesseract ở chế độ huấn luyện để tạo ra file scan.tr Cú pháp:
tesseract scan.tif scan nobatch box.train
Trang 30 Tesseract cần biết tập các ký tự mà nó có thể output: chạy lệnh unicharset_extractor để tạo ra file unicharset Cú pháp:
wordlist2dawg frequent_words_list freq-dawg
wordlist2dawg words_list word-dawg
Tạo ra file text UTF-8 unicharambigs: file này hỗ trợ việc thay thế
giữa các chuỗi nhập nhằng với nhau sau khi nhận dạng Ví dụ m = r n,
+ Dòng thứ nhất : chỉ version;
+ Các dòng tiếp theo, mỗi dòng chứa 5 trường riêng biệt: trường 1 chứa số từ của trường 2; trường 3 chứa số từ của trường 4;
+ Quy tắc thay thế: Các từ trong trường 2 sẽ được thay thế bằng các
từ trong trường 4 nếu trường 5 có giá trị 1; ngược lại nếu trường 5
có giá trị bằng 0, sự thay thế là không cần thiết
Gộp tất cả các file lại với nhau: Đổi tên lại các tập tin vừa tạo ra với việc
thêm tiền tố languagecode , sau đó chạy lệnh combine_tessdata để
gộp các file lại với nhau Cú pháp:
Trang 312.2 Công nghệ Android
2.2.1 Giới thiệu về hệ điều hành android
Tháng 7/2005 Google mua lại công ty phát triển phần mềm Android Sau hơn 2 năm âm thầm phát triển, Google liên kết với các tập đoàn và công ty lớn danh tiếng trên thế giới dưới danh hiệu "Open Handset Alliance" (OHA) cùng nhau sáng tạo và phát triển công nghệ phần mềm "Android" cho các loại điện thoại di động smartphone với một thị trường rất rộng lớn (3 tỷ máy) để cạnh tranh với những đối thủ lớn như Symbian, Microsoft, Palm
Hình 2.6 Các thành viên của "Liên minh di động mở"
http://hi-android.info
Từ khi công bố, Android[5,16] đã là hệ điều hành điện thoại di động mở nguồn mở miễn phí do Google phát triển dựa trên nền tảng mã nguồn mở Linux
OS (Kernel 2.6) cho máy di động và những phần mềm trung gian (middleware)
để hỗ trợ các ứng dụng mà người sử dụng cần đến Do đặc điểm của Android là bản quyền mã nguồn mở của nó rất thông thoáng (dựa trên nền tảng bản quyền của Apache V 2.0) nên bất kỳ một hãng sản xuất phần cứng nào cũng đều có thể
tự do sử dụng hệ điều hành Android cho thiết bị của mình, miễn là các thiết bị
ấy đáp ứng được các tiêu chuẩn cơ bản do Google đặt ra (có cảm ứng chạm, GPS, 3G, ) Các nhà sản xuất có thể tự do thay đổi phiên bản Android trên máy của mình một cách tự do mà không cần phải xin phép hay trả bất kì khoản phí nào nhưng phải đảm bảo tính tương thích ngược (backward compatibility) của phiên bản chế riêng đó[20]
Những tính năng cơ bản hỗ trợ trên nền tảng Android[5,16]:
- Ứng dụng framework cho phép tái sử dụng và thay thế các thành phần
- Máy ảo Dalvik được thiết kế phù hợp để chạy trên các thiết bị di động
- Trình duyệt web được tích hợp dựa trên mã nguồn mở WebKit
- Các thư viện đồ họa 2D, 3D mạnh mẽ và tối ưu
- Hệ quản trị cơ sở dữ liệu gọn nhẹ SQLite
Trang 32- Hỗ trợ các định dạng âm thanh phổ biến, video, và các định dạng hình ảnh quen thuộc như MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF
- Hỗ trợ GSM, Bluetooth, EDGE, 3G và WiFi
- Hỗ trợ camera, GPS, la bàn
Đặc biệt Google phát triển Android SDK cung cấp các công cụ và bộ thư viên các hàm API cần thiết để phát triển ứng dụng cho nền tảng Android sử dụng ngôn ngữ lập trình java
Hệ điều hành Android ra đời đã tạo nên một cuộc cách mạng công nghệ thực sự, cơ chế nguồn mở tạo ra nhiều thách thức và cơ hội cho những nhà phát triển ứng dụng; đồng thời mang lại cho người dùng điện thoại sự cảm nhận khác biệt về 1 chiếc Smartphone, chưa đầy 2 năm kho phần mềm cho Android đã lên đến còn số hơn 30 nghìn ứng dụng Được nhiều tập đoàn công nghệ hàng đầu tham gia phát triển, nền tảng này ngày càng nhiều tích năng nổi trội và đầy sáng tạo Phiên bản hệ điều hành Android mới nhất là 4.0 (tính đến ngày 30/08/2011) 2.2.2 Kiến trúc hệ thống
Kiến trúc Android[5,16,18] bao gồm các tầng và các thành phần trong đó Tầng sẽ sử dụng các dịch vụ cung cấp bởi các tầng dưới Android được chia thành 4 tầng: tầng nhân linux, tầng Libraries và Android Runtime, tầng Application Framework, tầng Application Các thành phần trong hệ điều hành Android được viết bằng cả C/C ++ và Java
Hình 2.7 Kiến trúc Android OS[16]