3.2.1.Chức năng
Với hệ thống nhận dạng và dịch trên thiết bị di động đã xây dựng, luận văn chọn client (thiết bị di động) là điện thoại di động chạy hệ điều hành android để phát triển ứng dụng. Ứng dụng trên client được viết bằng ngôn ngữ Java, sử dụng Android SDK tích hợp vào IDE Eclipse. Chức năng chính của ứng dụng này bao gồm:
- Chụp ảnh tài liệu hoặc load ảnh (sẵn có) cần OCR.
- Gửi ảnh chụp được về server (cùng yêu cầu OCR, sửa lỗi chính tả, dịch sang ngôn ngữ khác); chờ đợi và nhận kết quả dạng text từ server trả về. - Chỉnh sửa kết quả bằng tay, gửi SMS hoặc lưu vào cơ sở dữ liệu.
- Tìm kiếm thông tin đã lưu trữ từ quá trình nhận dạng.
3.2.2.Giao diện
Dưới đây là giao diện đầu tiên khi khởi động chương trình.
Hình 3.2. Giao diện chính chương trình client
Trong giao diện chính của chương trình có hai chức năng chính:
- Chức năng rút trích thông tin (Extract information) từ ảnh chụp trực tiếp từ điện thoại hoặc ảnh sẵn có trong điện thoại.
- Chức năng tìm kiếm thông tin (Search information) đã lưu trong cơ sở dữ liệu từ quá trình rút trích thông tin.
* Chức năng rút trích thông tin từ ảnh: cửa sổ gồm 2 tab, tab image và tab
OCR Result.
Trong tab Image có một số chức năng sau:
Hình 3.3. Giao diện tab image
- Chức năng load ảnh sẵn có (touch and load image): chạm vào giữa màn hình để load ảnh được lưu sẵn trong điện thoại.
- Chức năng chụp ảnh (Photo): hiển thị cửa sổ điều khiển việc chụp ảnh tài liệu. Trong cửa sổ này có hai tùy chọn chụp: full mode (chụp toàn màn hình camera hiển thị) và block mode (chụp một vùng ảnh có giới hạn bởi một hình chữ nhật). Trong chế độ full mode có thể chuyển sang chế độ
block mode và ngược lại. Trong chế độ block mode, để điều chỉnh độ rộng và chiều cao của hình chữ nhật giới hạn vùng chụp. Ở cả hai chế độ đều có thể zoom camera để chụp ảnh ở xa.
Hình 3.5. Ảnh chụp ở chế độ “block mode”
- Chức năng nhận dạng (OCR): gọi dịch vụ OCR (kèm theo một số yêu cầu khác như sửa lỗi chính tả, dịch sang ngôn ngữ khác) cài đặt trên server để rút trích thông tin ảnh vừa gửi. Hình mô tả quá trình chờ đợi kết quả xử lý từ server.
Hình 3.6. Chương trình đang chờ xử lý
- Chức năng thiết lập tùy chọn (Settings): hiển thị cửa sổ thiết lập các tùy chọn cho ứng dụng như địa chỉ server cung cấp dịch vụ, loại ảnh (ảnh tài liệu, ảnh vùng chữ số, ảnh namecard), ngôn ngữ nhận dạng, tùy chọn dịch sang ngôn ngữ khác, tùy chọn kiểm tra và sửa lỗi chính tả.
Trong tab OCR Result có một số chức năng sau:
Hình 3.8. Giao diện tab OCR Result
- Lưu kết quả (Save): kết quả được hiển thị trong ô textbox, có thể chỉnh bằng tay và lưu vào cơ sở dữ liệu trên điện thoại, phục vụ cho việc quản lý và tìm kiếm thông tin.
- Tạo liên hệ mới (Create contact): chương trình tự động lọc ra từ kết quả ở ô textbox một danh sách các số có khả năng là số điện thoại và chuyển đến giao diện tạo liên hệ mới. Ở đây, người dùng chọn số phù hợp để tạo liên hệ mới.
- Gửi SMS: có thể gửi kết quả nhận đã xử lý đến một số điện thoại bất kỳ.
Hình 3.10. Giao diện gửi SMS
* Chức năng tìm kiếm thông tin (Search information): thông tin đã lưu trong cơ sở dữ liệu từ quá trình rút trích thông tin có thể được dễ dàng tìm kiếm, đồng thời có thể xóa mẫu tin (được chọn) không cần thiết ra khỏi cơ sở dữ liệu.
Hình 3.11. Giao diện tìm kiếm và hiển thị thông tin
3.3. Ứng dụng trên server
Trên server chạy hệ điều hành windows được cài đặt một webservice (sử dụng cổng 54321), sau khi nhận ảnh từ client gửi về, sẽ lần lượt thực hiện năm chức cơ bản sau:
- Chức năng tiền xử lý ảnh
- Chức năng OCR trên ảnh đã qua tiền xử lý - Chức năng hậu xử lý kết quả OCR.
- Chức năng sửa lỗi chính tả tự động (nếu client yêu cầu). - Chức năng dịch ra ngôn ngữ khác (nếu client yêu cầu).
Client khi muốn thực hiện việc OCR (kết hợp sửa lỗi chính tả, dịch) trên ảnh đã chụp sẽ gọi webservice này qua môi trường internet. Webservice được xây dựng bằng công nghệ .NET.
3.3.1. Chức năng tiền xử lý ảnh
Sau khi server nhận được ảnh sẽ tiến hành quá trình tiền xử lý ảnh nhằm tăng chất lượng đầu vào cho quá trình OCR phía sau. Trong nhiều trường hợp, khi ảnh đầu vào có bố cục và phân bố màu sắc phức tạp, Tesseract không nhận dạng được hết các vùng text thật sự có trong ảnh. Những ảnh này thường gồm cả hình vẽ, logo; các vùng text có kích thước, màu sắc khác nhau; nhiều vùng có màu nền không đồng nhất. Do đó khi Tesseract tiến hành nhị phân hóa ảnh khó làm nổi bật giữa vùng chứa text thực sự và vùng nền. Điều này dẫn đến kết quả nhận dạng không như mong đợi. Ảnh name card dưới đây là một trường hợp có bố cục và phân bố màu sắc phức tạp:
Hình 3.12. Ảnh có bố cục và phân bố màu sắc phức tạp
Để cải tiến chất lượng nhận dạng với những ảnh như trên, luận văn đề xuất một phương pháp nhằm cắt các phần ảnh khả năng là text ra khỏi ảnh gốc thành một tập các ảnh con rời nhau. Các ảnh này lần lượt sẽ là đầu vào cho quá trình OCR ở phía sau. Với phương pháp này, Tesseract có khả năng cho ra kết quả tốt hơn do đã loại bỏ được một số thành phần không là vùng text; bố cục và phân bố màu sắc trên từng ảnh con trở nên đơn giản hơn; quá trình nhị phân hóa trên một vùng ảnh nhỏ hiệu quả hơn trên cả toàn ảnh lớn. Tuy nhiên, khi áp dụng phương pháp này: thời gian xử lý sẽ tăng lên; một số thành phần có thể là text cũng “vô tình” bị loại bỏ; một số từ có thể bị mất dấu nếu dấu nằm tách xa phần còn lại của từ.
Phương pháp mô tả công việc tách các phần text trong ảnh với các bước lần lượt như sau, trong đó có một số bước sử dụng thư viện nguồn mở AForge.NET và chức năng tích bố cục của Tesseract:
a. Chỉnh độ nghiêng của ảnh gốc về vị trí đúng (AForge.NET).
b. Nhị phân hóa ảnh gốc dùng ngưỡng tương thích cục bộ (AForge.NET). c. Lọc nhiễu trên ảnh nhị phân dùng bộ lọc trung vị (AForge.NET).
d. Làm sạch mép ảnh (tự xây dựng) trên ảnh nhị phân bằng cách xóa tất cả những pixel màu đen liên thông 8 với các pixel màu đen nằm ở 4 mép ảnh. Ảnh nằm trong hình khung chữ nhật là ảnh sau khi chỉnh độ nghiêng, nhị phân hóa, lọc nhiễu và làm sạch mép ảnh.
Hình 3.13. Ảnh gốc sau khi nhị phân hóa và làm sạch
e. Xác định tọa độ các vùng text rời nhau trong ảnh đã làm sạch (dùng khả năng phân tích bố cục ảnh trong Tesseract).
f. Sử dụng tọa độ của các vùng text xác định ở bước trên để tách các vùng text trong ảnh gốc thành các ảnh con rời rạc. Chương trình đã tách được 8 ảnh con lần lượt sau:
Hình 3.14. Các ảnh con cắt ra từ ảnh gốc
Khi sử dụng Tesseract để OCR (không sử dụng chức năng hậu xử lý kết quả OCR) trên ảnh gốc và trên tập các ảnh con. Kết quả cho thấy khi áp dụng phương pháp tách ảnh như trình bày ở trên, cơ bản thông tin mong muốn được rút trích ra nhiều hơn.
Hình 3.15. Kết quả OCR trên ảnh gốc
Hình 3.16. Kết quả OCR trên các ảnh con
3.3.2. Chức năng OCR
Modul OCR được tạo ra bằng cách sử dụng thư viện liên kết động tesseract3.01.dll. Luận văn xây dựng một .NET wrapper dưới dạng file dll managed C++, dựa trên mã nguồn mở tesseract-ocr [13] và tesseractdotnet [14]. Hàm nhận dạng trong thư viện tesseract3.01.dll với một số tham số đầu vào quan trọng như sau:
- PageSegMode: tesseract hỗ trợ chế độ 11 phân trang, bao gồm
PSM_OSD_ONLY = 0, PSM_AUTO_OSD = 1, PSM_AUTO_ONLY = 2, PSM_AUTO = 3, PSM_SINGLE_COLUMN = 4, PSM_SINGLE_BLOCK_VERT_TEXT = 5, PSM_SINGLE_BLOCK = 6, PSM_SINGLE_LINE = 7, PSM_SINGLE_WORD = 8, PSM_CIRCLE_WORD = 9, PSM_SINGLE_CHAR = 10.
- OcrEngineMode: tesseract hỗ trợ 3 chế độ OCR, bao gồm
OEM_TESSERACT_ONLY = 0, OEM_CUBE_ONLY = 1, OEM_TESSERACT_CUBE_COMBINED = 2, OEM_DEFAULT = 3.
- ThresholdingMethod: tesseract hỗ trợ 2 phương pháp chọn ngưỡng trong nhị phân hóa ảnh, bao gồm TM_OTSU_THRESHOLDING = 0, TM_ISODATA_LOCAL_ADAPTIVE_THRESHOLDING = 1.
Các tham số trên được miêu tả chi tiết trong tài liệu Tesseract. Hàm nhận dạng (OcrFromImage) được xây dựng như sau:
Hình 3.17. Định nghĩa hàm OcrFromImage()
Hiện tại chức năng OCR có thể thực hiện với hơn 30 ngôn ngữ khác nhau đã được huấn luyện. Tốc độ xử lý phụ thuộc vào từng ngôn ngữ. Với các ngôn
ngữ tượng hình thì tốc độ xử lý chậm hơn nhiều so với ngôn ngữ Latinh. Dữ liệu huấn luyện cho ngôn ngữ tượng hình cũng khá lớn so với ngôn ngữ Latinh. 3.3.3. Chức năng hậu xử lý kết quả OCR
Sau khi OCR, kết quả đưa ra tồn tại nhiều lỗi nhận dạng không mong muốn. Chức năng này có tác dụng sửa một số lỗi cơ bản nhằm làm tăng chất lượng nhận dạng trên 3 loại ảnh khác nhau.
Đối với ảnh là một vùng số: sẽ thực hiện loại bỏ các ký tự không phải là số.
Đối với ảnh tài liệu (sách, báo):
˗ Sửa lỗi chữ hoa, chữ thường. Ví dụ: hOa=hoa, HoA=HOA.
˗ Sửa lỗi về dấu chấm câu, dấu phẩy: trước các dấu này đi liền với một từ. ˗ Xóa bỏ những từ có khả năng là do nhận dạng vùng ảnh bị nhiễu gây nên,
là các từ chứa ký tự không phải ký tự của ngôn ngữ. Ví dụ „/”~_+.
˗ Thay thế các cụm ký tự hay bị nhận dạng sai. Ví dụ trong tiếng Việt: oĩ=ơi, âỳ=ấy, tmg=úng, lc=k. Danh sách các từ thay thế này được lưu vào file text (vie_document.txt, eng_document.txt) theo định dạng: một cặp từ cần thay thế và thay thế lưu trên một dòng text, cách nhau một khoảng trắng. Danh sách các từ thay thế này ở các ngôn ngữ khác nhau sẽ khác nhau. Do đó cần thống kê kết quả nhận dạng trên nhiều ngôn ngữ mới xây dựng được một bộ dữ liệu tương đối chính xác.
˗ Xử lý nhầm lẫn giữa số 0 và ký tự o.
Đối với ảnh namecard: phương pháp sửa lỗi cũng tương tự như như đối với ảnh tài liệu, song danh sách các từ thay thế có phần đặc trưng hơn (ví dụ Mobiie =Mobile, .oom = .com, wvw = www, @yah00 = @yahoo).
3.3.4. Chức năng sửa lỗi chính tả tự động
Sau khi server thực hiện chức năng OCR, nếu client yêu cầu kiểm tra lỗi chính tả, chức năng sửa lỗi chính tả tự động được sử dụng và được thực hiện trước chức năng dịch sang ngôn ngữ khác. Luận văn đề xuất một phương pháp sửa lỗi chính tả tự động cho một chuỗi đầu vào tuân theo tuần tự các bước sau:
- Tách chuỗi cần sửa lỗi ra thành từng từ.
- Đối với mỗi từ, kiểm tra sự tồn tại của từ trong từ điển tương ứng (ví dụ OCR ngôn ngữ tiếng Anh thì kiểm tra trong từ điển tiếng Anh).
- Nếu đúng, kiểm tra từ tiếp theo.
- Nếu sai, sử dụng kết hợp hai hàm đánh giá MED (minimum edit distance) và maximum số cặp ký tự giống nhau để tự động chọn ra từ có khả năng nhất thay thế từ bị lỗi.
Dữ liệu từ điển được lấy từ trang web
http://ftp.osuosl.org/pub/openoffice/contrib/dictionaries. Từ trong các từ điển này có thể là từ đơn hoặc từ ghép. Luận văn xây dựng một modul nhỏ để thực hiện lọc tất cả các từ đơn trên từ điển gốc và lưu lại vào file từ điển mới có định dạng languagecode.dict, languagecode tuân theo tiêu chuẩn ISO 639-3 (ví dụ eng.dict, vie.dict). Các từ đơn trong các từ điển mới này lưu ở dạng text, mỗi từ nằm trên một dòng. Hiện tại hệ thống hỗ trợ sửa lỗi chính tả tự động trên 10 ngôn ngữ Latinh khác nhau.
3.3.4.1. Hàm đánh giá minimum edit distance (MED)
Để so sánh độ tương đồng giữa hai chuỗi ký tự, người ta hay dùng định nghĩa edit distance. Đó là số bé nhất (minimum) các thao tác xóa, thêm, sửa ký tự cần thiết để chuyển một chuỗi này về chuỗi kia. Ví dụ cần chuyển chuỗi
“ENWRONMENTS” về chuỗi “ENVIRONMENT”. Ký tự “-” là ký tự chưa phù hợp giữa hai chuỗi.
Dòng 1: ENVIRONMENT- Dòng 2: ENW-RONMENTS
Nhìn vào vị trí tương quan của hai chuỗi ở trường hợp trên, ta thấy cần ít nhất 3 thao tác trên chuỗi ở dòng 2 để chuyển chuỗi ở dòng 2 về chuỗi ở dòng 1: thay ký tự “W” thành “N”, thêm ký tự “I” vào trước ký tự “R”, xóa ký tự “S”
ở cuối cùng. Đối với 2 chuỗi này, sau khi quét hết các phương án chuyển đổi,
edit distance được xác định bằng 3.
Trong danh sách các từ trong từ điển, ta tính lần lượt edit distance với từ cần sửa lỗi rồi ưu tiên chọn từ có edit distance (với từ cần sửa lỗi) bé nhất so với các từ còn lại. Qua bước này có thể sẽ cho ra một danh sách các từ đề nghị thay thế có cùng edit distance bé nhất với từ bị lỗi.
3.3.4.2. Hàm đánh giá maximum số cặp ký tự giống nhau
Sau khi thực hiện đánh giá sử dụng thuật toán MED, nếu danh sách các từ đề nghị thay thế nhiều hơn 1 từ sẽ tiến hành áp dụng thêm đánh giá maximum số cặp ký tự giống nhau. Phương pháp mô tả như sau:
- Từ cần sửa lỗi : enwronment.
- Giả sử danh sách từ đề nghị {enrolment, environment}. - Từ cần sửa lỗi enwronment có 9 cặp ký tự từ trái qua phải gồm:
{en, nw, wr, ro, on, nm, me, en, nt} - Từ enrolment có 8 cặp ký tự từ trái qua phải gồm:
- Từ environment có 10 cặp ký tự từ trái qua phải gồm:
{en, nv, vi, ir, ro, on, nm, me, en, nt} - Số cặp ký tự giống nhau giữa 2 từ {enwronment,enrolment} là 5 - Số cặp ký tự giống nhau giữa 2 từ {enwronment,environment} là 7 - Ưu tiên chọn từ environment để sửa lỗi cho từ enwronment.
3.3.5. Chức năng dịch sang ngôn ngữ khác
Sau khi server thực hiện thành công việc OCR (và sửa lỗi chính tả) trên ảnh do client gửi về sẽ cho ra kết quả là một chuỗi ký tự. Nếu trong yêu cầu của client có tùy chọn dịch kết quả nhận dạng sang một ngôn ngữ khác, server thực hiện tiếp chức năng dịch theo yêu cầu trước khi gửi trả kết quả về lại cho server. Chức năng dịch được xây dựng dựa trên nền tảng công nghệ dịch tự động của hãng Google bằng cách sử dụng các hàm API từ thư viện
GoogleTranslateAPI.Net20.dll (do Google cung cấp) để có thể tận dụng được sức mạnh máy dịch khổng lồ này . Do vậy kết quả sau khi server thực hiện chức năng dịch giống hoàn toàn như khi dịch trên dịch vụ trực tuyến Google Translate.
CHƢƠNG 4 – THỰC NGHIỆM VÀ ĐÁNH GIÁ
Hệ thống đã xây dựng tạm gọi là Android OCR. Chức năng OCR của hệ thống sử dụng 3 modul riêng biệt: modul tiền xử lý ảnh trước khi OCR, modul OCR sử dụng Tesseract, modul hậu xử lý kết quả OCR.
Việc thực nghiệm và đánh giá chỉ thực hiện chức năng nhận dạng. Về tập mẫu để thực nghiệm, luận văn sử dụng tập ảnh chụp name card từ camera 3.15MP trên điện thoại LG GT 540 chạy hệ điều hành Android 2.1. Lý do luận văn chọn tập mẫu dạng này vì hàng ngày mọi người thường hay trao đổi name card khi cần liên lạc lẫn nhau. Và từ đó nảy sinh ra nhu cầu rút trích và quản lý những thông tin trong name card với những chiếc điện thoại di động được trang bị khả năng này. Công việc đánh giá thực hiện trên 3 nội dung sau:
4.1. Thực nghiệm trên Tesseract engine
4.1.1. Tập mẫu thực nghiệm
Tesseract OCR engine có thể thực hiện OCR với nhiều định dạng tài liệu