Thiết lập ứng dụng:

Một phần của tài liệu Ứ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 ) (Trang 30)

- Tên usecase: Nhận dạng thông tin trên danh thiếp.

2.2.3.Thiết lập ứng dụng:

Hình 11 : Biểu đồ usecase cho chức năng “Thiết lập ứng dụng”.

- Tên usecase: Thiết lập ứng dụng.

-Mô tả: Người dùng lựa chọn các thông số hoạt động cho ứng dụng. -Luồng sự kiện:

User Ứng dụng

1.Mở ứng dụng.

2,Chọn chức năng “Thiết lập”.

3.Thêm, xóa, sửa loại thông tin lưu trong contact.Ví dụ: email, MST, điện thoại... 4.Quay trở lại màn hình chính.

1.Hiển thị màn hinh chính, để người dùng chọn chức năng,

2.Hiển thị màn hình “Thiết lập”.

3,Ứng dụng tìm liên lạc theo tên. Hiển thị liên lạc tìm được cho người dùng. 4.Hiển thị màn hình chính.

3.Thiết kế:

3.1.Thiết kê lớp:

Sau khi phân tích các usecase, các lớp của hệ thống được định nghĩa và mô tả chi tiết trong phần này. Các lớp của hệ thống bao gồm các lớp trên server và các lớp trên client Android.

3.1.1.Các lớp trên Server:

Hình 12 .Biểu đồ lớp phía server.

Biểu đồ trên mô tả các lớp chính trên server. Dưới đây là mô tả chi tiết về các lớp này.

Lớp OCRService: Đây là lớp chứa phương thức xử lý yêu cầu nhận dạng từ client. • Các thuộc tính:

 ArrayList<String> email: mảng chứa các email tách được từ ảnh danh thiếp.

 ArrayList<String> phone: mảng chứa các số điện thọai bàn.

 ArrayList<String> mobile: mảng chứa các số di động.

 ArrayList<String> address: mảng chứa các thông tin địa chỉ.

 ArrayList<String> nameArr: mảng chứa các chuỗi có khả năng là tên.

 String name: tên được chọn là tên chính trên danh thiếp. • Các phương thức:

 Public Response doOCR (InputStream hereIsImage) : phương thức xử lý POST request thực hiện OCR. Tham số đầu vào là chuỗi byte của ảnh. Kết quả trả về là Response chứa kết quả trích rút hoặc thông báo lỗi.

 Public String postprocess (String str) : phương thức xử lý lỗi chính tả từ quá trình nhận dạng chữ trên ảnh.

Lớp ExtractInfomation: Đây là lớp chứa các phương thức tách từng thông tin liên lạc riêng biệt. Các phương thức chính trong lớp:

• Public static void extractPhone

(String s, Arraylist<String> phone, Arraylist<String> mobile): phương thức thực hiện tách số điện thoại bàn và điện thoại di động. • Public static void extractName(String s, Arraylist<String> nameArr):

phương thức thực hiện tách tên từ chuỗi.

• Public static void extractEmail(String s, Arraylist<String> email) phương thức thực hiện tách email từ chuỗi.

• Public static void extractAddress(String s,Arraylist<String> address) phương thức thực hiện tách địa chỉ từ chuỗi. (adsbygoogle = window.adsbygoogle || []).push({});

• Public static void filterName(Arraylist<String> nameArr)

phương thức thực hiện chọn tên chính từ mảng chứa các chuỗi có thể là tên. Lớp PreprocessBussiness: Đây là lớp bao gồm các phương thức tiền xử lý ảnh cho quá trình OCR. Các phương thức chính trong lớp này:

• Public IplImage Preprocess (IplImage src): phương thức thực hiện quá trinh tiền xử lý ảnh.

• Public IplImage sharpenImage(IplImage src): phương thức thực hiện làm nét ảnh.

Lớp DataSource: Đây là lớp chứa phương thức đọc dữ liệu tên và địa chỉ VieetNam. • Các thuộc tính:

 Arraylist<String> name: mảng chứa các họ của người Việt Nam. Dữ liệu đọc từ file name.txt.

 Arraylist<String> address: mảng chứa tên các tỉnh thành phố của Việt Nam. Dữ liệu đọc từ file address.txt.

• Phương thức:

 Public void initData() : phương thức đọc dữ liệu tên và địa chỉ từ file name.txt và file address.txt vào 2 mảng dữ liệu phịa trên.

3.1.2.Các lớp trên client Android:

Hình 13: Biểu đồ lớp của ứng dụng.

Biểu đồ trên mô tả các lớp chính trên client android. Dưới đây là mô tả chi tiết về các lớp này

Mô tả tóm tắt về các lớp chính trong hệ thống:

STT Tên Mô tả tóm tăt

1 CaptureActivity Lớp tạo giao diện cho việc chụp ảnh. 2 CameraManager Quản lý khởi tạo, sử dụng camera.

3 Contact Lớp của một contact.

4 Phone Lớp điện thoại của contact.

5 Address Lớp địa chỉ của contact.

6 Organization Lớp tổ chức của contact

7 Email Lớp email của contact.

8 EditContactActivity Thêm, sửa xóa thông tin một contact 9 OCRActivity Thực hiện quá trình nhận dạng và trích rút

thông tin offline. 10 ManageContactActivit

y

Hiển thị danh sách contact, cho phép tìm kiếm contact.

11 InfoWrapper Lớp chứa thông tin nhận được từ quá trình nhận dạng.

10 ListInfoWrapper Lớp chứa các thông tin nhận được từ quá trình nhận dạng.

Bảng 4: Các lớp chính trên client Android.

Lớp OCRActivity: chứa các phương thức nhận dạng chữ trên ảnh dùng trong chế độ offline.

• Các thuộc tính:

 Bitmap bm: Đây là bitmap của ảnh danh thiếp cần nhận dạng. (adsbygoogle = window.adsbygoogle || []).push({});

 TessBaseAPI baseAPI: Đây là đối tượng dùng để gọi API nhận dạng từ Tesseract engine.

• Các phương thức:

 Private void doOCROffline(Bitmap bm)

Đây là phương thức thực thi quá trình ocr ngay trên máy điện thoại. Tham số đầu vào là ảnh danh thiếp cần nhận dạng

 private void doOCROnline(Bitmap bm)

Đây là phương thức gửi yêu cầu tới server để thực hiện quá trình OCR trên server.

Đây là phương thức tách thông tin từ chữ nhaanh dạng được từ quá trình ocr.

Lớp ListInfoWrapper: đây là lớp chứa danh sách các thông tin nhận dạng.

• Thuộc tính: ArrayList<InfoWrapper> infoList: Đây là danh sách chứa các đối tượng InfoWrapper.

• Phương thức:

 Public void update(int pos, String content, int index)

Đây là phương thức thực hiện cập nhật chỉnh sửa của người dùng trên thông tin liên lạc được nhận dạng.

 Public void remove(int index)

Đây là phương thức xóa đi một thông tin liên lạc nhận dạng khỏi danh sách.

 Public void sort()

Đây là phương thức thực hiện việc sắp xếp các thông tin nhận dạng theo thứ tự tên, di động, điện thoại cố định, email, địa chỉ...

Lớp Contact: Đây là lớp chứa thông tin liên lạc được đọc từ contact provider của android.

• Các thuộc tính:

 String name: chứa tên hiển thị của contact.

 Arraylist<Phone> phone: chứa các số điện thoại của contact.

 Arraylist<Email> email: chứa các email của contact.

 Arraylist<Address> address: chứa các địa chỉ của contact. • Các phương thức:

 Public void toInfoWrapper():

phương thức chuyển contact thành đối tượng ListInfoWrapper nhằm mục đích tiện cho việc chỉnh sửa thông tin contact.

3.2.Biểu đồ tuần tự:

3.2.1.Biểu đồ tuần tự “Xử lý yêu cầu nhận dạng trên server”:

Hình 14 .Biểu đồ tuần tự “Xử lý yêu cầu nhận dạng trên server”.

Biểu đồ mô tả quá trình xử lý yêu cầu nhận dạng ảnh danh thiếp gửi từ client lên server. Cient sẽ gửi request xử lý lên server, bao gồm mảng byte của ảnh cần nhận dạng. Quá trình xử lý sẽ diễn ra theo thứ tự tiền xử lý ảnh, thực hiện OCR dùng Tesseract, hậu xử lý loại bỏ lỗi chính tả (sử dụng Hunspell), và trích rút thông tin liên lạc. Sau đó, server sẽ gửi trả kết quả xử lý dưới dạng JSON về cho client,

3.2.2.Biểu đồ tuần tự “Nhận dạng thông tin trên ảnh”: Biểu đồ mô tả quá trình xử

lý yêu cầu nhận dạng thông tin trên ảnh của người dùng. Nếu người dùng thiết lập chế độ thực hiện OCR online thì ứng dụng sẽ gửi yêu cầu xử lý nhận dạng lên server và quá trình nhận dạng sẽ thực thi trên server. Nếu không quá trình sẽ diễn ra ngay trên máy. Sau khi nhận dạng và trích rút xong, EditActivity sẽ được gọi để người dùng chỉnh sửa thông tin nhận dạng. (adsbygoogle = window.adsbygoogle || []).push({});

3.2.3.Biểu đồ tuần tự “Quản lý contact”: Biểu đồ mô tả quá trình quản lý contact

bao gồm tìm kiếm, thêm, xóa sửa...

3.2.4.Biểu đồ tuần tự “Chỉnh sửa thông tin contact”:

3.2.5.Biểu đồ tuần tự “Thiết lập ứng dụng”: Biểu đồ mô tả quá trình chỉnh sửa các

thiết lập cho ứng dụng hoạt động.

3.3.Thiết kế giải thuật:

3.3.1.Tiền xử lý nâng cao chất lượng ảnh:

Thuật toán tiền xử lý được cài đặt trong phương thức preprocess của lớp PreprocessBussiness trên server.

Ảnh thu được từ camera có độ phân giải thấp, chịu nhiều ảnh hưởng của điều kiện môi trường. Nếu đưa ảnh thu được này vào nhận dạng ngay, kết quả thu được có độ chính xác không cao. Do đó, trước khi đưa ảnh vào nhận dạng cần tiền xử lý ảnh để nâng cao chất lượng ảnh. Các bước tiền xử lý ảnh:

Hình 19: Biểu đồ tiến trình “Xử lý chất lượng ảnh cho OCR”.

Ảnh đa mức xám là ảnh sử dụng 1 byte màu cho mỗi pixel, chuyển từ ảnh màu sang ảnh đa mức xám loại bỏ các dữ liệu màu không cần thiết. Nhận dạng ảnh đa mức xám dễ dàng hơn ảnh màu.

Ảnh thu được từ camera có nhiễu, làm giảm độ chính xác của nhận dạng. Để giảm nhiễu ảnh, trước hết ta sử dụng tính năng auto focus của camera để thu được ảnh có ít nhiễu nhất. Tiếp theo ta sử dụng bộ lọc nhiễu để giảm nhiễu ảnh.Sau khi sử dụng bộ lọc nhiễu, các nhiễu ảnh bị loại trừ đồng thời ảnh cũng sẽ bị mờ đi một chút. Do đó ảnh cần được tăng độ nét.

Ảnh thu được từ camera thường có độ phân giải là 72dpi. Trong khi để nhận diện với Tesseract, ảnh được yêu cầu với độ phân giải là 300dpi. Do đó, ta cần nâng cao độ phân giải của ảnh lên khoảng 5 lần.

Sau các bước tiền xử lý ảnh như trên, độ chính xác của kết quả nhận dạng đã tăng lên đáng kể.

3.3.2.Tách thông tin từ kết quả nhận dạng:

Thuật toán tách thông tin nhận dạng được cài đặt trong phương thức extractInfo của lớp ExtractInfomation, được đặt trên cả server và client.

Thông tin cần trích rút từ danh thiếp bao gồm: tên người, điện thoại, địa chỉ, email. Bài toán trích rút thông tin từ một đoạn chữ là bài toán con của nhận dạng tên thực thể. Có 2 cách để trích rút thông tin là: sử dụng các qui tắc được định nghĩa, hoặc sử dụng phương pháp thống kê học máy. Trong đồ án, em sử dụng các qui tắc để trích rút thông tin từ danh thiếp.

Thông tin chữ nhận được từ quá trình nhận dạng bao gồm nhiều dong thông tin. Dòng thông tin trên danh thiếp thường có các chữ đầu đề để cho biết nội dung của dòng đó. Thuật toán tách thông tin sẽ đọc từng dòng thông tin và tách thông tin có trên dòng này. Thuật toán dừng lại khi đã quét qua toàn bộ các dòng.

Hình 20: Biểu đồ tiến trình “Tách thông tin nhận dạng”.

Các thông tin như điện thoại, email có thể được tách sử dụng regular expression. Việc trích rút tên người dựa vào đặc điểm tên người Việt Nam.

a) Thuật toán tách địa chỉ:

Đầu vào của thuật toán là dòng thông tin. Thuật toán sẽ kiểm tra xem dòng đầu vào có chứa tiền đề như ĐC, Địa chỉ, Add, Address không. Nếu có thì dòng này chứa thông tin địa chỉ. Nếu không có, thuật toán sẽ kiểm tra xem dòng thông tin này co chứa tên địa điểm các tỉnh thành phố Việt Nam hay không. Thuật toán sẽ đọc lần lượt các địa điểm trong file dữ liệu để kiểm tra với dòng đầu vào.Tiếp theo là lưu đồ của thuật toán nhận dạng địa chỉ.

Hình 21.Lưu đồ thuật toán tách địa chỉ.

b) Thuật toán tách tên người:

Đầu vào của thuật toán là dòng thông tin. Thuật toán sẽ kiểm tra xem trong dòng thông tin có chứa họ của người Việt Nam hay không, nếu dòng thông tin có chứa họ của người Việt Nam thì nó sẽ được lưu vào mảng tên người. Dữ liệu tên người sẽ được đọc từ file dữ liệu chứa các họ của người Việt Nam.

Hình 22.Lưu đồ thuật toán tách tên người Việt Nam.

c) Thuật toán tách số điện thoại:

Đầu vào của thuật toán là dòng thông tin. Thuật toán sẽ tách số điện thoại bằng regular expression và phân loại số điện thoại ra 2 loại là số cố định và số di động. Trên danh thiếp, các số điện thoại được biểu diễn là một chuỗi số liên tục hoặc được phân cách nhau bởi các kí tự như kí tự trắng, dấu chấm, dấu gạch ngang. Regular expression cần tách được định dạng chuỗi như vậy. Thuật toán sử dụng regular expression như sau:

Việc phân loại số điện thoại là cố định hay di động dựa vào đầu số của chuỗi tách bởi regular expression. Thuật toán được biểu diễn chi tiết trong lưu đồ dưới đây:

3.4.Thiết kế dữ liệu: (adsbygoogle = window.adsbygoogle || []).push({});

3.4.1.Dữ liệu tên người:

Thông thường, họ tên người Việt được nói và viết theo thứ tự: Họ + Tên Đệm + Tên Chính. Họ người Việt hay người Kinh chủ yếu là đơn âm. Việt Nam có tới hàng trăm tên họ nhưng do ảnh hưởng thay đổi chính trị dẫn đến việc cải, đổi họ tên, họ người Việt hiện tập trung 90% dân số trong 14 họ chính:

Hình 24: Biểu đồ thành phần các họ của người Việt Nam.

Để nhận diện tên người, ứng dụng xây dựng dữ liệu các họ của người Việt Nam. Dữ liệu thu thập từ danh sách thí sinh thi đại học. Tổng cộng số tên họ thu được là 148.Các họ sẽ được lưu vào file txt theo cấu trúc mỗi dòng là 1 họ. Khi ứng dụng chạy, dữ liệu sẽ được đọc lưu vào mảng và sử dụng tìm kiếm tuần tự để tìm kiếm ra tên họ trong mảng.

3.4.2.Dữ liệu các tỉnh, thành phố Việt Nam:

Địa chỉ trên danh thiếp thường sẽ có tên tỉnh hoặc thành phố Việt Nam. Để nhận diện địa chỉ, ta sẽ xây dựng dữ liệu các tỉnh thành phố Việt Nam. Việt Nam có 64 tỉnh, thành phố. Ta sẽ lưu các tỉnh thành phố này vào một file txt, mỗi tỉnh thành phố trên một dòng.

3.4.3.Dữ liệu về mạng điện thoại Việt Nam:

Để nhận dạng số điện thoại, ta xây dựng dữ liệu về mạng điện thoại Việt Nam. Điện thoại có 2 loại chính là máy bàn và di động. Dữ liệu về mã vùng điện thoại cố định cho máy bàn:

Hình 25: Các đầu số điện thoại cố định ở Việt Nam.

Đầu số các mạng di động của Việt Nam:

3.5.Thiết kế giao diện:

Ứng dụng gồm các màn hình sau:

STT Tên Mô tả tóm tắt

1 Màn hình chính Màn hình đầu tiên khi vào ứng dụng, người dùng chọn các chức năng chính từ đây.

2 Màn hình chụp ảnh Giao diện cho người dùng thực hiện chụp ảnh. 3 Màn hình quản lý

contact

Hiển thị danh sách contact, người dùng chọn các chức năng quản lý từ đây.

4 Màn hình thông tin chi tiết contact

Hiển thị thông tin chi tiết về contact được chọn. 5 Màn hình chỉnh sửa

contact

Người dùng chỉnh sửa thông tin contact, sau đó lưu lại vào contact.

Bảng 5: Các màn hình chính của ứng dụng.

3.5.1.Màn hình chính:

Màn hình chính là màn hình đầu tiên khi vào ứng dụng, người dùng chọn các chức năng chính từ đây.

Hình 27:Màn hình chính của ứng dụng.

3.5.2.Màn hình chụp ảnh:

Màn hình chụp ảnh là giao diện cho người dùng sử dụng camera để chụp ảnh.

Hình 28:Màn hình chụp ảnh của ứng dụng.

Màn hình chụp ảnh có thành phần giao diện Camera Preview cho người dùng xem khung hình trước khi chupja nảh, và có 2 button: chụp và flash.

3.5.3.Màn hình quản lý contact: (adsbygoogle = window.adsbygoogle || []).push({});

Hình 29: Màn hình quản lý contact của ứng dụng.

Màn hình quản lý danh thiếp hiển thị danh sách contac. Màn hình bao gồm 1 ô để nhập thông tin contact cần tìm kiếm, 1 nút Search, và 1 listview hiển thị danh sách contact.

3.5.4.Màn hình chỉnh sửa contact:

Hình 30 : Màn hình chỉnh sửa contact.

Đây là màn hình chỉnh sửa contact, bao gồm các thành phần: imageview hiển thị ảnh danh thiếp, listview hiển thị lần lượt cac thông tin trong contact và 2 button là button lưu contact và button hủy bỏ.

3.5.5.Biểu đồ chuyển giao diện giữa các màn hình trong ứng dụng:

4.Cài đặt:

4.1.Môi trường cài đặt:

Ứng dụng được phát triển bằng ngôn ngữ Android/ Java, sử dụng IDE Eclipse. Các thư viện sử dụng bao gồm:

• Tess4J: đây là phiên bản trên java của thư viện ocr Tesseract. [ 13 ] • JavaCV: đây là phiên bản java của thư viện OpenCV. [ 5 ]

• Hunspell: thư viện xử lý lỗi chính tả. [ 11 ]

• Jersey: thư viện RESTful webservice trong java. [ 12 ]

4.2.Kiến trúc hệ thống:

Kiến trúc logic của hệ thống theo kiến trúc 3 lớp (3 - layer): GUI Layer, Bussiness Layer và Data Access Layer.

Hình 32 : Kiến trúc 3 lớp của ứng dụng.

-GUI Layer: là lớp giao diện, chỉ thuần xử lý việc giao tiếp với người sử dụng,

Một phần của tài liệu Ứ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 ) (Trang 30)