Tải bản đầy đủ (.doc) (65 trang)

Ứng dụng nhận dạng danh thiếp tiếng Việt và cập nhật thông tin danh bạ trên android ( full soure code )

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.87 MB, 65 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
──────── * ───────
ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
NGÀNH CÔNG NGHỆ THÔNG TIN
ỨNG DỤNG NHẬN DẠNG DANH THIẾP
TIẾNG VIỆT VÀ CẬP NHẬT THÔNG TIN
DANH BẠ TRÊN ANDROID
Sinh viên thực hiện : Trần Đức Hải
Lớp CNPM – K53
Giáo viên hướng dẫn: TS. Vũ Thị Hương Giang
HÀ NỘI 6-2013
TR
ẦN
ĐỨ
C
HẢ
I
CN
PM
K5
3
KH
OA

NG
NG
HỆ
TH
ÔN


G
TI
N

NỘ
I 6-
201
3
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
1. Thông tin về sinh viên
Họ và tên sinh viên: Trần Đức Hải
Điện thoại liên lạc: 01632572160 Email:
Lớp: CNPM – K53 Hệ đào tạo: Đại học chính qui
Đồ án tốt nghiệp được thực hiện tại: Bộ môn Công Nghệ Phần Mềm - Viện CNTT &
Truyền Thông – Đại học Bách Khoa Hà Nội.
Thời gian làm ĐATN: Từ ngày 15 /02 /2013 đến 28 /05 /2013
2. Mục đích nội dung của ĐATN
Xây dựng ứng dụng nhận dạng thông tin danh thiếp Tiếng việt và cập nhật danh bạ trên
android.
3. Các nhiệm vụ cụ thể của ĐATN
- Nhận dạng danh thiếp và cập nhật danh bạ tiếng việt trên android.
- Tìm hiểu các khái niệm lập trình Android.
- Tìm hiểu thư viện nhận dạng văn bản.
- Xây dựng server thực hiện quá trình nhận dạng.
- Triển khai ứng dụng.
- Viết luận văn.
4. Lời cam đoan của sinh viên:
Tôi Trần Đức Hải cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự hướng
dẫn của TS. Vũ Thị Hương Giang.
Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳ

công trình nào khác.
Hà Nội, ngày tháng năm
Tác giả ĐATN
Trần Đức Hải
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 2
5. Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép bảo
vệ:
Hà Nội, ngày tháng năm
Giáo viên hướng dẫn
TS. Vũ Thị Hương Giang
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 3
TÓM TẮT ĐỒ ÁN
Danh thiếp là một tấm thẻ nhỏ có chứa thông tin liên lạc của một cá nhân hay của
một tổ chức. Danh thiếp được sử dụng để giới thiệu thông tin liên lạc của cá nhân, của tổ
chức trong những buổi gặp mặt đầu tiên. Ngày nay, danh thiếp được mọi người sử dụng
rộng rãi, từ những tổ chức, công ty, cửa hàng buôn bán cho tới những cá nhân muốn giới
thiệu thông tin liên lạc một cách đầy đủ nhanh chóng.
Thế nhưng, việc quản lý và sử dụng danh thiếp gặp nhiều khó khăn khi mà một
người nhận được nhiều danh thiếp. Khi họ muốn tìm thông tin liên lạc trên số danh thiếp
này là rất mất thời gian. Việc tìm kiếm sẽ đơn giản hơn nếu các thông tin trên danh thiếp
được lưu vào điện thoại. Người dùng có thể dành thời gian để ngồi nhập thông tin trên
danh thiếp vào điện thoại, nhưng việc ngồi nhập danh thiếp là một công việc tốn công sức
và thời gian. Ngày nay, với sự phát triển của công nghệ xử lý ảnh, và sự phát triển mạnh
các thiết bị smartphone, việc lấy thông tin trên danh thiếp có thể được lấy tự động thông
qua ảnh chụp danh thiếp.
Trong khuôn khổ của đồ án tốt nghiệp với đề tài “Ứng dụng nhận dạng danh thiếp
Tiếng Việt và cập nhật thông tin danh bạ trên Android” em mong muốn xây dựng một ứng
dụng cho người dùng di động Android, ứng dụng nhận dạng danh thiếp từ ảnh, hỗ trợ nhận
dạng Tiếng Việt. Ngoài việc nhận dạng, ứng dụng cho phép người dùng quản lý danh bạ
trên điện thoại.

Qua tìm hiểu, em nhận thấy nhận dạng thông tin chữ viết từ ảnh có thể sử dụng công
nghệ nhận dạng văn bản OCR, cụ thể là thư viện Tesseract. Quá trình trích rút thông tin
liên lạc thông tin dựa trên đặc điểm tên người, địa điểm của Việt Nam. Hai quá trình này
đòi hỏi tốn nhiều thời gian xử lý, và trên các máy cấu hình thấp sẽ mất nhiều thời gian. Vì
thế, để tăng độ chính xác nhận dạng và hoạt động trên nhiều thiết bị khác nhau, em xây
dựng server cho quá trình nhận dạng và trích rút thông tin.
Cụ thể đề tài nghiên cứu thực hiện những công việc sau:
- Tìm hiểu công nghệ xử lý ảnh, thư viện OpenCV.
- Tìm hiểu công nghệ nhận dạng OCR.
- Tìm hiểu cơ chế trích rút thông tin.
- Tìm hiểu lý thuyết về Android, cách xây dựng ứng dụng.
- Thiết kế và xây dựng thử nghiệm ứng dụng VietCardReader dựa trên việc tích hợp
các thành phần nói trên.
Cấu trúc báo cáo đồ án gồm 2 phần:
Chương 1: Đặt vấn đề và định hướng giải pháp. Chương này nêu ra bài toán cần
giải quyết và các giải pháp để giải quyết bài toán. Tiếp đến sẽ trình bày sơ lược về
các công nghệ, thuật toán sẽ được áp dụng để giải quyết yêu cầu đặt ra.
Chương 2: Các kết quả đạt được. Chương này tập trung vào phân tích, thiết kế
hệ , tiến hành kiểm thử ứng dụng.
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 4
ABSTRACT OF THESIS
Business card is a small card containing contact information of an individual or an
organization. Business cards are used to introduce the contact information of the
individual, the organization at the first meeting. Today, business cards are all widely used,
from the organization, company, store sales or individuals.
However, the management of business cards is difficult when a person have many
business cards. When they want to find contact information on the card, it is very time
consuming. It would be much easier if the information stored on the card in the phone.
Users can take the time to enter information of business card into the phone, but it is time
consuming and very boring. Nowadays, with the development of image processing

technology, and a thriving smartphone devices, information on business cards can be
obtained automatically through photo of bussiness card.
In this paper about "Application about recognition Vietnamese business cards and update
contacts on Android", I want to building an application for Android mobile users, the
application recognize contact information from images, especially supporting recognize
Vietnamese bussiness card. And the application allows users to manage contacts on your
phone.
Through research, I found that OCR is technology to recognize text from images. A library
of OCR is Tesseract library. The process of extracting contact information based on name,
and location of Vietnam. Both processes require time-consuming process, and the phone
with low configuration will take much less time. Therefore, to increase recognition
accuracy and operate across different devices, i build webservice on server for the
recognition process and extract information.
Specific research projects carried out the following tasks:
- Research image processing technology, OpenCV library.
- Research OCR technology.
- Research how to extract information.
- Learn the theory of Android, how to build applications.
- Design ,build, and test VietCardReader application
The structure of reports consist:
- Chapter 1: Introduction and problem and solution. This chapter discusses the
problem to be solved and the solution to solve the problem. Next, it will present the
technology, the algorithm will be applied to solve the requirements.
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 5
- Chapter 2: The results. This chapter focuses on analysis, system design, conduct
application testing.
MỤC LỤC
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 6
DANH MỤC CÁC HÌNH
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 7

MỞ ĐẦU
Danh thiếp là một tấm thẻ nhỏ có chứa thông tin liên lạc của một cá nhân hay
của một tổ chức. Danh thiếp phục vụ cho việc thông tin liên lạc, giao dịch được
thông suốt chính xác và tiện lợi. Vấn đề nảy sinh khi mà một người nhận được
nhiều danh thiếp. Họ sẽ khó khăn khi muốn tìm kiếm thông tin liên lạc từ đống
danh thiếp này. Họ có thể nhập thông tin từ danh thiếp vào điện thoại, để tiện việc
sử dụng sau này. Song danh thiếp chứa rất nhiều thông tin như tên liên lạc, số điện
thoại di động, điện thoại bàn, email, địa chỉ và không phải điện thoại nào cũng hỗ
trợ người dùng nhập đủ các thông tin trên danh thiếp, nên việc nhập nhiều thông tin
như vậy vào điện thoại cũng mất thời gian, dẫn tới việc người dùng không muốn
nhập. Ngày nay, với sự phát triển mạnh của công nghệ, việc lấy thông tin trên danh
thiếp có thể thông qua chụp ảnh bằng smartphone và các thông tin này được quản lý
hiệu quả hơn.
Vì thế, đồ án hướng tới xây dựng một ứng dụng giúp người dùng sử dụng,
quản lý danh thiếp một cách hiệu quả hơn.Ứng dụng cung cấp chức năng cho người
dùng chụp ảnh danh thiếp, các thông tin trên danh thiếp sẽ được tự động trích rút và
lưu vào điện thoại. Đặc biệt, ứng dụng tập trung hỗ trợ nhận dạng thông tin Tiếng
Việt trên danh thiếp.
Cấu trúc báo cáo đồ án gồm 2 phần:
Chương 1: Đặt vấn đề và định hướng giải pháp. Chương này nêu ra bài toán
cần giải quyết và các giải pháp để giải quyết bài toán. Tiếp đến sẽ trình bày
sơ lược về các công nghệ, thuật toán sẽ được áp dụng để giải quyết yêu cầu
đặt ra.
Chương 2: Các kết quả đạt được. Chương này tập trung vào phân tích, thiết
kế hệ , tiến hành kiểm thử ứng dụng.
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 8
CHƯƠNG 1. ĐẶT VẤN ĐỀ VÀ ĐỊNH HƯỚNG GIẢI PHÁP
Chương 1 này sẽ trình bày các vấn đề
- Mô tả bài toán.
- Các vấn đề cần giải quyết.

- Giải pháp để giải quyết những vấn đề đặt ra.
- Cơ sở lý thuyết và công nghệ sử dụng.
1. Mô tả bài toán:
Như đã viết ở phần trên, danh thiếp là công cụ rất tiện lợi sử dụng trong liên
lạc, giao dịch nhưng việc sử dụng và quản lý danh thiếp gặp khó khăn khi mà một
người nhận được nhiều danh thiếp. Hiện nay, các phần mềm quét thông tin trên
danh thiếp đã có trên các nền tảng smartphone như android, iphone, bao gồm cả bản
thương mại và miễn phí.Bản thương mại đang được sử dụng nhiều hiện nay là phần
mềm Bussines Card Reader của ABBYY [1] trên cả iphone và android. Phần mềm
có chức năng quét thông tin trên danh thiếp bằng camera của iPhone và lưu tất cả
vào danh bạ điện thoại của mình phần mềm tự động lưu tên, số điện thoại liên lạc,
địa chỉ email vào đúng chỗ trong danh bạ điện thoại. Nhưng phần mềm này chưa
hỗ trợ cho nhận dạng Tiếng Việt, do đó các danh thiếp có Tiếng Việt chưa được
nhận dạng.
Vì thế, đồ án hướng tới xây dựng một ứng dụng giúp người dùng sử dụng có
thể chụp ảnh danh thiếp để lấy thông tin lưu vào điện thoại và ứng dụng hỗ trợ nhận
dạng danh thiếp Tiếng Việt. Cụ thể người dùng sẽ được cung cấp những chức năng
sau:
• Việc nhập thông tin từ danh thiếp vào điện thoại sẽ trở nên đơn giản hơn.
Người dùng chỉ cần sử dụng camera để chụp ảnh danh thiếp, các thông tin
liên lạc trên danh thiếp sẽ được trích rút và lưu vào danh bạ trên android.
Đặc biệt, các thông tin Tiếng Việt được trích rút chính xác hơn.
• Sau khi các thông tin liên lạc được lưu vào danh bạ trên android, người dùng
thực hiện quản lý, tìm kiếm liên lạc trong danh bạ của android.
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 9
2.Các vấn đề cần giải quyết:
Để xây dựng ứng dụng có những chức năng như trên, trong quá trình nghiên cứu
và xây dựng ứng dụng có một số vấn đề cần được giải quyết:
• Tiền xử lý ảnh cho quá trình nhận dạng: camera trên điện thoại thường cho
ảnh có chất lượng không cao, phụ thuộc nhiều vào điều kiện môi trường như

ánh sáng. Do đó quá trình tiền xử lý ảnh để tạo ảnh có chất lượng phù hợp
cho quá trình nhận dạng
• Nhận dạng thông tin từ ảnh danh thiếp: đây là quá trinh tách nội dung là chữ
trên ảnh. Đây là quá trình đóng vai trò quan trọng nhất trong ứng dụng.
• Trích rút các thông tin liên lạc: Sau quá trình nhận dạng chữ từ ảnh danh
thiếp, cần tiến hành trích rút các thông tin liên lạc từ các chữ thu được ở quá
trình nhận dạng.
• Quản lý các thông tin thu được từ danh thiếp. Sau khi trích rút các thông tin
liên lạc, các thông tin này cần được lưu trữ và quản lý. Người dùng có thể
tìm kiếm, thêm, xóa, sửa các thông tin này.
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 10
3.Đinh hướng giải pháp:
Hình 1 : Kiến trúc tổng quan ứng dụng.
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 11
Biểu đồ mô tả kiến trúc kiến trúc tổng quan, sự tương tác của ứng dụng với các
thành phần bên ngoài. Các ô chữ nhật có màu là các module bên trong hệ thống,
được xây dựng trong đồ án, còn các ô hình chữ nhật màu trắng là các thành phần
thư viện, module bên ngoài mà ứng dụng sử dụng.
Hệ thống xây dựng theo mô hình client-server. Client và server đều chứa các
module làm chức năng nhận dạng, trích rút thông tin. Ở Server còn chứa thêm
module tiền xử lý và hậu xử lý. Server sẽ cung cấp webservice nhận dạng và trích
rút thông tin liên lạc cho client.
• Preprocess: Đây là module tiền xử lý ảnh, đặt trên server.
• Postprocess: Đây là module xử lý chính tả Tiếng Việt
• ExtractInfomation: Đây là module trích rút thông tin liên lạc từ kết quả nhận
dạng.
Các thư viện và module bên ngoài ứng dụng sử dụng bao gồm:
• Camera Android API: bộ API cho phep lấy ảnh từ camera android.
• OpenCV: thư viện xử lý ảnh dùng để tiền xử lý ảnh cho OCR.
• Tesseract Engine: là một thư viện OCR.

• ContactProvider: cung cấp các thao tác xử lý với contact trong android.
3.1.Tiền xử lý ảnh với OpenCV:
Ảnh chụp từ camera thường có chất lượng không cao và chịu nhiều sự tác động của
môi trường đặc biệt là ánh sáng. Có rất nhiều các thuật toán xử lý nâng cao chất
lượng ảnh, nhưng việc tự cài đặt là mất thời gian. OpenCV là thư viện xử lý ảnh,
cung cấp rất nhiều hàm xử lý ảnh. Do đó ứng dụng sẽ sử dụng OpenCV là thư viện
để thực hiện quá trình tiền xử lý ảnh cho OCR.
3.2.Nhận dạng thông tin từ ảnh sử dụng Tesseract OCR Engine:
Người dùng sử dụng camera để chụp ảnh danh thiếp, từ ảnh này ứng dụng sẽ
nhận dạng thông tin trên đó. Ảnh chụp từ camera chất lượng càng cao, thì kết quả
nhận dạng càng chính xác. Android có nhiều phiên bản hệ điều hành khác nhau, các
dòng máy hỗ trợ khác nhau nên cần phải sử dụng API sao cho lấy được ảnh chất
lượng phù hợp nhất cho quá trình OCR. Một điều khó nữa là ảnh chụp các camera
của android hiện tại chất lượng không cao do đó cần tiền xử lý nâng cao chất lượng
ảnh trước khi đưa vào quá trình OCR.
OCR là công nghệ nhận dạng kí tự trên ảnh. Việc xây dựng OCR từ đầu là
phức tạp vì thế cần chọn lựa một bộ thư viện OCR cho quá trình lấy thông tin từ
ảnh. Tuy nhiên, các thư viện OCR hiện nay cho kết quả có độ chính xác tùy thuộc
vào chất lượng ảnh đầu vào, nên vẫn cần thông qua tiền xử lý ảnh.
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 12
3.3.Trích rút thông tin liên lạc:
Các thông tin thu được từ quá trình nhận dạng là các kí tự trên ảnh đầu vào. Từ các
thông tin này, ứng dụng sẽ trích rút các thông tin như số điện thoại, tên, địa chỉ,
email.
Hiện tại chưa có thư viện OCR nào đạt độ chính xác cao, do đó kết quả thu
từ quá trình nhận dạng có thể chứa lỗi chính tả nhiều. Để tối ưu kết quả nhận dạng
từ OCR cần bước chỉnh sửa lỗi kí tự nhận dạng được. Các lỗi này được xem như là
lỗi chính tả và cần phải sửa các lỗi chính tả này. Sau khi đã loại bỏ đi lỗi chính
tả,quá trình trích rút sẽ được thực thi.
3.4.Quản lý danh bạ:

Danh thiếp sau khi được trích rút thông tin sẽ được lưu vào contact của android.
Contact của android cho phép lưu đủ các thông tin của một danh thiếp. Đồng thời
contact của android có các API hỗ trợ quản lý contact như tìm kiếm, thêm, sửa, xóa.
4.Cơ sở lý thuyết:
4.1.Android:
Android là tên gọi của một hệ điều hành mã nguồn mở dựa trên nhân linux,
ban đầu được Google xây dựng dành cho các thiết bị di động nhưng hiện tại đã
vươn ra TV, HD Player, Tablet…).
4.1.1.Tổng quan:
Android thực thi ứng dụng thông qua máy ảo – tương tự JVM trên máy bàn –
gọi là Dalvik. Dalvik là một phần mềm mã nguồn mở được thiết kế và viết bởi Dan
Bornstein dựa trên JVM nhưng được cải tiến để có thể hoạt động hiệu quả trên các
thiết bị Android.
Mô hình sau thể hiện một cách tổng quát các thành phần của hệ điều hành Android.
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 13
Hình 2: Kiến trúc hệ điều hành android.
4.1.2.Contact Provider: [8]
Contact Provider là một thành phần của Android dùng để quản lý dữ liệu về con
người. Các dữ liệu này rất đa dạng, có thể định nghĩa khác nhau tùy vào nhu cầu
quản lý thông tin của con người. Contact Provider xây dựng cấu trúc dữ liệu để lưu
trữ thông tin về con người: Contact, RawContact và Data.
Hình 3: Cấu trúc contact trong android.
Row Contact biểu diễn thông tin về một người, được lấy từ một nguồn thông
tin. Một Contact có thể có nhiều Raw Contact, một Raw Contact tương ứng với một
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 14
nguồn dữ liệu lấy thông tin. Chính điều này giúp cho việc kết hợp thông tin một
người từ nhiều nguồn khác nhau.
Data chứa thông tin chi tiết về một Raw Contact, chẳng hạn như email, số
điện thoại, địa chỉ Một Raw Contact có thể có nhiều Data, điều này giúp cho một
Raw Contact liên kết tới nhiều số diện thoại, email, địa chỉ khác nhau.

Contact biểu diễn thông tin về con người, các thông tin này được kết hợp từ
các Row Contact. Contact Provider kết hợp nhiều Raw Contact từ tất cả các nguồn
thông tin vào chung một Contact. Điều này tạo điều kiện hiển thị và chỉnh sửa tất cả
các dữ liệu người dùng đã thu thập cho một người. Contact Provider quản lý việc
tạo ra các Raw Contact mới, và kết hợp với Raw Contact hiện có.
Một ứng dụng muốn sử dụng Contact Provider cần yêu cầu các quyền sau:
- Quyền truy cập tới Contact: READ_CONTACT.
- Quyền ghi tới Contact: WRITE_CONTACT.
4.1.3.Camera API: [ 9 ]
Camera được sử dụng để thiết lập các cài đặt chụp ảnh, bắt đầu / dừng hình
ảnh xem trước snap, và lấy khung hình để mã hóa cho video. Để truy cập vào
camera của điện thoại, bạn phải khai báo yêu cầu cho phép CAMERA trong
Manifest Android của bạn.
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
Các bước chung để sử dụng camera lấy ảnh:
• Phát hiện và truy cập Camera - kiểm tra sự tồn tại của camera và yêu cầu
truy cập.
• Tạo một Class Preview - Tạo một Class Preview mở rộng SurfaceView và
thực hiện các giao diện SurfaceHolder. Cho phép người dùng xem ảnh trước
khi chụp.
• Xây dựng một giao Preview – Tạo giao diện người dùng trên màn hình
Preview. Chẳng hạn trên giao diện có button chụp ảnh, chỉnh độ zoom
• Xây dựng lớp lắng nghe và xử lý sự kiện chụp ảnh.
• Chụp và lưu ảnh.
• Giải phóng camera - Sau khi sử dụng máy ảnh, ứng dụng cần giải phóng
camera. Máy ảnh phần cứng là một nguồn tài nguyên được chia sẻ phải được
quản lý một cách cẩn thận.
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 15
4.2.RESTful Webservice: [ 10 ]

REST định nghĩa các quy tắc kiến trúc để thiết kế Web services chú trọng vào tài
nguyên hệ thống, bao gồm các trạng thái tài nguyên được định dạng như thế nào và
được chuyển tải qua HTTP thông qua số lượng lớn người dùng và được viết bởi
những ngôn ngữ khác nhau. Nếu tính theo số dịch vụ mạng sử dụng, REST đã nổi
lên trong vài năm qua như là một mô hình thiết kế dịch vụ chiếm ưu thế. Trong thực
tế, REST đã có những ảnh hưởng lớn và gần như thay thế SOAP và WSDL vì nó
đơn giản và dễ sử dụng hơn rất nhiều.
REST yêu cầu các nhà phát triển sử dụng phương thức HTTP một cách rõ ràng theo
cách tương thích với giao thức chuẩn. Nguyên lý thiết kế REST cơ bản này thiết lập
một ánh xạ 1-1 giữa các hành động tạo, đọc, cập nhật và xoá (CRUD) các quá trình
vận hành và các phương thức HTTP. Theo cách ánh xạ này thì:
• Để tạo một tài nguyên trên máy chủ, bạn cần sử dụng phương thức POST.
• Để truy xuất một tài nguyên, sử dụng GET.
• Để thay đổi trạng thái một tài nguyên hoặc để cập nhật nó, sử dụng PUT.
• Để huỷ bỏ hoặc xoá một tài nguyên, sử dụng DELETE.
Hình 4 . RESTful Webservice
Dữ liệu được truyền trong RESTful có thể được đóng gói dưới nhiều khuôn dạng
khác nhau như XML, JSON, XHTML Do đó, nó cho phép các dịch vụ trên nền
tảng khác nhau có thể dễ dàng đóng gói dữ liệu và thao tác.
4.3.Công nghệ OCR:
OCR là một công nghệ phức tạp có thể chuyển đổi hình ảnh với văn bản sang
định dạng có thể chỉnh sửa. OCR cho phép bạn xử lý sách quét, ảnh chụp màn hình
và hình ảnh với văn bản và văn bản có thể chỉnh sửa như TXT, DOC hoặc các tập
tin PDF. Công nghệ này được sử dụng rộng rãi trong nhiều lĩnh vực và tiên tiến
nhất OCR hệ thống có thể xử lý hầu như tất cả các loại hình ảnh, thậm chí phức tạp
như quét trang tạp chí với hình ảnh và cột hoặc hình ảnh từ một điện thoại di động.
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 16
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 cách cơ bản, quá trình OCR gán một ảnh ký tự vào một lớp bằng cách sử
dụng thuật toán phân loại dựa trên những đặc trưng được trích chọn và mối liên hệ

giữa các đặc trưng đó. Độ đo tương tự là cơ sở để xác định một đối tượng có thuộc
một lớp ký tự hay không. Ngày nay, nhiều thư viện cho OCR đã được xây dựng
như:
• ABBYY – OCR. [1]
• Tesseract – OCR. [2]
• Online OCR API. [3]
4.3.1 ABBYY – OCR: [1]
ABBYY là một công ty rất nổi tiếng về nhận dạng tài liệu, thu thập dữ liệu và
xử lý ngôn ngữ [5]. Họ cũng cung cấp OCR SDK cho nền tảng di động. Sử dụng
SDK của họ, các nhà phát triển có thể phát triển các ứng dụng dựa trên OCR cho
điện thoại di động. Họ cung cấp SDK theo nền tảng di động sau:
• Android.
• Windows Mobile.
• Mobile Linux
• Iphone.
• Symbian.
ABBYY OCR nhận một hình ảnh như đầu vào trong tất cả các định dạng được biết
đến như png, gif, jpg, và quét ảnh lấy về thông tin dạng text.
4.3.2.Tesseract OCR: [2]
Tesseract là một mã nguồn mở OCR engine đã được phát triển tại HP từ năm
1984 và 1994. Sau thời gian này, dự án đã được phát triển bởi Đại học Bắc Las
Vegas, tuy vậy có rất ít tiến triển giữa các năm 1996 và 2006. Mã nguồn cuối cùng
đã được phát hành theo giấy phép Apache 2.0 mã nguồn mở. Google hiện đang phát
triển dự án và tài trợ cho dự án phát triển mở. Hiện tại, Tesseract là công cụ OCR
miễn phí chính xác nhất.
Nó lấy ảnh xám hoặcảnh màu đầu vào và cung cấp cho đầu ra ở định dạng
văn bản. Nó hỗ trợ các loại hình ảnh như png, jpg Nó có thể đọc dữ liệu trong bất
kỳ ngôn ngữ từ hình ảnh như tiếng Anh, Thụy Điển,Đan Mạch và các nhà phát
triển có thể tạo ngôn ngữ riêng của họ nếu sự hỗ trợ cho một cụ thể ngôn ngữ không
phải là có sẵn [8]. Google phát triển thử nghiệm nó trên Ubuntu và Windows hệ

điều hành, nhưng nó cũng hoạt động trên các nền tảng khác Linux và Mac, vv
Chúng tôi cũng có thể sử dụng thư viện này trên các nền tảng di động như Android
và iPhone.
4.3.3.Chọn lựa thư viện OCR:
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 17
Tesseract là bộ thư viện mã nguồn mở, nhưng độ chính xác nhận dạng chưa được
cao. ABBYY có độ chính xac trong nhận dạng cao, nhưng phải trả phí. Do đó ứng
dụng sẽ sử dụng Tesseract để nhận dạng, nhưng sẽ thông qua tiền xử lý ảnh để nâng
cao kết quả nhận dạng.
4.4. OpenCV-Thư viện xử lý ảnh mã nguồn mở : [4]
OpenCV [4] là một bộ thư viện xử lý hình ảnh mã nguồn mở được host trên
Bộ thư viện được viết trên ngôn ngữ
C/C++ nhờ đó nó có khả năng hoạt động trên gần như mọi nền tảng như Linux,
Windows và MacOS. Ngoài ra, nhờ sự ủng hộ nhiệt tình của cộng đồng mã nguồn
mở, OpenCV còn có khả năng hoạt động trên các nền tảng khác như Java, nhúng,
và đặc biệt là Android.
OpenCV ban đầu được thiết kế cho các thiết bị điện toán với sức mạnh rất lớn, được
tối ưu hóa trên nền ngôn ngữ C và khả năng tận dụng các bộ vi xử lý đa luồng – đa
nhân nhằm hiện thực hóa các ứng dụng xử lý hình ảnh thời gian thực. Do đó, khi
được chuyển lên các nền tảng di động, bộ thư viện này bị thuyên giảm khá nhiều
sức mạnh so với phiên bản gốc, nhưng vẫn là một trong những bộ thư viện tốt nhất
cho thế giới mobile.
OpenCV là một bộ thư viện rất lớn, được cấu trúc thành 5 phần chính, trong đó có 4
phần được phân chia như hình 2.3.1 dưới đây. Trong đó, CV chứa các hàm xử lý
hình ảnh căn bản và các thuật toán nhận dạng cấp cao; MLL là bộ thư viện phục vụ
cho ngành máy học. HighGUI chứa các lệnh nhập xuất và hàm để truy xuát hình
ảnh, video; CXCore chứa các cấu trúc cơ bản, các hàm vẽ và các hàm dùng chung
cho toàn bộ thư viện.
Trong hình 2.3.1 không bao gồm CvAux, thành phần chứa các thuật toán còn trong
giai đoạn thử nghiệm hoặc các hàm bị ngừng phát triển. Trong CvAux, người dùng

có thể tìm thấy khá nhiều hàm có khả năng sẽ xuất hiện chính thức trong OpenCV
trong tương lai. Có thể kể đến như:
• Nhận dạng cử chỉ từ camera
• Đặc tả các texture (vân bề mặt)
• Theo dõi mắt và miệng
• Theo dõi 3D
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 18
Hình 5: Kiến trúc Opencv.
Hiện tại, OpenCV đã cung cấp sẵn các wrapper dành cho hệ điều hành
Android trên trang chủ của mình (
và cho người dùng chọn lựa giữa việc sử dụng thư viện đã biên dịch sẵn hay dùng
trực tiếp mã nguồn của OpenCV. Nếu không có yêu cầu đặc biệt về các tính năng
hay tối ưu thêm nữa các hàm của OpenCV, lựa chọn đầu tiên sẽ dễ dàng hơn cho
đại đa số người dùng.
Sau khi tải và cài đặt OpenCV lên môi trường lập trình cho Android, người dùng đã
có thể sử dụng các tính năng đặc biệt của bộ thư viện này một cách nhanh chóng.
4.5.Sửa lỗi chính tả Tiếng Viết với Hunspell: [ 11 ]
Bài toán kiểm lỗi chính tả là một bài toán khá phức tạp, được không ít đơn vị
nghiên cứu, phát triển và nó có tính ứng dụng cao, đặc biệt là trong các ứng dụng
soạn thảo hay nhận dạng văn bản. Chương trình kiểm lỗi chính tả cần có hai chức
năng chính, cơ bản là chỉ ra lỗi sai và đưa ra gợi ý sửa lỗi.
Hunspell là một kiểm tra chính tả và phân tích hình thái học được thiết kế
cho các ngôn ngữ với các hình thái phong phú và từ kép và ký tự mã hóa phức tạp,
ban đầu được thiết kế cho ngôn ngữ Hungary. Hunspell dựa trên MySpell và tương
thích ngược với từ điển MySpell. Trong khi MySpell sử dụng một mã hóa ký tự
single-byte, Hunspell có thể sử dụng từ điển Unicode UTF-8-mã hóa.
Hunspell được sử dụng để xây dựng bộ kiểm tra chính tả trên LibreOffice,
OpenOffice.org, Mozilla Firefox 3 & Thunderbird, Google Chrome. Đã có phần
mềm kiểm tra lỗi chính tả Tiếng Việt cũng sử dụng thư viện này như: VietSpell.
Tổng kết chương

Trong chương này của đồ án, tôi đã trình bày những vấn đề gặp phải cùng
với định hướng giải pháp để giải quyết những vấn đề khi xây dựng ứng dụng
VietCardReader. Trong chương này cũng nêu cơ sở lý thuyết và công nghệ sử dụng
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 19
để xây dựng và triển khai ứng dụng. Trong phần tiếp theo ta sẽ cùng đi vào phân
tích, thiết kế và các giải pháp cài đặt cụ thể của ứng dụng.
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 20
CHƯƠNG 2: CÁC KẾT QUẢ ĐẠT ĐƯỢC.
Chương 1 đã trình bày về các vấn đề cần giải quyết và giải pháp định hướng.
Chương này sẽ đi phân tích thiết kế ứng dụng theo các giải pháp đã được đề ra ở
chương trước. Nội dung sẽ trình bày trong chương này:
• Đặc tả yêu cầu: Mô tả các yêu cầu đối với ứng dụng.
• Phân tích yêu cầu: sử dụng usecase phân tích các yêu cầu của người dùng.
• Thiết kế hệ thống: xây dựng kiến trúc hệ thống, giải thuật tiền xử lý ảnh, giải
thuật trích rút thông tin, thiết kế dữ liệu và giao diện.
• Cài đặt hệ thống: Mô ta kiến trúc cài đặt ứng dụng.
• Kiểm thử hệ thông.
Tiếp theo là chi tiết của từng phần trong chương này.
1. Đặc tả yêu cầu:
Tác nhân: người chủ điện thoại.
Yêu cầu chức năng:
• Tự động lấy thông tin từ danh thiếp vào điện thoại lưu vào danh bạ của
android. Đây là yêu cầu quan trọng nhất ứng dụng cần thực hiện. Người
dùng sẽ sử dụng camera để chụp ảnh hoặc lấy ảnh từ thư viện ảnh, ứng dụng
cần trich rút thông tin danh thiếp trên ảnh và đưa các thông tin trích rút này
cho người dùng xem. Người dùng sẽ kiểm tra độ chính xác của thông tin sau
đó họ sẽ quyết định có lưu vào contact của android hay không.
• Người dùng tạo thêm các trường thông tin để lưu vào contact. Ứng dụng có
sẵn các trường thông tin lưu vào contact như tên, điện thoại, email, địa
chỉ Song danh thiếp có thể có các loại thông tin khác chẳng hạn như mã số

thuế (MST) do đó người dùng cần có khả năng lưu thêm các trường này
vào contact.
• Chống trùng lặp contact trong android. Các contact trong android không bị
trùng lặp nhau. Cụ thể ở đây không có contact nào trùng tên hiển thị, nếu
phát hiện contact được lưu vào trùng tên với một contact đã có thì cần thông
báo cho người dùng. Người dùng nếu chọn tiếp tục lưu thì hai contact này sẽ
được ghép vào với nhau thành một contact duy nhất trong android.
• Lựa chọn ngôn ngữ nhận dạng: Ứng dụng tập trung chủ yếu nhận dạng Tiếng
việt, nhưng có trường hợp danh thiếp của Việt Nam (địa chỉ, số điện thoại )
nhưng là Tiếng Anh. Người dùng có thể lựa chọn nhận dạng tiếng ciệt hoặc
tiếng anh tùy theo danh thiếp để nâng cao độ chính xác.
• Quản lý thông tin liên lạc của contact. Các danh thiếp sau khi được trích rút
sẽ được lưu vào contact của android. Người dùng sẽ thực hiện các thao tác
tìm kiếm, chỉnh sửa, xóa, liên lạc trong contact của android.
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 21
Yêu cầu phi chức năng:
• Ứng dụng hoạt động ổn định, thông suốt. Trong quá trình chạy ứng dụng,
ứng dụng không bị treo quá lâu. Do thời gian thực hiện quá trình OCR
thường là từ 10 tới 20 giây trên máy có cấu hình mạnh, trên các dòng điện
thoại cũ có thể lâu hơn, nên cần giới hạn thời gian nhận dạng. Tức là nếu quá
thời gian đó thì ảnh xem như không nhận dạng được.
• Dễ sử dụng. Tính dễ sử dụng dựa trên số thao tác cần thực hiện 1 chức năng.
Chức năng chính của ứng dụng là “Trích rút thông tin từ ảnh”, để thực hiện
chức năng này người dùng chỉ cần sử dụng camera để chụp ảnh hoặc chọn
ảnh từ thư viện. Tất cả chỉ mất từ 1 đến 2 thao tác.
• Tính an toàn, bảo mật: ứng dụng có sử dụng tới contact của android. Do đó
cần đảm bảo các contact không bị thay đổi ngoài ý muốn, đảm bảo tính toàn
vẹn và bỏa mật cho contact của người dùng.
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 22
2.Phân tích usecase:

2.1.Mô hình usecase tổng thể của ứng dụng:
Hình 6: Biểu đồ usecase tổng quan.
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 23
Từ đặc tả yêu cầu người sử dụng, các usecase chính của hệ thống được đưa ra và
biểu diễn như trong biểu đồ usecase tông quan phía trên. Có các usecase chính như
sau:
• Usecase 1: Nhận dạng thông tin danh thiếp từ camera. Người sử dụng cung
cấp ảnh đầu vào để thực hiện quá trình nhận dạng và trích rút thông tin liên
lạc trên danh thiếp. Có 4 usecase con tron usecase này:
 Usecase 1.1: Nhận dạng thông tin danh thiếp từ camera điện thoại.
Người dùng sử dụng camera điện thoại để chụp ảnh danh thiếp, cung
cấp ảnh đầu vào cho ứng dụng.
 Usecase 1.2: Nhận dạng thông tin danh thiếp từ thư viện ảnh. Người
dùng chọn ảnh từ thư viện ảnh của android, cung cấp ảnh đầu vào cho
ứng dụng, sau đó thực hiện nhận diện thông tin trên ảnh này.
 Usecase 1.4: Nhận dạng Offline. Quá trính nhận dạng và trích rút
thông tin liên lạc diễn ra ngay trên máy điện thoại.
 Usecase 1.5: Nhận dạng Online. Quá trình nhận dạng diễn ra trên
server. Ảnh sẽ được gửi từ điện thoại tới server và server sẽ trả về kết
quả nhận dạng.
• Usecase 2: Quản lý danh bạ trên android. Người dùng thực hiện các thao tác
như tìm kiếm contact, thêm contact, xóa contact, sửa thông tin contact.
• Usecase 3: Thiếp lập ứng dụng. Người dùng thiếp lập các thông số hoạt động
cho ứng dụng.
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 24
2.2.Đặc tả chi tiết một số usecase:
2.2.1.Nhận dạng thông tin trên danh thiếp:
Hình 7 : Biểu đồ usecase cho chức năng "Nhận dạng thông tin trên danh
thiếp".
- Tên usecase: Nhận dạng thông tin trên danh thiếp.

- Actor: user.
-Mục đích: Lấy thông tin trên danh thiếp lưu vào contact của android.
-Mô tả: Đây là usecase nhận dạng và trích rút thông tin từ ảnh danh thiếp. Người
dùng sẽ sử dụng camera để chụp ảnh hoặc chọn ảnh từ thư viện để tiến hành nhận
dạng. Người dùng có thể chọn OCR ngay trên máy điện thoại hoặc sử dụng dịch vụ
OCR cloud. Sử dụng dịch vụ OCR cloud cho độ chính xác cao hơn nhưng lại lâu
hơn so với OCR trên máy. Sau khi nhận dạng và trích rút thông tin (tên, email, điện
thoại ), các thông tin sẽ được nhận dạng sẽ hiển thị trên màn hình để người dùng
chỉnh sửa các thông tin này lại cho chính xác. Người sử dụng có thể thêm các
trường thông tin mà ứng dụng chưa có (chẳng hạn như mã số thuế).
Sinh viên thực hiện: Trần Đức Hải 20080886 Khóa 53 Lớp Công Nghệ Phần Mềm 25

×