Đề tài Xây dựng phần mềm nhận dạng ký tự quang học sử dụng mã nguồn mở Tesseract Oc

pdf 44 trang vanle 2790
Bạn đang xem 20 trang mẫu của tài liệu "Đề tài Xây dựng phần mềm nhận dạng ký tự quang học sử dụng mã nguồn mở Tesseract Oc", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfde_tai_xay_dung_phan_mem_nhan_dang_ky_tu_quang_hoc_su_dung_m.pdf

Nội dung text: Đề tài Xây dựng phần mềm nhận dạng ký tự quang học sử dụng mã nguồn mở Tesseract Oc

  1. TẬP ĐOÀN ĐIỆN LỰC VIỆT NAM TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO ĐỒ ÁN THỰC TẬP TỐT NGHIỆP XÂY DỰNG PHẦN MỀM NHẬN DẠNG KÝ TỰ QUANG HỌC SỬ DỤNG MÃ NGUỒN MỞ TESSERACT OCR Giảng viên hướng dẫn: TS. NGUYỄN THỊ THANH TÂN Sinh viên thực hiện: NGUYỄN ĐÌNH NGỌC Ngành: CÔNG NGHỆ THÔNG TIN Chuyên ngành: CÔNG NGHỆ PHẦN MỀM Lớp: D6 - CNTT Khóa: 2011 – 2016 Hà Nội, tháng 10 năm 2015.
  2. LỜI MỞ ĐẦU Hiện nay, nhu cầu về việc rút trích từ ngữ từ hình ảnh đang ngày càng phát triển, bên cạnh sự gia tăng về nhu cầu là sự phát triển của công nghệ nhận dạng ký tự quang học (Optical Character Recognition) hay còn được gọi tắt là OCR. Đây là một công nghệ giúp chuyển đổi hình ảnh của chữ viết tay hoặc đánh máy thành các ký tự đã được mã hóa trong máy tính. Giả sử chúng ta cần chỉnh sửa một số tài liệu giấy như: Các bài viết trên tạp chí, tờ rơi, hoặc một tập tin PDF hình ảnh. Rõ ràng, chúng ta không thể sử dụng một máy quét để chuyển các tài liệu này thành tập tin văn bản để có thể chỉnh sửa (ví dụ như trình soạn thảo Microsoft Word). Tất cả những gì máy quét có thể làm là tạo ra một hình ảnh hoặc một bản chụp của các tài liệu. Để giải nén và sử dụng lại dữ liệu từ tài liệu được quét, hình ảnh máy ảnh hoặc hình ảnh của các tập tin PDF, chúng ta cần một phần mềm OCR. Nó sẽ xuất ra kí tự trên hình ảnh, ghép chúng thành từ và sau đó ghép các từ thành câu. Nhờ vậy, chúng ta có thể truy cập và chỉnh sửa nội dung của tài liệu gốc. Tương tự, những tài liệu cổ đang bị hư hại theo thời gian và việc viết tay hay đánh máy lại những tài liệu này sẽ tốn rất nhiều chi phí, thời gian và không đảm bảo được độ chính xác cũng như là sự an toàn cho tài liệu nền. Việc này rất cần một công nghệ lấy từ ngữ từ hình ảnh chụp. Bài báo cáo nhằm mục đích tìm hiểu, chỉnh sửa công cụ Tesseract để thực hiện việc rút trích các văn bản từ tập tin hình ảnh.
  3. Tên đề tài: “Xây dựng phần mềm nhận dạng ký tự quang học sử dụng mã nguồn mở Tesseract Ocr”. CẤU TRÚC ĐỀ TÀI Chương 1: Tổng quan về đề tài Quy trình chung của một hệ thống nhận dạng chữ Bài toán nhận dạng văn bản tiếng Việt Việt Phạm vị nghiên cứu và phạm vi ứng dụng Đối tượng sử dụng Yêu cầu phần cứng, phần mềm Yêu cầu giao diện và chức năng Chương 2: Tìm hiểu hệ thống mã nguồn mở Tesseract OCR Giới thiệu về bộ nhận dạng ký tự quang học Tesseract OCR Thư viện Opencv Tiến trình nhận dạng sử dụng Tesseract OCR Đánh giá độ chính xác nhận dạng Tesseract OCR Công cụ và ngôn ngữ sử dụng Chương 3: Xây dựng chương trình nhận dạng văn bản tiếng Việt sử dụng thư viện Tesseract OCR Phân tích hệ thống Thiết kế hệ thống Thiết kế cơ sở dữ liệu Demo giao diện chương trình Một số thử nghiệm Cách sử dụng chương trình Kết luận: Kết quả đạt được và phương hướng phát triển.
  4. LỜI CẢM ƠN Em xin gửi đến Thầy cô ở Khoa Công nghệ thông tin – Trường Đại học Điện Lực lời biết ơn sâu sắc nhất, những người đã cùng với tri thức và tâm huyết của mình để truyền đạt vốn kiến thức quý báu cho em trong thời gian học tập tại trường. Em xin chân thành cám ơn TS. Nguyễn Thị Thanh Tân đã tận tâm hướng dẫn em qua những buổi trao đổi. Trong thời gian được học tập và thực hành dưới sự hướng dẫn của thầy và anh, em đã thu được rất nhiều kiến thức bổ ích. Nếu không có những lời hướng dẫn, dạy bảo của thầy cô thì em nghĩ đồ án này của em rất khó có thể hoàn thành được. Xin gửi lời cảm ơn chân thành đến gia đình, bè bạn, đã luôn là nguồn động viên to lớn, giúp em vượt qua những khó khăn trong suốt quá trình học tập và thực hiện đồ án. Mặc dù đã rất cố gắng hoàn thiện đồ án với tất cả sự nỗ lực, tuy nhiên, do bước đầu đi vào thực tế, tìm hiểu và xây dựng đồ án trong thời gian có hạn, và kiến thức còn hạn chế, nhiều bỡ ngỡ, nên đồ án “Xây dựng phần mềm nhận dạng ký tự quang học sử dụng mã nguồn mở tesseract OCR” chắc chắn sẽ không thể tránh khỏi những thiếu sót. Em rất mong nhận được sự quan tâm, thông cảm và những đóng góp quý báu của các thầy cô và các bạn để đồ án này ngày càng hoàn thiện hơn. Một lần nữa, em xin chân thành cám ơn và luôn mong nhận được sự đóng góp của mọi người. Sau cùng, em xin kính chúc các thầy cô trong Khoa Công nghệ thông tin dồi dào sức khỏe, niềm tin để tiếp tục thực hiện sứ mệnh cao đẹp của mình là truyền đạt kiến thức cho thế hệ mai sau. Trân trọng! Hà Nội, ngày 06 tháng 10 năm 2015 Sinh viên thực hiện Nguyễn Đình Ngọc
  5. MỤC LỤC DANH MỤC HÌNH ẢNH DANH MỤC BẢNG BIỂU DANH MỤC KÝ HIỆU KÝ HIỆU NHỮNG CỤM TỪ VIẾT TẮT CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 1 1.1 Quy trình chung của một hệ thống nhận dạng chữ 1 1.2 Bài toán nhận dạng văn bản tiếng Việt Việt 2 1.3 Phạm vi nghiên cứu và phạm vi ứng dụng 2 1.4 Đối tượng sử dụng 2 1.5 Yêu cầu phần cứng, phần mềm 2 1.6 Yêu cầu giao diện và chức năng 2 CHƯƠNG 2 TÌM HIỂU HỆ THỐNG MÃ NGUỒN MỞ TESSERACT OCR 3 2.1 Giới thiệu về bộ nhận dạng ký tự quang học Tesseract 3 2.1.1 Lịch sử 3 2.1.2 Kiến trúc hoạt động 5 2.1.3 Huấn luyện dữ liệu trên tesseract 6 2.1.4 Quá trình huấn luyện ngôn ngữ và font mới 7 2.2 Thư viện Opencv 10 2.2.1 Giới thiệu về thư viện Opencv 10 2.2.2 Phiên bản opencv 1 và opencv 2 10 2.2.3 Cách tổ chức Opencv 14 2.3 Tiến trình nhận dạng sử dụng Tesseract OCR 15 2.3.1 Xác định dòng 15 2.3.2 Thiết lập dòng cơ sở 15 2.3.3 Cắt nhỏ từ 15 2.3.4 Nhận dạng khoảng cách giữa chữ hoặc số 15 2.3.5 Nhận dạng từ 16
  6. 2.4 Đánh giá độ chính xác nhận dạng Tesseract OCR 16 2.5 Công cụ và ngôn ngữ sử dụng 17 2.5.1 Công cụ 17 2.5.2 Ngôn ngữ 17 CHƯƠNG 3 XÂY DỰNG CHƯƠNG TRÌNH NHẬN DẠNG VĂN BẢN TIẾNG VIỆT SỬ DỤNG THƯ VIỆN TESSERACT OCR 18 3.1 Phân tích hệ thống 18 3.1.1 Kiến trúc tổng thể của chương trình 18 3.1.2 Các chức năng của hệ thống 19 3.1.3 Biểu đồ use case 20 3.1.4 Biểu đồ trạng thái 22 3.2 Thiết kế hệ thống 24 3.2.1 Biểu đồ hoạt động 24 3.2.2 Biểu đồ trình tự 27 3.3 Thiết kế cơ sở dữ liệu 29 3.3.1 Cơ sở dữ liệu logic 29 3.3.2 Cơ sở dữ liệu vật lý 29 3.4 Demo giao diện chương trình 30 3.5 Một số thử nghiệm 31 3.5.1 Hình chữ viết tay 31 3.5.2 Hình chữ đánh máy 32 3.5.3 Hình ảnh tập tin ảnh có chữ tiếng việt 32 3.6 Cách sử dụng chương trình 33 KẾT LUẬN 34 TÀI LIỆU THAM KHẢO 35
  7. DANH MỤC HÌNH ẢNH Hình 2.1 Ví dụ về một đường cơ sở dạng cong 15 Hình 2.2 Ví dụ về cắt các ký tự bị dính 15 Hình 2.3 Quá trình nhận dạng từ 16 Hình 3.1 Biểu đồ kiến trúc tổng thể của quá trình nhận dạng văn bản 18 Hình 3.2 Biểu đồ Use case tổng quát 20 Hình 3.3 Biểu đồ trạng thái chọn ảnh 22 Hình 3.4 Biểu đồ trạng thái xử lý ảnh 23 Hình 3.5 Biểu đồ hoạt động xác định dòng 24 Hình 3.6 Biểu đồ hoạt động cắt nhỏ từ 25 Hình 3.7 Biểu đồ hoạt động nhận dạng từ 26 Hình 3.8 Biểu đồ trình tự chọn ảnh 27 Hình 3.9 Biểu đồ trình tự lưu kết quả 28 Hình 3.10 Bảng tài khoản người dùng 29 Hình 3.11 Bảng kết quả sau 30 Hình 3.12 Giao diện hệ thống 30 Hình 3.13 Giao diện convert 31 Hình 3.16 Một ví dụ về hình chứa chữ viết tay 31 Hình 3.17 Một ví dụ về hình chứa chữ đánh máy 32 Hình 3.18 Một ví dụ về hình dạng chữ tiếng việt 32
  8. DANH MỤC BẢNG BIỂU Bảng 2.1 So sánh phần mềm thương mại và Tesseract 4 Bảng 2.2 Độ chính xác của Tesseract trên một số ngôn ngữ 4 Bảng 3.1 Các chức năng chính của hệ thống 19 Bảng 3.2 Mô tả các use case 20 Bảng 3.3 Thực thể tài khoản 29 Bảng 3.4 Thực thể Kết quả 29 LIỆT KÊ CHỮ VIẾT TẮT Từ viết tắt Tên tiếng Anh Tên tiếng Việt OCR Optical Character Nhận dạng ký tự bằng quang học. Recognition OPENCV Open Source Computer Một thư viện mã nguồn mở phục vụ cho việc Vision nghiên cứu hay phát triển về thị giác máy tính. ML Machine learning Một lĩnh vực của trí tuệ nhân tạo liên quan đến việc nghiên cứu và xây dựng các kĩ thuật cho phép các hệ thống "học" tự động từ dữ liệu để giải quyết những vấn đề cụ thể
  9. DANH MỤC KÝ HIỆU PHẦN TỬ KÝ HIỆU Ý NGHĨA Biểu đồ USE CASE Một người / nhóm người hoặc một Tác nhân (Actor) thiết bị hoặc hệ thống tác động hoặc thao tác đến chương trình. Use-case Biểu diễn một chức năng xác định của hệ thống Use case này sử dụng lại chức năng Mối quan hệ giữa các của use case kia use case Use case này kế thừa các chức năng từ use case kia Biểu đồ HOẠT ĐỘNG Mô tả hoạt động gồm tên hoạt động và Hoạt động đặc tả của nó Trạng thái khởi đầu Bắt đầu trạng thái hoặc hoạt động Trạng thái kết thúc Kết thúc trạng thái hoặc hoạt động Quyết định Mô tả một lựa chọn điều kiện Mô hình hóa các thông tin lưu trữ lâu Entity class dài trong hệ thống, nó thường độc lập với các đối tượng khác ở xung quanh Là một phương thức của một lớp mà Procedure đối tượng lớp 2 gọi thực hiện
  10. CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 1.1 Quy trình chung của một hệ thống nhận dạng chữ Có nhiều phương pháp để tạo ra một phần mềm dạng OCR, độ chính xác của các phương pháp này phụ thuộc vào công nghệ tạo nên phần mềm. Các phương pháp này đạt được độ tin cậy trong các hình ảnh có chất lượng tốt và vừa. Độ chính xác của việc rút trích văn bản là điều quan trọng nhất. Nhóm tác giả Kirill Safronov cho rằng một số sai sót trong quá trình chuyển đổi thường không quá quan trọng trừ các trường hợp như rút trích số serial từ ảnh chụp, Để khắc phục tình trạng kết quả xuất ra không chính xác của công nghệ OCR, nhiều công nghệ khác đã ra đời, tác giả A. Vinutha M H đã ứng dụng định hướng robot (Optical Character Recognition Based Auto Navigation of Robot). Việc định hướng của robot dựa vào bảng tính hiệu như là một cột mốc đánh dấu đường đi tiếp theo của robot. Định hướng tự động của các robot trong một vùng lớn đòi hỏi nhiều bảng tín hiệu khác nhau với mô hình nhận dạng duy nhất. Ngoài ra, hệ thống này còn cho phép nhận diện vị trí tên riêng. Bên cạnh việc cải thiện độ chính xác, cần có sự thay đổi kích thước của thiết bị nhận dạng, tác giả Ali Ahmadi đã đề cập trong nghiên cứu của mình, tốc độ xử lý và độ chính xác cao là yêu cầu lớn hiện nay của các thiết bị nhận dạng ký tự dạng nhỏ, ví dụ như bút biết nhận dạng. Nhưng dù có nhiều mặt hàng loại này được chào bán trên thị trường nhưng nó vẫn không đáp ứng nhu cầu sử dụng và kích thước thiết bị. Ngoài sự đa dạng trong cách thức nhận dạng, OCR còn đa dạng về cách dùng, nó được chia thành hai cách, dùng online và dùng offline, có nhận xét về hai cách dùng này như sau: (1) Nhận dạng offline: nhận dạng các văn bản in ra giấy hoặc các bản viết tay và nó đòi hỏi quá trình scan trên mặt giấy hoặc mặt vật liệu có chữ. Cách này thường đòi hỏi con người phải thực hiện một số thao tác như phân loại, lưu trữ và chỉnh sửa văn bản trước khi scan. (2) Nhận dạng online: thường chỉ được dùng cho nhận dạng chữ viết tay được lưu trữ ở dạng kỹ thuật số, thông thường để scan dạng này chúng ta thường dùng một loại bút đặc biệt nhưng do sự thành công của các nghiên cứu gần đây mà giờ đã có các thiết bị khác thay thế. Việc nhận dạng online nhằm giúp con người giao tiếp với máy tính tốt hơn bằng cách viết tay thay vì gõ phím. Trong bài báo này, chúng ta sẽ tìm hiểu về một công cụ OCR điển hình và là một trong những nền tảng quan trọng, đó là Tesseract. 1
  11. 1.2 Bài toán nhận dạng văn bản tiếng Việt Việt Rút trích văn bản từ tập tin hình ảnh đang là một trong những bài toán quan trọng trong xử lý ảnh hiện nay. Trong bài báo này, tôi bước đầu tìm hiểu các phương pháp trích lọc văn bản từ hình ảnh của một số công trình liên quan đồng thời cũng tìm hiểu, hiệu chỉnh công cụ mã nguồn mở Tesseract để thực hiện trích lọc văn bản tiếng Anh từ tập tin hình ảnh. Kết quả thử nghiệm bước đầu cho thấy công cụ này rút trích khá tốt các văn bản từ tập tin hình ảnh chứa văn bản được đánh máy. 1.3 Phạm vi nghiên cứu và phạm vi ứng dụng Phạm vi nghiên cứu: Tự nghiên cứu Phạm vi ứng dụng: Trong nhận dạng 1.4 Đối tượng sử dụng Tất cả mọi người. 1.5 Yêu cầu phần cứng, phần mềm Phần cứng: Window Phần mềm: Microsoft Visual Studio 2010 1.6 Yêu cầu giao diện và chức năng Về giao diện có các giao diện chính sau: o Giao diện menu o Giao diện chọn ảnh đầu vào o Giao diện ảnh đầu ra o Giao diện lưu kết quả Các chức năng cần thiết trong từng giao diện o Chức năng chọn ảnh đầu vào o Chức năng xử lý ảnh đầu vào o Chức năng lưu kết quả xử lý o Chức năng thoát chương trình 2
  12. CHƯƠNG 2 TÌM HIỂU HỆ THỐNG MÃ NGUỒN MỞ TESSERACT OCR 2.1 Giới thiệu về bộ nhận dạng ký tự quang học Tesseract Nhận dạng ký tự quang học (tên tiếng anh là Optical Character Recognition – OCR) là kỹ thuật được sử dụng để chuyển đổi ảnh văn bản sang dạng văn bản có thể chỉnh sửa trong máy tính. Đầu vào của quá trình này là tập tin hình ảnh và đầu ra sẽ là các tập tin văn bản chứa nội dung là các chữ viết, ký hiệu có trong hình ảnh đó. 2.1.1 Lịch sử Tesseract là một phần mềm mã nguồn mở và ban đầu nó được nghiên cứu và phát triển tại hãng Hewlett Packet (HP) trong khoảng từ năm 1984 đến 1994. Vào năm 1995, Tesseract nằm trong nhóm ba bộ nhận dạng OCR đứng đầu về độ chính xác khi tham gia trong hội nghị thường niên của tổ chức UNLV. Lúc mới khởi động thì Tesseract là một dự án nghiên cứu tiến sĩ tại phòng thí nghiệm HP ở Bristol và đã được tích hợp vào trong các dòng máy quét dạng phẳng của hãng dưới dạng các add-on phần cứng hoặc phần mềm. Nhưng thực tế dự án này đã thất bại ngay từ trong trứng nước vì nó chỉ làm việc hiệu quả trên các tài liệu in có chất lượng tốt. Sau đó, dự án này cùng với sự cộng tác của bộ phận máy quét HP ở bang Colorado đã đạt được một bước tiến quan trọng về độ chuẩn xác khi nhận dạng và vượt lên nhiều bộ nhận dạng OCR thời đó nhưng dự án đã không thể trở thành sản phẩm hoàn chỉnh vì độ cồng kềnh và phức tạp. Sau đó, dự án được đưa về phòng thí nghiệm của HP để nghiên cứu về cách thức nén và tối ưu mã nguồn. Dự án tập trung cải thiện hiệu năng làm việc của Tesseract dựa trên độ chính xác đã có. Dự án này được hoàn tất vào cuối năm 1994 và sau đó vào năm 1995 bộ Tesseract được gửi đi tham dự hội nghị UNLV thường niên về độ chính xác của OCR, vượt trội hơn hẳn so với các phần mềm OCR lúc bấy giờ. Tuy nhiên, Tesseract đã không thể trở thành một sản phẩm thương mại hoàn chỉnh được và vào năm 2005, HP đã chuyển Tesseract sang mã nguồn mở và được hãng Google tài trợ. Tesseract cho đến nay vẫn được nhiều nhà phát triển cộng tác và tiếp tục hoàn thiện. Phiên bản mới nhất của bộ nhận dạng Tesseract là phiên bản 3.0.1. 3
  13. Phần mềm thương mại Bộ nhận dạng Tesseract Hỗ trợ hơn 100 ngôn ngữ Hỗ trợ trên 40 ngôn ngữ và đang tăng dần Có giao diện đồ họa Không hỗ trợ giao diện đồ họa (dùng Command Line để gõ lệnh) Hầu hết chỉ hỗ trợ trên nền tảng Hỗ trợ trên Windows, Linux, Mac OS Windows Độ chính xác cao mới đây Độ chính xác cao từ năm 1995 Chi phí khá cao 130$ - 500 $ Hoàn toàn miễn phí (mã nguồn mở) Bảng 2.1 So sánh phần mềm thương mại và Tesseract Vì Tesseract hiện nay là bộ thư viện mã nguồn mở hoàn toàn miễn phí nên trên thế giới đã có nhiều phần mềm nhận dạng ký tự quang học ra đời dựa trên bộ Tesseract với giao diện và các tính năng dễ sử dụng hơn so với giao diện đơn giản của Tesseract ban đầu như: VietOCR cho nhận dạng tiếng Việt, Tessenet2 bộ nhận diện Tesseract trên nền .Net của Microsoft, giao diện Java (Java GUI frontend) cho Tesseract Ngôn ngữ Tổng số ký tự Tổng số từ Lỗi ký tự Lỗi từ (%) (triệu) (triệu) (%) Tiếng Anh 39 4 0.5 3.72 Tiếng Nga 213 26 0.75 5.78 Tiếng Hoa giản 0.25 không xác 3.77 không xác thể định định Tiếng Hindi 1.4 0.33 15.41 69.44 Bảng 2.2 Độ chính xác của Tesseract trên một số ngôn ngữ 4
  14. 2.1.2 Kiến trúc hoạt động Đầu tiên, bộ nhận diện Tesseract sẽ nhận đầu vào là ảnh màu hoặc ảnh mức xám. Ảnh này sẽ được chuyển đến bộ phận phân tích ngưỡng thích ứng (adaptive thresholding) để cho ra ảnh nhị phân. Vì trước kia HP cũng đã phát triển bộ phận phân tích bố cục trang nên Tesseract không cần phải có thành phần đó và được thừa hưởng từ HP. Vì thế mà Tesseract nhận đầu vào là một ảnh nhị phân với các vùng đa giác tùy chọn đã được xác định. Ban đầu, Tesseract được thiết kế làm việc trên ảnh nhị phân sau đó chương trình được cải tiến để có thể nhận dạng cả ảnh màu và ảnh mức xám. Chính vì thế mà cần bộ phận phân tích ngưỡng thích ứng để chuyển đổi ảnh màu / ảnh mức xám sang ảnh nhị phân. Sau đó quá trình nhận dạng sẽ được thực hiện tuần tự theo từng bước. Bước đầu tiên là phân tích các thành phần liên thông. Kết quả của bước này sẽ là tạo ra các đường bao quanh các ký tự. Bước thứ hai là tìm hàng và tìm từ, kết quả của bước này cũng giống như bước trên sẽ tạo ra các vùng bao quanh các hàng chữ và ký tự chứa trong vùng văn bản. Bước tiếp theo sẽ là nhận dạng từ. Công đoạn nhận dạng từ sẽ được xử lý qua 2 giai đoạn. Giai đoạn đầu sẽ là nhận dạng các từ theo lượt. Các từ thỏa yêu cầu trong giai đoạn này sẽ được chuyển sang bộ phân loại thích ứng (adaptive classifier) để làm dữ liệu huấn luyện. Chính nhờ đó mà bộ phân loại thích ứng sẽ có khả năng nhận diện được chính xác hơn ở phần sau của trang. Sau khi bộ phân loại thích ứng đã học được các thông tin có ích từ giai đoạn đầu khi nhận dạng phần trên của trang thì giai đoạn thứ 2 của việc nhận dạng sẽ được thực hiện. Giai đoạn này sẽ quét hết toàn bộ trang, các từ không được nhận diện chính xác ở giai đoạn đầu sẽ được nhận diện lại lần nữa. Cuối cùng bộ nhận diện sẽ tổng hợp lại các thông tin ở trên và cho ra kết quả nhận diện hoàn chỉnh. 5
  15. 2.1.3 Huấn luyện dữ liệu trên tesseract Tesseract ban đầu được thiết kế để nhận dạng các từ tiếng Anh trên ngôn ngữ hệ Latinh. Sau này, nhờ sự cố gắng của nhiều nhà phát triển mà các phiên bản của Tesseract đã có thể nhận diện các ngôn ngữ khác ngoài hệ Latinh như tiếng Trung, tiếng Nhật và tương thích với các ký tự trong bảng mã UTF-8. Việc nhận dạng các ngôn ngữ mới trên Tesseract có thể thực hiện được nhờ vào việc huấn luyện dữ liệu. Từ phiên bản 3.0 trở đi, Tesseract đã có thể hỗ trợ thêm nhiều dạng ngôn ngữ mới và mở rộng thêm việc huấn luyện theo font chữ. Bởi vì ban đầu, bộ Tesseract được huấn luyện để nhận diện từ chính xác nhất trên một số loại font mặc định, nếu sử dụng các font chữ khác để nhận diện thì có thể kết quả sẽ không có độ chính xác cao khi làm việc với các loại font được cài đặt sẵn trong dữ liệu huấn luyện. Để thực hiện quá trình huấn luyện thì ta phải sử dụng công cụ có sẵn của Tesseract. Mặc định trong luận văn này, sử dụng công cụ Tesseract 3.01 cho việc thực hiện huấn luyện ngôn ngữ và font mới. Để huấn luyện dữ liệu trên Tesseract (hoặc ngôn ngữ mới) thì ta cần một tập các tập tin dữ liệu chứa trong thư mục tessdata, sau đó kết hợp các tập tin này thành tập tin duy nhất. Các tập tin có trong thư mục tessdata có quy tắc đặt tên theo dạng: tên_ngôn_ngữ.tên_tập tin. Ví dụ các tập tin cần thiết khi thực hiện việc huấn luyện tiếng Anh: tessdata/eng.config. tessdata/eng.unicharset: Tập ký tự của ngôn ngữ huấn luyện. tessdata/eng.unicharambigs. tessdata/eng.inttemp: Danh mục cho tập hợp các ký tự. tessdata/eng.pffmtable: Tập tin dạng hộp – sử dụng để xác định ký tự có trong tập tin huấn luyện. tessdata/eng.normproto: Như tập tin pffmtable. tessdata/eng.punc-dawg. tessdata/eng.number-dawg. tessdata/eng.freq-dawg: Danh sách các từ tổng quát. 6
  16. tessdata/eng.word-dawg: Danh sách các từ thông thường. tessdata/eng.user-word: Danh sách từ của người dùng (tùy chọn có thể có hoặc không). Bước cuối cùng sẽ tổng hợp dữ liệu từ bước trên và phát sinh ra tập tin dữ liệu duy nhất có dạng: tessdata/eng.traineddata. Các tập tin cần thiết cho việc huấn luyện dữ liệu sẽ được phát sinh khi ta sử dụng công cụ có sẵn để qua quá trình huấn luyện. Tổng hợp lại ta có: 1. Sinh hình ảnh huấn luyện 2.Tạo các tập tin *.box 3.Bắt đầu chạy huấn luyện Tesseract 4.Clustering (tập hợp lại) 5.Thêm dữ liệu từ điển (tùy biến) 6.Tổ hợp kết quả lại với nhau: Trong việc ứng dụng Tesseract enginer cho nhận dạng ký hiệu toán học, thực chất các vấn đề khó khăn nhất nằm ở khâu huấn luyện hơn là các vấn đề về lập trình và tích hợp phần mềm. 2.1.4 Quá trình huấn luyện ngôn ngữ và font mới Để trải qua quá trình huấn luyện ngôn ngữ hoặc loại font mới trên Tesseract ta cần thực hiện thông qua các giai đoạn sau:  Phát sinh các tập tin hình ảnh cho việc huấn luyện: Đây là bước đầu tiên nhầm xác định tập ký tự sẽ được sử dụng trong việc huấn luyện. Trước hết ta cần chuẩn bị sẵn một tập tin văn bản chứa các dữ liệu huấn luyện (trường hợp cụ thể là một đoạn văn bản). Việc tạo ra tập tin huấn luyện cần theo các quy tắc sau: 7
  17. Bảo đảm số lần xuất hiện ít nhất của các ký tự trong mẫu từ khoảng 5 đến 10 lần cho một ký tự. Nên có nhiều mẫu cho các từ xuất hiện thường xuyên, ít nhất là 20 lần. Các dữ liệu huấn luyện nên được chia theo kiểu font, mỗi tập tin huấn luyện chỉ nên chứa 1 loại font nhưng có thế huấn luyện nhiều loại font cho nhiều tập tin. Không nên kết hợp nhiều loại font trong riêng một tập tin huấn luyện. Sau khi đã chuẩn bị mẫu văn bản dùng cho việc huấn luyện thì ta cần phát sinh ra ảnh từ tập tin đó. Dùng các phần mềm để chuyển tập tin mẫu văn bản sang dạng tập tin ảnh hoặc in mẫu văn bản sau đó quét thành tập tin hình ảnh dạng .tif với độ phân giải là 300dpi. Tập tin cuối cùng trước khi thực hiện việc huấn luyện là tập tin ảnh dạng .tif.  Tạo các tập tin dạng hộp .box: Một dạng tập tin để Tesseract có thể huấn luyện dựa trên các dữ liệu hình ảnh đã có bước đầu là tập tin dạng hộp – box. Tập tin dạng hộp là tập tin văn bản chứa 1 dãy các ký tự tuần tự từ đầu đến cuối trong tập tin hình ảnh, mỗi hàng chứa thông tin của 1 ký tự, tọa độ và đường bao quanh ký tự đó trong tập tin ảnh. Để tạo ra tập tin dạng hộp ta sẽ dùng cách gõ lệnh (trên Windows là CMD và Linux là Terminal) sau (yêu cầu người dùng phải cài đặt công cụ Tesseract để có thể chạy được các lệnh này): Sau khi thực hiện câu lệnh trên thì ta sẽ tạo ra được các tập tin dạng hộp .box. Chạy công cụ Tesseract trên máy tính để thực hiện việc huấn luyện dữ liệu. Sau khi được tập tin .box thì chúng ta cần 1 trình chỉnh sửa tập tin dạng hộp để kiểm tra lại và chỉnh sửa lại các thông số của từng ký tự cho khớp với văn bản ban đầu trong tập tin ảnh huấn luyện. Ở đây nhóm em dùng phần mềm jTextBoxEditor để chỉnh sửa trực tiếp tập tin dạng hộp. Sau khi kiểm tra và chỉnh sửa lại các ký tự cho chính xác trong tập tin dạng hộp thì thực hiện lệnh tiếp theo: Nếu thành công thì tại giai đoạn này, Tesseract sẽ phát sinh ra tập tin .tr 8
  18.  Ước lượng tập ký tự của ngôn ngữ cần huấn luyện: Tesseract cần biết hết các tập ký tự có thể xuất hiện trong dữ liệu. Ta dùng lệnh sau: Sau khi thực hiện, tập tin unicharset sẽ được tạo ra.  Xác định kiểu font trong dữ liệu (từ phiên bản 3.0.1 trở đi): Đây là tính năng mới chỉ có từ phiên bản Tesseract 3.0.1 trở đi. Với tính năng này người dùng có thể huấn luyện dữ liệu với nhiều loại font khác nhau thay vì chỉ có thể dùng các font mặc định sẵn ở các phiên bản trước. Ta cần tạo tập tin font_properties để quy định thông số các kiểu font ta đã sử dụng trong các mẫu văn bản huấn luyện. Cấu trúc của tập tin font_properties là mỗi hàng chứa tên 1 loại font huấn luyện và các đặc tính của font đó: (đánh dấu có thuộc tính bằng bit 1 hoặc không có dùng bit 0). Ví dụ cấu trúc tập tin font_properties với dữ liệu huấn luyện là tiếng Anh:  Gom nhóm dữ liệu: Tại giai đoạn này thì các đường nét khung của ký tự đã được rút trích ra và chúng ta cần gom nhóm lại các dữ liệu ban đầu để tạo ra mẫu thử (prototype). Hình dạng, đường nét của các ký tự sẽ được gom nhóm lại nhờ vào chương trình mftraining và cntraining có sẵn trong công cụ Tesseract: Với lệnh mftraining sẽ tạo ra tập tin dữ liệu: inttemp (chứa hình dạng mẫu), pffmtable và Microfeat nhưng ít khi sử dụng). Cuối cùng dùng công cụ cntraining sẽ tạo ra tập tin dữ liệu normproto.  Tạo tập tin unicharambigs.  Kết hợp các tập tin lại tạo thành tập tin huấn luyện dữ liệu: Cuối cùng sau khi đã có đủ các tập tin huấn luyện cần thiết (inttemp, pffmtable, normproto, Microfeat) thì ta đổi tên các tập tin lại cho đúng dạng với tiền tố lang. trước tên tập tin với lang là 3 ký tự đại diện cho ngôn ngữ huấn luyện theo chuẩn ISO 639- 2 9
  19. Kết quả là tạo ra tập tin lang.trainedata. Bỏ tập tin này vào thưc mục tessdata của Tesseract thì Tesseract đã có thể nhận diện được ngôn ngữ hoặc font chữ mới (theo lý thuyết). 2.2 Thư viện Opencv 2.2.1 Giới thiệu về thư viện Opencv OpenCV (Open Source Computer Vision) là một thư viện mã nguồn mở về thị giác máy với hơn 500 hàm và hơn 2500 các thuật toán đã được tối ưu về xử lý ảnh, và các vấn đề liên quan tới thị giác máy. OpenCV được thiết kế một cách tối ưu, sử dụng tối đa sứcmạnh của các dòng chip đa l.i để thực hiện các phép tính toán trong thời gian thực, nghĩa là tốc độ đáp ứng của nó có thể đủ nhanh cho các ứng dụng thông thường. OpenCV là thư viện được thiết kế để chạy trên nhiều nền tảng khác nhau (cross-patform), nghĩa là nó có thể chạy trên hệ điều hành Window, Linux, Mac, iOS Việc sử dụng thư viện OpenCV tuân theo các quy định về sử dụng phần mềm m. nguồn mở BSD do đó bạn có thể sử dụng thư viện này một cách miễn phí cho cả mục đích phi thương mại lẫn thương mại. Dự án về OpenCV được khởi động từ những năm 1999, đến năm 2000 nó được giới thiệu trong một hội nghị của IEEE về các vấn đề trong thị giác máy và nhận dạng, tuy nhiên bản OpenCV 1.0 mãi tới tận năm 2006 mới chính thức được công bố và năm 2008 bản 1.1 (pre-release) mới được ra đời. Tháng 10 năm 2009, bản OpenCV thế hệ thứ hai ra đời (thường gọi là phiên bản 2.x), phiên bản này có giao diện của C++ (khác với phiên bản trước có giao diện của C) và có khá nhiều điểm khác biệt so với phiện bản thứ nhất. Thư viện OpenCV ban đầu được sự hỗ trợ từ Intel, sau đó được hỗ trợ bở Willow Garage, một phòng thí nghiệm chuyên nghiên cứu về công nghệ robot. Cho đến nay, OpenCV vẫn là thư viện mở, được phát triển bởi nguồn quỹ không lợi nhuận (none - profit foundation) và được sự hưởng ứng rất lớn của cộng đồng. 2.2.2 Phiên bản opencv 1 và opencv 2 Cho tới nay, trải qua hơn 6 năm từ lúc phiên bản OpenCV đầu tiên được công bố, đã có lần lượt nhiều phiên bản OpenCV ra đời, tuy nhiên có thể chia thư viện này thành hai bản chính dựa trên những đặc điểm khác biệt lớn nhất của chúng: phiên bản OpenCV thế hệ thứ nhất (hay còn gọi là phiên bản OpenCV 1.x) và phiên bản 10
  20. OpenCV thứ hai (hay còn gọi là phiên bản OpenCV 2.x). Sau đây ta sẽ chỉ ra một số điểm khác biệt cơ bản giữa hai phiên bản này. OpenCV 1.x (bao gồm bản 1.0 và bản pre-release 1.1) dựa trên giao diện C, cấu trúc của một ảnh số dựa trên cấu trúc của IplImage, trong khi thư OpenCV 2.x dựa trên giao diện C++, cấu trúc của ảnh số, ma trận dựa trên cấu trúc của cv::Mat. Trong OpenCV 1.x, người sử dụng phải hoàn toàn quản lý bộ nhớ của các đối tượng, nghĩa là khi một đối tượng mới được tạo ra, ta phải luôn chú . để giải phóng nó khi không còn sử dụng nữa (trong nhiều trường hợp có thể sẽ bị tràn bộ nhớ nếu không chú . đều này), trong khi thư viện OpenCV 2.x việc quản lý bộ nhớ trở nên dễ dàng hơn nhờ các hàm hủy các các lớp đối tượng trong OpenCV 2.x đã thực hiện điều này khi một đối tượng không còn được sử dụng nữa. Việc viết các dòng lệnh để thực hiện cùng một chức năng trong OpenCV 2.x là dễ dàng hơn nhiều so với OpenCV 1.x, một phần là là giao diện C++ có phần dễ hiểu hơn so với C, một phần là các hàm trong OpenCV 2.x đã được tối ưu hóa nhiều bước trung gian không cần thiết về mặt giao diện người sử dụng. Thư viện OpenCV 1.x tuy chứa một lượng lớn hàm xử lý và thuật toán, tuy nhiên nó vẫn ở dạng sơ khai. Thư viện OpenCV 2.x đã được bổ xung khá nhiều hàm, thuật toán và được tối ưu khá nhiều đặc biệt trong các khía cạnh về phát hiện đối tượng (detection), nhận dạng đối tượng (partten regconition) và theo dỗi đối tượng (tracking). Hơn thế nữa, tuy có giao diện là C++ nhưng OpenCV 2.x vẫn dữ một phần giao diện C để tương thích với các phiên bản của OpenCV 1.x Từ một số đặc điểm trên ta có thể thấy rằng thư viện OpenCV phiên bản 2.x là có nhiều điểm nổi trội hơn so với phiên bản 1.x, Tuy nhiên trong một số trường hợp như ở các hệ thống nhúng khi mà trình dịch chỉ đơn thuần chấp nhận ngôn ngữ C thì phiển bản 1.x vẫn còn giá trị. Trong cuốn sách này, các nội dung cài đặt, thuật toán, ứng dụng chỉ dành cho OpenCV phiên bản 2.x trên nền tảng hệ điều hành Window. OpenCV rất đa dạng, nó hỗ trợ rất nhiểu hệ điểu hành như: Window, Linux và MacOSX. 11
  21. Những điểm đặc trưng OpenCV có rất nhiều chức năng. Bạn có thể bất ngờ khi lần đầu tiếp xúc với nó. Tuy nhiên, bạn sẽ chỉ cần một vài lần đầu để khởi động nó Sau đây là những tóm tắt cơ bản về hệ thống các về chức năng của các hàm trong OpenCV Image and Video I/O Những giao diện này sẽ giúp bạn đọc được dự liệu ảnh từ file hoặc trực tiếp từ video. Bạn cũng có thể tạo các file ảnh và video với giao diện này Thị giác máy và các thuật toán xử lý ảnh ( General computer-vision and image-processing algorithms(mid – and low level APIs)) Sử dụng những giao diện này, bạn có thể thực hành với rất nhiều chuẩn thị giác máy mà không cần phải có mã nguồn của chúng. Modul thị giác máy ở cấp độ cao OpenCV gồm một vài tác dụng ở cấp độ cao. Thêm vào nhận dạng mặt, dò tìm, theo dõi. Nó bao gồm luồng thị giác (sử dụng camera di động để xác định cấu trúc 3D), kích cỡ camera và âm thanh nổi. AI and machine-learning Các ứng dụng của thị giác máy thường yêu cầu máy móc phải học (machine learning) hoặc các hình thức trí tuệ nhân tạo khác. Một vài trong số chúng là có sẵn trong gói OpenCV Lấy mẫu ảnh và phép biến đổi Nó thường rất tốt cho quá trình xử lý một nhóm phần tử ảnh như là một đơn vị. OpenCV bao gồm lấy tách ra, lấy mẫu ngẫu nhiên, phục chế, xoay ảnh, làm cong ảnh ( warping), thay đổi hiệu ứng của ảnh. Cách thức tạo và phân tích ảnh nhị phân 12
  22. Ảnh nhị phân thường xuyên được dùng trong các hệ thống kiểm tra có khuyết điểm hình dạng hoặc các bộ phận quan trọng. Sự biểu diễn ảnh cũng rất thuận tiện khi chúng ta biết rõ vật thể cần bắt. Cách thức cho tính toán thông tin 3D (methods for computing 3D information) Những hàm này rất có ích khi cần sắp xếp và xác định với một khối lập thể (with a stereo rig) hoặc với không gian nhìn phưc tạp (multiple views) từ một camera riêng. Các phép toán cho xử lý ảnh, thị giác máy và biểu diễn ảnh( image interpretation) OpenCV sử dụng các phép toán phổ biến như: đại số học, thống kê và tính toán hình học Đồ họa Những giao diện này giúp bạn viết chữ và vẽ trên hình ảnh. Thêm vào đó những chức năng này được sử dụng nhiểu trong ghi nhãn và đánh dấu. Ví dụ nếu bạn viết một chương trình cần nhận dạng nhiểu đối tượng thì nó sẽ rất có ích cho tạo nhãn ảnh ( label image) với kích thước và vị trí. Phương thức GUI OpenCV bao gồm cửa sổ giao diện của chính bản thân nó. Trong khi đó những giao diện này được so sánh giới hạn với khả năng có thể thực hiện trong mỗi môi trường. Chúng cung cấp những môi trường API đa phương tiện và đơn giản để hiện thị hình ảnh, cho phép người dùng nhập dữ liệu thông qua chuột , bàn phím và điều khiển quá trính. Cấu trúc dữ liệu và giải thuật Với những giao diện này bạn có thể giữ lại, tìm kiếm, lưu và cách danh mục điều khiển, các tuyển tập(cũng như các tập hợp lệnh được gọi), đồ họa và sơ đồ nhánh một cách hiệu quả. 13
  23. Khả năng tồn tại lâu dài của dữ liệu (Data persistence) Những phương pháp này cung cấp các giao diện một cách thuận lợi để lưu trữ các dạng khác nhau của dữ liệu vào đĩa để có thể khôi phục khi cần thiết. 2.2.3 Cách tổ chức Opencv Cấu trúc OpenCV gồm nhiều module. CXCORE bao gồm các dạng dữ liệu cơ bản rõ ràng. Ví dụ cấu trúc dự liệu về ảnh, điểm, hình chữ nhật được xác định trong file cxtypes.h. CXCORE chứa các phép toán đại số tuyến tính và thống kê, các hàm lưu trữ lâu dài (persistence fun ) và các lỗi thao tác. Có điều lạ lung thay là các hàm đồ họa được cho việc vẽ ảnh cũng được lưu trữ tại đây. CV chứa đựng quá trình xử lý ảnh và các phương pháp đánh giá sơ bộ kích thước ảnh. Những hàm tính toán hình học cũng được lưu trữ tại đây. CVAUX được mô tả trong văn bản của OpenCV như là modul cũ và chỉ dùng để thí nghiệm. Tuy nhiên, giao diện đơn giản nhất cho nhận dạng mặt được nằm trong modul này. Những mã nguồn nằm trong module này rất phù hợp cho việc nhận dạng mặt và chúng được sử dụng rộng rãi cho mục đích này. ML chứa đựng giao diện machine- learning: Những hàm còn lại được nằm trong HighGUI và CVCAM. Cả hai đều nẳm ở thư mục có tên “otherlibs”, sử dụng chúng rất dễ gặp lỗi. Vì rằng HighGUI chứa các thư viện vào ra cơ bản , bạn sẽ muốn chắc chắn hơn, đừng bỏ sót nó.Nó cũng chứa đựng nhiều cửa sổ đa chức năng. CVCAM là thư viện chứa các hàm truy nhập video thông qua DirectX trên môi trường Window 32 bit. Tuy nhiên, HighGUI cũng có các giao diện video.Trong bài báo này, tôi chỉ xem xét HighGUI. Chúng đơn giản, làm việc trên nhiều môi trường. Nếu bạn sử dụng Window XP hoặc 2000, bạn có thể làm tăng hiểu quả của nó bằng cách chuyển qua giao diện CVCAM, nhưng học OpenCV sẽ đơn giản hơn khi dùng HighGUI. 14
  24. 2.3 Tiến trình nhận dạng sử dụng Tesseract OCR 2.3.1 Xác định dòng Mục đích của bước này là nhận dạng các dòng của các hình ảnh bị nghiêng, giúp giảm sự mất thông tin khi nhận dạng ảnh nghiêng. Các bộ phận quan trọng của quá trình này là lọc dãy màu (còn được gọi là blobs) và xây dựng dòng. Bước này cũng giúp loại bỏ các văn bản có dropcap. 2.3.2 Thiết lập dòng cơ sở Khi dòng văn bản được tìm thấy, các dòng cơ sở được thiết lập chính xác hơn bằng cách sử dụng một đường có tên là spline toàn phương (là dòng mà được kết hợp từ nhiều đoạn). Nó giúp Tesseract xử lý các trang có đường cơ sở là đường cong. Các dòng cơ sở được thiết lập bằng cách phân vùng các blobs thành các nhóm có thể thay thế thích hợp liên tục trong đường cơ sở thẳng ban đầu. Một spline toàn phương được thiết lập cho phân vùng dày đặc nhất, (giả định là đường cơ sở) của một hình có phương ít nhất. Spline có lợi thế là tính toán ổn định, nhược điểm là sự gián đoạn có thể xảy ra khi nhiều phân đoạn spline được yêu cầu. Hình 2.1 Ví dụ về một đường cơ sở dạng cong 2.3.3 Cắt nhỏ từ Tesseract sẽ xác định xem có các ký tự dính với nhau trong một từ hay không. Nếu có nó sẽ cắt nhỏ các ký tự ra thành các ký tự riêng lẻ. Hình 2.2 Ví dụ về cắt các ký tự bị dính 2.3.4 Nhận dạng khoảng cách giữa chữ hoặc số Xác định khoảng cách giữa các số hoặc giữa các chữ là một vấn đề khá phức tạp. Tesseract giải quyết những vấn đề này bằng cách đo khoảng cách trong một phạm vi hạn chế theo chiều dọc giữa dòng cơ sở và dòng trung bình. 15
  25. 2.3.5 Nhận dạng từ Quá trình nhận dạng một từ là quá trình phân tích một từ được chia ra thành các ký tự như thế nào. Hình 2.3 Quá trình nhận dạng từ Khi kết quả xuất ra một từ mà nó không thỏa mãn nhu cầu thì Teseract cố gắng cải thiện kết quả này bằng cách cắt nhỏ các từ có nghĩa không tốt nhất. Nếu việc cắt nhỏ không làm tăng chất lượng từ thì nó sẽ phục hồi lại từ trước đó. 2.4 Đánh giá độ chính xác nhận dạng Tesseract OCR Hình ảnh muốn được OCR cần quét ở độ phân giải từ 200 DPI (dot per inch) trở lên tới 400 trong trắng đen hoặc grayscale. Quét ảnh với độ phân giải cao hơn nữa chưa hẳn sẽ tăng sự chính xác của kết quả nhận dạng. Hiện tại, mức chính xác có thể lên trên 97% cho Tiếng Việt (ảnh chuẩn), và phiên bản tới của Tesseract có thể nâng cao độ nhận dạng hơn nữa. Dầu vậy, độ chính xác thực thụ vẫn còn tùy thuộc rất lớn vào phẩm chất của ảnh quét. Thông số tiêu biểu cho quét ảnh là 300 DPI và 1 bpp (bit per pixel) trắng đen hoặc 8 bpp grayscale dạng không nén (uncompressed) TIFF hay PNG. PNG nhỏ gọn hơn những dạng ảnh khác mà vẫn giữ được chất lượng cao nhờ sử dụng thuật toán lossless data compression; TIFF có lợi điểm ở khả năng chứa nhiều trang ảnh (multi- page) trong một file. 16
  26. Chế độ Screenshot Mode cung cấp độ nhận dạng tốt hơn cho những hình ảnh có độ phân giải thấp, chẳng hạn như ảnh in màn hình, bằng cách rescaling chúng tới 300 DPI. 2.5 Công cụ và ngôn ngữ sử dụng 2.5.1 Công cụ Visual studio 2.5.2 Ngôn ngữ C# 17
  27. CHƯƠNG 3 XÂY DỰNG CHƯƠNG TRÌNH NHẬN DẠNG VĂN BẢN TIẾNG VIỆT SỬ DỤNG THƯ VIỆN TESSERACT OCR 3.1 Phân tích hệ thống Mô hình tổng thể hệ thống xác định người sử dụng của hệ thống và các nhiệm vụ mà họ phải thực hiện với hệ thống: - Người sử dụng (Actor) gồm: Người dùng. - Nhiệm vụ (Use case) gồm: Chọn ảnh, xử lý, Lưu, Thoát 3.1.1 Kiến trúc tổng thể của chương trình Hình 3.1 Biểu đồ kiến trúc tổng thể của quá trình nhận dạng văn bản 18
  28. 3.1.2 Các chức năng của hệ thống Bảng 3.1 Các chức năng chính của hệ thống Chọn ảnh Tác nhân Người dùng Mô tả Người dùng chọn ảnh trong thư viện để load vào chương trình. Sự kiện Nhấn vào chọn ảnh trên menu giao diện Chọn ảnh trong thư viện Nhấn Chọn Kết quả Ảnh đầu vào được load lên Xử lý Tác nhân Người dùng Mô tả Người dùng sau khi chọn ảnh đầu vào xong sẽ nhấn vào ”xử lý” trên menu giao diện Sự kiện Nhấn vào “xử lý” Kết quả Ảnh đầu vào sẽ được hệ thống tiếp nhận và xử lý Thoát game Tác nhân Người dùng Mô tả Người dùng nhấn vào thoát game trong menu giao diện Sự kiện Nhấn vào “Exit” Kết quả Ra khỏi trò chơi Lưu kết quả Tác nhân Người dùng Mô tả Người dùng chọn lưu kết quả sau khi kết quả được trả về Sự kiện Nhấn vào “Lưu kết quả” Kết quả Kết quả được lưu vào cơ sở dữ liệu 19
  29. 3.1.3 Biểu đồ use case Hình 3.2 Biểu đồ Use case tổng quát Mô tả chi tiết các Use Case Bảng 3.2 Mô tả các use case STT TÊN USE CASE Ý NGHĨA/GHI CHÚ Người dùng chương trình 1 Chọn ảnh đầu vào 2 Chọn ảnh Xử lý ảnh đầu vào 3 Xử lý Thoát khỏi chương trình 4 Thoát 20
  30. Bắt đầu xử lý ảnh 5 Bắt đầu xử lý ảnh Lưu kết quả 6 Lưu Đặc tả các Use Case  Đặc tả use case “Chọn ảnh”: o Tóm tắt: Khi người dùng chọn “Chọn ảnh” trên giao diện o Dòng sự kiện: - Người chơi chọn ảnh - Kết thúc use case o Trạng thái của hệ thống khi bắt đầu thực hiện use case - Load vào thư viện để chọn ảnh o Trạng thái của hệ thống sau khi thực hiện use case - Ảnh được chọn xong  Đặc tả use case “Xử lý”: o Tóm tắt: Người dùng chọn vào “Xử lý” trên giao diện. o Dòng sự kiện: - Người dùng chọn xử lý ảnh đầu vào - Hệ thống xử lý - Kết thúc use case o Trạng thái của hệ thống khi bắt đầu thực hiện use case - Hệ thống lấy ảnh người dùng vừa chọn kiểm tra o Trạng thái của hệ thống sau khi thực hiện use case: - Ảnh đã được xử lý  Đặc tả use case “Thoát”: o Tóm tắt: Khi người chơi bấm nút “Thoát” trên giao diện. o Dòng sự kiện: - Người chơi bấm nút Thoát trên giao diện Menu - Kết thúc use case o Trạng thái của hệ thống khi bắt đầu use case: - Khi trò chơi đang trong giao diện Menu o Trạng thái của hệ thống sau khi thực hiện use case: 21
  31. - Thoát chương trình 3.1.4 Biểu đồ trạng thái Hình 3.3 Biểu đồ trạng thái chọn ảnh 22
  32. Hình 3.4 Biểu đồ trạng thái xử lý ảnh 23
  33. 3.2 Thiết kế hệ thống 3.2.1 Biểu đồ hoạt động Hình 3.5 Biểu đồ hoạt động xác định dòng 24
  34. Hình 3.6 Biểu đồ hoạt động cắt nhỏ từ 25
  35. Hình 3.7 Biểu đồ hoạt động nhận dạng từ 26
  36. 3.2.2 Biểu đồ trình tự Hình 3.8 Biểu đồ trình tự chọn ảnh 27
  37. Hình 3.9 Biểu đồ trình tự lưu kết quả 28
  38. 3.3 Thiết kế cơ sở dữ liệu 3.3.1 Cơ sở dữ liệu logic Bảng 3.3 Thực thể tài khoản Thực thể Tài khoản Tên thuộc tính Mô tả Kiểu dữ liệu Kích thước User Tên đăng nhập int Pass Mật khẩu nvarchar 50 Name Tên người dùng nvarchar 50 Bảng 3.4 Thực thể Kết quả Thực thể Kết quả Tên thuộc tính Mô tả Kiểu dữ liệu Kích thước ID Mã kết quả int Input Ảnh đầu vào Image Output Ảnh đầu ra Image Result Kết quả Text 3.3.2 Cơ sở dữ liệu vật lý Hình 3.10 Bảng tài khoản người dùng 29
  39. Hình 3.11 Bảng kết quả sau 3.4 Demo giao diện chương trình Hình 3.12 Giao diện hệ thống 30
  40. Hình 3.13 Giao diện convert 3.5 Một số thử nghiệm Chúng tôi tiến hành thử nghiệm trên ba loại hình ảnh: Hình chụp từ chữ viết tay, hình chụp từ chữ đánh máy và hình từ tập tin pdf. 3.5.1 Hình chữ viết tay Hình 3.14 Một ví dụ về hình chứa chữ viết tay - Kết quả: )<m 31
  41. CHAO - Tỉ lệ sai: 1/5 chiếm 20%. 3.5.2 Hình chữ đánh máy Hình 3.15 Một ví dụ về hình chứa chữ đánh máy - Kết quả: ESTA67 E8767 UNA45G7 PRUEBA5887 - Tỉ lệ sai: 1/33 chiếm 3.03%. 3.5.3 Hình ảnh tập tin ảnh có chữ tiếng việt Hình 3.16 Một ví dụ về hình dạng chữ tiếng việt - Kết quả: 32
  42. Lời NÒI ĐẤU Hiện nay công nghệ hiện đại đã giúp giám tải quá trinh xử lý, lim trữ, trưyền tái hình ánh tái liệu hiện quả. Các công ty thường phát triển hướng đến văn phòng không cần giấy tờ, một số lượng lớn các tài liệu in được số hoá và lim tiũ như hình ánh trong cơ sở dữ liệu. SụỘ phổ biến, tầm quan ìirọng cúá hình ánh tài liệu như nguồn thôngtin gốc. Cùng với đó nhu cầu về việc n'it trích từ ngữ từ hình ánh đang ngày cáng phát triển, bên cạnh sự giá tăng về nhu cầu là sự phát triển của công nghệ nhận dạng ký tự quang học (Opticál Chárácter Recognition) hay còn được gọi tắt là OCR. Đây là một công nghệ giúp chuyển đổi hình ánh cúá chữ viết táỵ hoặc đánh máy thành các ký tự đã được mà hóa trong máy tính. - Tỉ lệ đúng trên 90% so với văn bản gốc. 3.6 Cách sử dụng chương trình Bước 1: Từ giao diện chương trình nhấn chọn “Chọn ảnh” Bước 2: Sau khi load ảnh lên, người dùng nhấn chọn “Xử lý” Bước 3: Nhấn “Lưu kết quả” vào cơ sở dữ liệu nếu bạn muốn Bước 4: Nhấn “Thoát” để thoát khỏi chương trình 33
  43. KẾT LUẬN Kết quả đạt được Về mặt lý thuyết Tìm hiểu và ứng dụng của Tesseract Ocr Về mặt ứng dụng thực tiễn. Hiện nay tại Việt Nam đã có chương trình nhận dạng Tiếng Việt có tên là VnDOCR do Phòng nhận dạng và Công nghệ Tri thức – Viện Công nghệ Thông tin nghiên cứu và phát triển. Bên cạnh đó còn có một dự án OCR Tiếng Việt có tên VietOCR. Dự án này được phát triển dựa trên nền tảng mã nguồn mở tesseract-ocr do Google tài trợ. Tuy nhiên chương trình này vẫn còn trong giai đoạn khởi đầu, tính năng và chất lượng nhận dạng chỉ ở mức trung bình. Đối với các văn bản viết tay thì hầu như không thể nhận dạng được. Vì thời gian triển khai có hạn, và việc tìm hiểu công nghệ mới còn gặp nhiều khó khăn do không có nhiều tài liệu nên không tránh được những sai sót. Em rất mong nhận được sự đóng góp ý kiến và hướng dẫn của thầy cô để đồ án thêm hoàn thiện. Em xin chân thành cảm ơn! 34
  44. TÀI LIỆU THAM KHẢO  Sách [1]. Tesseract OCR Engine – Ray Smith, Google Inc OSCON2007  Website [1]. [2]. 35