9152_4.1.4. Tra từ điển Anh Việt qua camera trên điện thoại di động dùng android

luận văn tốt nghiệp

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ TRI THỨC

TRẦN VĂN TRI – 0812543
NGUYỄN MINH TRÍ – 0812548

TRA TỪ ĐIỂN ANH VIỆT QUA CAMERA TRÊN
ĐIỆN THOẠI DI ĐỘNG DÙNG ANDROID

KHÓA LUẬN TỐT NGHIỆP CỬ NHÂN CNTT

GIÁO VIÊN HƯỚNG DẪN
ThS. BÙI TẤN LỘC
PGS. TS. ĐINH ĐIỀN

KHÓA 2008- 2012
ii

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
TpHCM, ngày ….. tháng …… năm ……

Giáo viên hướng dẫn

iii

NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
Khóa luận đáp ứng yêu cầu của Khóa luận cử nhân CNTT.
TpHCM, ngày ….. tháng …… năm ……

Giáo viên phản biện

iv

LỜI CẢM ƠN

Chúng em xin gửi lời cám ơn sâu sắc đến thầy Đinh Điền và thầy Bùi Tấn
Lộc là những người đã trực tiếp hướng dẫn chúng em, tạo nhiều điều kiện thuận lợi,
góp ý kiến về mặt chuyên môn trong luận văn và nhờ đó mà chúng em mới có thể
hoàn thành được luận văn trong thời gian cho phép.

Chúng con cũng xin gửi lời cám ơn đến cha mẹ và gia đình là những người
thân nhất đã nuôi dưỡng, động viên, tạo điều kiện thuận lợi cho chúng con.

Chúng em xin cảm ơn các anh chị trong công ty Kim Từ Điển đã giúp đỡ,
tạo điều kiện giúp chúng em hoàn thành luận văn này.

Đồng thời, chúng em cũng xin cám ơn chân thành đến quý thầy cô trong
Khoa và các bạn bè gần xa đã luôn quan tâm và theo sát chúng em tạo cho chúng
em nguồn động lực để hoàn thành luận văn.

Trong quá trình thực hiện luận văn có gì sai sót, kính mong nhận được sự chỉ
bảo của quý thầy cô.
Tp Hồ Chí Minh, ngày … tháng … năm 2012
Nhóm sinh viên thực hiện

Trần Văn Tri – Nguyễn Minh Trí

v

Khoa Công Nghệ Thông Tin
Bộ môn Công Nghệ Tri Thức

ĐỀ CƯƠNG CHI TIẾT

Tên Đề Tài: Tra từ điển Anh Việt qua camera trên điện thoại dùng Android
Giáo viên hướng dẫn: PGS. TS. Đinh Điền – ThS. Bùi Tấn Lộc
Thời gian thực hiện: (từ ngày nhận đề tài đến ngày 25/6/2012 )
Sinh viên thực hiện:

Trần Văn Tri – 0812543
Nguyễn Minh Trí – 0812548
Loại đề tài: Xây dựng ứng dụng

Nội Dung Đề Tài: Xây dựng ứng dụng tra từ điển Anh-Việt trực tiếp trên điện
thoại di động dùng hệ điều hành Android qua camera. Tìm hiểu bộ thư viện nhận
dạng ký tự quang học Tesseract, cách thức chuyển mã Tesseract để chạy trên nền
tảng Android. Tìm hiểu môi trường lập trình trên Android, các kỹ thuật xử lý ứng
như thu nhận ảnh thông qua camera của điện thoại, sử dụng công cụ NDK để chạy
mã nguồn C/C++. Tìm hiểu và cài đặt các thuật toán tra từ điển, cấu trúc lại tập tin
dữ liệu từ điển, thuật toán khôi phục từ gốc Stemming và tìm từ gần đúng. Chương
trình sau khi hoàn thiện sẽ bao gồm chức năng tra từ điển trực tiếp qua camera hoặc
tra từ qua việc nhập liệu từ bàn phím.
Kế Hoạch Thực Hiện:
 1/2/2012 – 29/2/2012:
Trần Văn Tri: Tìm hiểu môi trường lập trình Android, tìm hiểu các
thuật toán xây dựng cấu trúc dữ liệu từ điển.
Nguyễn Minh Trí: Tìm hiểu môi trường lập trình Android, các thư
vi

viện nhận dạng ký tự quang học OCR.
 1/3/2012 – 31/3/2012:
Trần Văn Tri: Cài đặt cấu trúc dữ liệu từ điển và tra từ trên Android.
Nguyễn Minh Trí: Tìm hiểu thư viện Tesseract OCR, chuyển mã
Tesseract và chạy thử nghiệm trên Android.
 1/4/2012 – 29/4/2012:
Trần Văn Tri: Tìm hiểu thuật toán khôi phục từ gốc và cài đặt trên
Android.
Nguyễn Minh Trí: Thiết kế kiến trúc cho ứng dụng, tích hợp các tính
năng đã cài đặt bao gồm tra từ điển, bộ nhận diện Tesseract OCR, khôi phục
từ gốc.
 2/5/2012 – 31/5/2012:
Trần Văn Tri: Thiết kế giao diện, các control, sửa lỗi trong chương
trình.
Nguyễn Minh Trí: Lập trình thu nhận ảnh và cải tiến chất lượng ảnh
chụp trên điện thoại.
 1/6/2012 – 24/6/2012
Trần Văn Tri: Mã hóa dữ liệu từ điển, sửa lỗi chương trình. Viết báo
cáo
Nguyễn Minh Trí: Tích hợp thêm tính năng tìm từ gần đúng, sửa lỗi
chương trình. Viết báo cáo.

vii

Xác nhận của GVHD
Hướng dẫn chính

Th.S Bùi Tấn Lộc
Hướng dẫn phụ

PGS.TS Đinh Điền
Ngày……….tháng………năm………
SV thực hiện

Trần Văn Tri – Nguyễn Minh Trí
viii

MỤC LỤC
LỜI CẢM ƠN
………………………………………………………………………………………………….. iv
ĐỀ CƯƠNG CHI TIẾT …………………………………………………………………………………….. v
MỤC LỤC …………………………………………………………………………………………………….. viii
DANH MỤC HÌNH ………………………………………………………………………………………….. xi
DANH MỤC BẢNG ……………………………………………………………………………………….. xiii
CÁC TỪ VIẾT TẮT……………………………………………………………………………………….. xiv
Chương 1 : TỔNG QUAN
………………………………………………………………………………….. 1
1.1. Bối cảnh và nhu cầu thực tế ………………………………………………………………………… 1
1.2. Mục tiêu ………………………………………………………………………………………………….. 3
1.3. Các đề tài liên quan
……………………………………………………………………………………. 2
1.4. Nội dung khóa luận
……………………………………………………………………………………. 4
Chương 2 : CÁC KỸ THUẬT CƠ BẢN TRÊN ANDROID
…………………………………… 6
2.1. Sơ lược về Android
……………………………………………………………………………………. 6
2.1.1. Tổng quan
………………………………………………………………………………………….. 6
2.1.2. Các phiên bản Android
…………………………………………………………………………. 7
2.1.3. Kiến trúc và thiết kế …………………………………………………………………………….. 8
2.1.4. Máy ảo Dalvik ………………………………………………………………………………….. 10
2.1.5. Android software development kit (SDK) ……………………………………………… 11
2.2. Native development kit (NDK) ………………………………………………………………….. 12
2.2.1. Giới thiệu chung ……………………………………………………………………………….. 12
2.2.2. Các hỗ trợ của NDK
…………………………………………………………………………… 13
2.2.3. Sử dụng NDK …………………………………………………………………………………… 13
2.2.4. Nội dung của bộ NDK………………………………………………………………………… 14
2.2.5. Giới thiệu về JNI – Java native interface ……………………………………………….. 15
Chương 3 : NHẬN DẠNG KÝ TỰ QUANG HỌC ……………………………………………… 18
3.1. Giới thiệu chung ……………………………………………………………………………………… 18
3.1.1. Sơ lược về nhận dạng ký tự quang học – OCR ……………………………………….. 18
3.1.2. Các phương pháp áp dụng OCR trong luận văn ………………………………………. 18
ix

3.1.3. So sánh các thư viện / công cụ nhận dạng ký tự quang học
……………………….. 20
3.1.4. Kết luận …………………………………………………………………………………………… 21
3.2. Giới thiệu về bộ nhận dạng ký tự quang học Tesseract …………………………………… 22
3.2.1. Lịch sử
…………………………………………………………………………………………….. 22
3.2.2. Kiến trúc hoạt động
……………………………………………………………………………. 24
3.2.3. Cài đặt và sử dụng thư viện Tesseract trên Android
…………………………………. 25
3.2.4. Huấn luyện dữ liệu trên Tesseract ………………………………………………………… 29
3.2.5. Quá trình huấn luyện ngôn ngữ và font mới …………………………………………… 30
Chương 4 : TRA TỪ ĐIỂN ANH-VIỆT
…………………………………………………………….. 35
4.1. Tổng quan………………………………………………………………………………………………. 35
4.2. Khôi phục từ gốc (Stemming) ……………………………………………………………………. 37
4.3. Tìm từ gần đúng ……………………………………………………………………………………… 40
4.3.1. Khoảng cách Levenstein …………………………………………………………………….. 40
4.3.2. Thay thế các ký tự gần đúng
………………………………………………………………… 42
4.4. Cấu trúc dữ liệu từ điển
…………………………………………………………………………….. 43
4.4.1. Tổ chức các mục từ có cùng kích thước cố định. …………………………………….. 44
4.4.2. Tổ chức các mục từ có kích thước biến động.
…………………………………………. 44
4.4.3. Tổ chức dữ liệu từ điển tra cứu nhanh …………………………………………………… 45
Chương 5 : CÀI ĐẶT VÀ THỰC NGHIỆM ỨNG DỤNG
…………………………………… 50
5.1. Vẽ khung và các control trên màn hình camera. ……………………………………………. 50
5.2. Thu nhận ảnh từ camera điện thoại.
…………………………………………………………….. 52
5.3. Hiển thị tiếng Việt và định dạng chữ trên màn hình.
………………………………………. 55
5.3.1. Hiển thị tiếng Việt trên Android …………………………………………………………… 56
5.3.2. Định dạng ngữ nghĩa từ điển. ………………………………………………………………. 57
5.4. Mã hóa dữ liệu từ điển. …………………………………………………………………………….. 61
5.5. Lưu trữ cấu hình chức năng của ứng dụng.
…………………………………………………… 63
5.6. Kỹ thuật phát âm từ tiếng Anh dùng API trên Android
…………………………………… 66
5.7. Môi trường phát triển ứng dụng …………………………………………………………………. 68
5.8. Hướng dẫn cài đặt và sử dụng ……………………………………………………………………. 69
5.8.1. Cài đặt chương trình
…………………………………………………………………………… 69
5.8.2. Hướng dẫn sử dụng ……………………………………………………………………………. 70
5.9. Kết quả thử nghiệm………………………………………………………………………………….. 74
x

5.9.1. Thử nghiệm khối nhận dạng ký tự
………………………………………………………… 74
5.9.2. Thử nghiệm khối xử lý ngôn ngữ …………………………………………………………. 76
5.9.3. Đánh giá kết quả ……………………………………………………………………………….. 78
5.9.4. So sánh ứng dụng với các ứng dụng hiện có trên thị trường
………………………. 78
TỔNG KẾT ……………………………………………………………………………………………………. 81

MỘT SỐ KẾT QUẢ ĐẠT ĐƯỢC
…………………………………………………………… 81

HẠN CHẾ ……………………………………………………………………………………………. 82

HƯỚNG PHÁT TRIỂN…………………………………………………………………………. 82
TÀI LIỆU THAM KHẢO …………………………………………………………………………….. 84
xi

DANH MỤC HÌNH
Hình 1.1 Sơ đồ khối tổng quát của chương trình
………………………………………………
4
Hình 2.1 Điện thoại dùng hệ điều hành Android ………………………………………………
6
Hình 2.2 Kiến trúc tổng thể của Android [1] ……………………………………………………
8
Hình 2.3 Cơ chế hoạt động của máy ảo Dalvik và Java
……………………………………
11
Hình 2.4 Minh họa trình giả lập điện thoại Android
………………………………………..
12
Hình 2.5 JNI đóng vai trò trung gian trong việc giao tiếp giữa C/C++ và Java
…….
15
Hình 2.6 Nội dung tập tin cấu hình biên dịch trong JNI …………………………………..
16
Hình 3.1 Quá trình thực hiện OCR ………………………………………………………………
18
Hình 3.2 Sơ đồ khối nhận diện ký tự quang học trong chương trình ………………….
20
Hình 3.3 Kiến trúc tổng thể của Tesseract [2] ………………………………………………..
25
Hình 3.4 Minh họa cấu trúc của project tesseract-android-tools
………………………..
26
Hình 3.5 Minh họa một phần các chỉ thị để biên dịch mã nguồn thư viện C/C++
trong tập tin Android.mk ……………………………………………………………………..
27
Hình 3.6 Quá trình sử dụng NDK để biên dịch thư viện C/C++ trên Android ……..
28
Hình 3.7 Quá trình biên dịch mã nguồn thư viện Tesseract thành công trên Android

………………………………………………………………………………………………………..
28
Hình 3.8 Cấu trúc tập tin dạng hộp ………………………………………………………………
32
Hình 3.9 Quá trình huấn luyện dữ liệu trên Tesseract ……………………………………..
34
Hình 4.1 Sơ đồ thuật toán tra từ điển và xử lý ngôn ngữ tự nhiên ……………………..
36
Hình 4.2 Sơ đồ thuật toán khôi phục từ gốc …………………………………………………..
39
Hình 4.3 Sơ đồ tổ chức tập tin từ điển…………………………………………………………..
48
Hình 5.1 Giao diện màn hình camera
……………………………………………………………
50
Hình 5.2 Minh họa gia đình font Droid
…………………………………………………………
56
Hình 5.3 Hình Định dạng văn bản hiển thị theo các kiểu phong cách
…………………
58
Hình 5.4 Hình định dạng liên kết
…………………………………………………………………
60
Hình 5.5 ScreenPreference …………………………………………………………………………
65
Hình 5.6 ListPreference
……………………………………………………………………………..
65
Hình 5.7 Biểu tượng chương trình sau khi cài đặt hoàn tất
……………………………….
70
xii

Hình 5.8 Màn hình chương trình khi khởi động ……………………………………………..
70
Hình 5.9 Màn hình hiển thị nghĩa của từ
……………………………………………………….
71
Hình 5.10 Màn hình với hệ thống menu setting ở bên dưới
………………………………
72
Hình 5.11 Màn hình tra từ điển theo cách thông thường ………………………………….
73
Hình 5.12 Màn hình thiết lập setting
…………………………………………………………….
73
Hình 5.13 Kết quả trước khi tra từ ……………………………………………………………….
76
Hình 5.14 Màn hình hiển thị nghĩa của từ sau khi xử lý từ gốc …………………………
77
Hình 5.15 Màn hình hiển thị danh sách từ gần đúng với kết quả nhận dạng
………..
77

xiii

DANH MỤC BẢNG
Bảng 3.1 So sánh phần mềm thương mại và Tesseract
…………………………………….
23
Bảng 3.2 Độ chính xác của Tesseract trên một số ngôn ngữ …………………………….
23
Bảng 4.1 Minh họa ma trận kết quả sau khi tính khoảng cách Levenstein
…………..
41
Bảng 4.2 Bảng mô tả các trường dữ liệu ……………………………………………………….
43
Bảng 5.1 Kết quả thử nghiệm bộ nhận dạng trong chương trình ……………………….
74
Bảng 5.2 Một số kết quả nhận diện sai………………………………………………………….
75
Bảng 5.3 Đánh giá tốc độ thực thi của chương trình ……………………………………….
78
Bảng 5.4 Bảng so sánh ứng dụng với Camera Dictionary ………………………………..
79
Bảng 5.5 Các tính năng chính trong chương trình …………………………………………..
81

xiv

CÁC TỪ VIẾT TẮT
OCR
Optical Character Recognition
JNI
Java Native Interface
SDK
Software Development Kit
NDK
Native Development Kit
API
Application Programming Interface
DES
Data Encryption Standard
TTS
Text To Speech
CMD
Command Line
UNLV
University of Nevada-Las Vegas
1

Chương 1 : TỔNG QUAN
1.1. Bối cảnh và nhu cầu thực tế
Trong thời buổi công nghệ thông tin phát triển như vũ bão, các thiết bị điện tử
ngày càng phát triển vượt bậc điển hình là các dòng máy tính, laptop, điện thoại di
động đã trở nên phổ biến, ngày càng mạnh mẽ và nhỏ gọn phục vụ cho nhu cầu trao
đổi thông tin liên lạc giữa mọi người. Trong đó điện thoại là một vật không thể
thiếu trong đời sống con người và ngày càng có sự phát triển vượt bậc. Từ đó dẫn
đến việc hình thành các dòng điện thoại thông minh – smartphone được tích hợp
nhiều chức năng và kích thước càng ngày càng nhỏ gọn. Đáp ứng xu thế phát triển
đó, các dòng điện thoại thông minh đã ra đời với cấu hình mạnh mẽ và nhiều tính
năng hữu ích đang dần chiếm hữu thị trường.
Bên cạnh đó, nhu cầu về từ điển để phục vụ cho mọi người trong việc học tập,
giao tiếp… cũng trở nên cần thiết. Chính vì thế nhiều chương trình từ điển ngôn
ngữ đã được ra đời trên các nền tảng của thiết bị di động để phục vụ cho nhu cầu
đó. Tuy nhiên các chương trình từ điển phần lớn yêu cầu người sử dụng phải nhập
từ trực tiếp trên bàn phím điện thoại sau đó mới thực hiện việc tra từ. Đối với các
ngôn ngữ ký tự Latinh thì việc nhập và tra từ sẽ dễ dàng hơn nhưng đối với các
ngôn ngữ khác như tiếng Trung hoặc tiếng Nga chẳng hạn thì việc sử dụng từ điển
bằng cách nhập từ vào và tra sẽ khó khăn hơn cho cho người sử dụng đòi hỏi người
dùng phải biết rõ mẫu tự của ngôn ngữ đó nhưng đối với những người chưa biết
hoặc chỉ mới làm quen với các ngôn ngữ này thì việc nhập từ sẽ rất khó khăn. Thí
dụ như trong trường hợp một người đi du lịch qua đất nước khác nhưng không biết
hoặc biết rất ít về ngôn ngữ đó thì sẽ khó khăn khi nhập từ để tra nghĩa. Vậy nên
nếu phát triển một ứng từ điển nhưng không bắt buộc người dùng phải nhập từ vào
mà cho phép người dùng có thể tra từ một cách gián tiếp thông qua camera của thiết
bị điện thoại thì rõ ràng sẽ tiện lợi hơn rất nhiều. Vì phần lớn các dòng điện thoại
thông minh hiện nay đều được trang bị camera nên việc phát triển một ứng dụng tra
từ qua camera sẽ trở nên cần thiết hơn và phù hợp với tình hình thực tế.
2

Hiện nay các dòng điện thoại thông minh chạy trên nhiều nền tảng khác nhau.
Trong đó nổi lên hai nền tảng chính đang chiếm lĩnh thị trường di động hiện nay là
iOS của Apple và Android của Google. Hệ điều hành di động Android của Google
đang cạnh tranh với iOS và có số lượng thiết bị lớn hơn với nhiều hãng sản xuất và
mẫu mã đa dạng.
Gắn nhu cầu thực tế trong việc tra từ điển sử dụng camera trên điện thoại cùng
với nền tảng Android đang được sử dụng phổ biến hiện nay nên nhóm chúng em
quyết tâm xây dựng chương trình tra từ điển Anh Việt trực tiếp qua camera trên
điện thoại Android.
1.2. Các đề tài liên quan
Luận văn tập trung vào phát triển ứng dụng phục vụ tra từ điển Anh Việt qua
camera trên điện thoại Android. Đề tài này cũng dựa trên hướng nghiên cứu về tra
từ điển qua camera trên điện thoại [2] – Luận văn thạc sĩ của anh Nguyễn Hoàng
Giang. Ngoài ra trên thị trường cũng xuất hiện nhiều phần mềm có chức năng nhận
diện từ qua camera điện thoại. Tiêu biểu cho môi trường Android là ứng dụng
CamDictionary.
 Đề tài “Xây dựng ứng dụng tra từ điển bằng camera trên điện thoại di động”
Error! Reference source not found. là đề tài có nhiều nét tương đồng với
đề tài mà chúng em đang thực hiện. Cả hai đề tập trung giải quyết vấn đề là
cách thức tra từ mới bằng cách dùng camera để nhận diện từ và sau đó tra từ
điển. Cả hai đề tài đều sử dụng bộ Tesseract làm thành phần nhận diện ký tự
quang học chính của chương trình. Chi tiết về Tesseract sẽ được giới thiệu
chong chương 3 của báo cáo. Điểm khác biệt duy nhất của 2 đề tài là nền
tảng phát triển. Đề tài đầu tiên sử dụng tra từ điển trên hệ điều hành Symbian
của Nokia còn đề tài trong luận văn sử dụng Android của Google làm nền
tảng chính.
 Ứng dụng CamDictionary: Đây là một ứng dụng trên Android dùng để dịch
từ qua camera điện thoại, có thể xem là chương trình gần tương đương với
3

luận văn nhất. Ứng dụng do công ty Insig1 phát triển. Đây là một công ty của
Mỹ chuyên cung cấp các ứng dụng thực hiện việc nhận diện ký tự quang học
trên nhiều môi trường như: máy quét, điện thoại, máy tính bảng… Ứng dụng
CamDictionary sử dụng camera của điện thoại để nhận diện ký tự hoặc một
đoạn câu sau đó dùng tính năng Google Translate qua môi trường mạng để
dịch từ hoặc đoạn câu đó. Bộ nhận diện ngôn ngữ của chương trình khá
chính xác nhưng việc tra cứu và dịch từ phụ thuộc vào kết nối mạng và độ
chính xác của bộ dữ liệu từ điển Google. Chi tiết kết quả so sánh tính năng
của luận án và chương trình CamDictionary sẽ được giới thiệu trong phần
tổng kết của báo cáo.
1.3. Mục tiêu
Mục tiêu của đề tài là xây dựng một ứng dụng trên điện thoại di động sử dụng
camera để quét hình ảnh và sử dụng bộ nhận diện ký tự quang học (Optional
Character Recognition – OCR) để rút trích ra các từ trong hình ảnh. Từ đó làm dữ
liệu đầu vào cho việc tra từ.
Để xây dựng được ứng dụng tra từ điển qua camera, luận văn sẽ tập trung giải
quyết các vấn đề sau:

Tìm hiểu về môi trường lập trình trên nền tảng Android.

Tìm hiểu sâu việc lập trình thu nhận ảnh từ camera của điện thoại.

Tìm hiểu về bài toán nhận dạng ký tự quang học và cách sử dụng thư viện
Tesseract OCR đồng thời tìm hiều cách thức biên dịch mã nguồn thư viện
Tesseract để chạy trên môi trường Android.

Nghiên cứu xây dựng cấu trúc dữ liệu để thực hiện việc tra từ.

Tìm hiểu các thuật toán xử lý ngôn ngữ để tăng khả năng tra từ chính xác cho
ứng dụng như khôi phục từ gốc, tra từ gần đúng và áp dụng các thuật toán đó
vào trong chương trình.

Xây dựng ứng dụng hoàn chỉnh với đầy đủ các chức năng đã đề ra đồng thời
cải tiến thêm các tính năng mới trong chương trình.

1 http://www.intsig.com/en/index.html
4

Chương trình được chia làm 3 phần chính đó là thu nhận ảnh của văn bản từ
camera điện thoại, nhận dạng ký tự quang học, phần tra từ và xử lý ngôn ngữ.

Hình 1.1 Sơ đồ khối tổng quát của chương trình
1.4. Nội dung khóa luận
Nội dung của luận văn bao gồm 6 chương:
Chương 1. Mở đầu: Bối cảnh và nhu cầu thực hiện đề tài, mục tiêu của đề tài và
nội dung của khóa luận.
Chương 2. Kỹ thuật lập trình cơ bản trên Android: sơ lược về Android, lập trình
truy xuất camera, sử dụng công cụ NDK biên dịch mã nguồn trên Android.
Chương 3. Nhận dạng ký tự quang học OCR: Giới thiệu chung về nhận dạng ký
tự quang học, bộ nhận dạng ký tự quang học Tesseract và cách huấn luyện dữ liệu.
5

Chương 4. Tra từ điển Anh Việt: Cấu trúc dữ liệu từ điển, khôi phục từ gốc và tra
từ gần đúng.
Chương 5. Cài đặt thực nghiệm: kết quả thử nghiệm và đánh giá chương trình.
Kết luận: Hạn chế của luận văn và hướng phát triển trong tương lai.
6

Chương 2 : CÁC KỸ THUẬT CƠ BẢN TRÊN ANDROID
2.1. Sơ lược về Android
2.1.1. Tổng quan
Android là hệ điều hành mở dựa trên nền tảng Linux dùng cho các thiết bị di
động bao gồm điện thoại thông minh, máy tính bảng, máy tính xách tay. Được phát
triển ban đầu tại công ty liên hợp Android sau đó công ty này được Google mua lại
vào năm 2005 và biến Android thành một hệ điều hành mở trên các thiết bị di động.
Android chính thức ra mắt vào ngày 5/11/2007 cùng với sự ra đời của liên
minh thiết bị cầm tay mở OHA (Open Handset Alliance). Liên minh OHA là một tổ
chức bao gồm khoảng hơn 78 công ty viễn thông, di động và phần cứng như
Goolge, Sony Ericsson, Samsung, Nvidia, Qualcomm… Mục tiêu của hội này là
phát triển các chuẩn mở chung cho thiết bị di động trong tương lai. Và Android là
sản phẩm chủ lực của hãng. Mã nguồn của Android là mã nguồn mở và được công
bố dưới dạng giấy phép Apache.

Hình 2.1 Điện thoại dùng hệ điều hành Android
7

2.1.2. Các phiên bản Android
Từ lúc ra đời đến nay, Android đã tung ra nhiều phiên bản khác nhau với
những nâng cấp và cải tiến theo từng phiên bản. Sau đây là danh sách các phiên bản
Android hiện có:
 Phiên bản 1.5 (Cupkake): phiên bản chính thức dầu tiên của Android
trên điện thoại.
 Phiên bản 1.6 (Donut).
 Phiên bản 2.0/2.1 (Eclaire).
 Phiên bản 2.2 (Froyo).
 Phiên bản 2.3 (Gingerbread).
 Phiên bản 3.0 / 3.1 (Honeycomb): phiên bản dành riêng cho máy tính
bảng (tablet).
 Phiên bản 4.0 / 4.0.1 / 4.0.3 (Icecream sandwich): đây là phiên bản
Android mới nhất hiện nay và được dùng trên các điện thoại thông minh
và cả máy tính bảng.
8

2.1.3. Kiến trúc và thiết kế

Hình 2.2 Kiến trúc tổng thể của Android [1] Nhìn vào kiến trúc của Android thì hệ điều hành Android được chia thành các
tầng như trong hình bao gồm: Applications, Application Framework, Libraries,
Android Runtime, Linux Kernel. Trong đó 2 tầng Applications và Application
Framework được viết bằng ngôn ngữ Java. Còn các tầng từ Libraries đến Linux
Kernel được viết bằng ngôn ngữ C/C++ hay còn gọi là mã gốc – native code.
 Tầng Applications: Đây là tầng cao nhất trong hệ điều hành Android.
Tầng này bao gồm các ứng dụng được viết và cài đặt sẵn như: lịch, trình
duyệt web, danh bạ, camera… Các ứng dụng tại tầng này đều được viết
bằng ngôn ngữ Java.
 Tầng Application Framework: Bên dưới tất cả các ứng dụng là một
tập hợp các dịch vụ và hệ thống cho phép các nhà phát triển phần mềm
có thể gọi các hàm hỗ trợ sẵn qua giao diện lập trình ứng dụng API
(Application Programming Interface).
9

o
Tập hợp các màn hình (Views) mở rộng dùng để xây dựng nên
giao diện chương trình như nút bấm, danh sách, hộp thoại, text box,
các sự kiện…
o
Bộ cung cấp nội dung (Content Provider): Cung cấp khả năng
truy xuất và chia sẽ dữ liệu giữa các ứng dụng.
o
Quản lý tài nguyên (Resouce Manager): Quản lý các loại tập
tin không phải là mã nguồn. Cung cấp khả năng truy cập đến các tài
nguyên khác trong ứng dụng như các chuỗi, tập tin đồ họa, các tập
tin định dạng giao diện (layout).
o
Quản lý thông báo (Notification Manager): Quản lý và hiển thị
các thông báo ở thanh trạng thái (Status Bar).
o
Quản lý hoạt động (Activity manager): Quản lý vòng đời và
chu trình hoạt động của các ứng dụng.
 Tầng Libraries: Android có hệ thống các thư viện C/C++ được sử
dụng nhiều trong các thành phần khác nhau của hệ điều hành. Một số các
thư viện C/C++ chính trong Android:
o
System C Library: một BSD (Berkely Software Distribution)
được thừa kế từ các thư viện chuẩn C và được tinh chỉnh cho các
thiết bị sử dụng trên nền Linux.
o
Media Library: thư viện hỗ trợ cho việc ghi âm, chơi các định
dạng nhạc, phim và hiển thị các ảnh bao gồm các định dạng sau:
MPEG4, H.264, MP3, AAC, ARM, JPG, PNG…
o
Surface Manager: Quản lý truy cập vào hệ thống hiển thị.
o
Live Webcore: Công cụ trình duyệt web.
o
SGL: Các hàm cơ bản về đồ họa 2 chiều.
o
3D Library: Đồ họa 3 chiều.
o
Freetype: Biểu diễn các font và vectơ bitmap.
o
SQLite: Cơ sở dữ liệu.
 Tầng Android Runtime: Bao gồm một tập các thư viện lõi Java và
máy ảo Dalvik. Máy ảo Dalvik thực thi các tập tin định dạng dex. Mỗi
10

ứng dụng được chạy trên một tiến trình riêng của máy ảo Dalvik. Trên
cùng 1 thiết bị có thể chạy nhiều máy ảo Dalvik khác nhau một cách hiệu
quả.
 Tầng Linux Kernel: Đây là tầng thấp nhất trong hệ điều hành
Android, được xây dựng trên nhân của Linux 2.6 chứa các trình quản lý
thiết bị như keypad, wifi, âm thanh, quản lý điện năng… và các dịch vụ
của hệ thống như: an ninh, quản lý bộ nhớ, quản lý tiến trình, kết nối
mạng. Tầng này đóng vai trò là tầng trung gian liên lạc giữa phần cứng
và ngăn xếp phần mềm ở các tầng trên.
2.1.4. Máy ảo Dalvik
Dalvik là máy ảo để thực hiện các ứng dụng phần lớn viết bằng Java trên
Android dưới dịnh dạng là tập tin (.dex). Về cơ bản có thể nhận thấy máy ảo Dalvik
có phần giống với máy ảo Java trên Desktop, tuy nhiên có phần khác là khi ta viết
các ứng dụng trên Java thì mã nguồn sẽ được chuyển thành mã bytecode. Tại đây,
một công cụ có sẵn trên Android là “dx” sẽ chuyển dạng mã bytecode này thành
dạng tập tin .dex (viết tắt là Dalvik Excutable) và được thực thi trên máy ảo Dalvik
để chạy các ứng dụng Android.
11

Hình 2.3 Cơ chế hoạt động của máy ảo Dalvik và Java
2.1.5. Android software development kit (SDK)
Bộ phát triển ứng dụng cho Android hay còn gọi là Android SDK cung cấp
cho các nhà phát triển phần mềm có thể lập trình, gỡ lỗi và kiểm thử ứng dụng được
phát triển trên Android. Bộ SDK bao gồm:
 Thư viện lập trình Android (Android API): đây là phần cốt lõi của bộ
phát triển Android, từ các thư viên lập trình Android API, Google đã xây
dựng nên các ứng dụng có sẵn.
 Công cụ phát triển: cung cấp sẵn cho các nhà phát triển các công cụ để
lập trình, biên dịch, sửa lỗi mã nguồn trong ứng dụng.
 Tài liệu: đây là phần hướng dẫn sử dụng các thư viện, lớp / hàm có
sẵn trong môi trường lập trình Android. Ngoài ra còn giải thích về cơ chế
hoạt động của các ứng dụng trong Android.

Đánh giá post

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *