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).
44 trang |
Chia sẻ: lecuong1825 | Lượt xem: 6362 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Báo cáo 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, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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.
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.
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.
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
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
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
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
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
Recognition
Nhận dạng ký tự bằng quang học.
OPENCV Open Source Computer
Vision
Một thư viện mã nguồn mở phục vụ cho việc
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ể
DANH MỤC KÝ HIỆU
PHẦN TỬ KÝ HIỆU Ý NGHĨA
Biểu đồ USE CASE
Tác nhân (Actor)
Một người / nhóm người hoặc một
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
Mối quan hệ giữa các
use case
Use case này sử dụng lại chức năng
của use case kia
Use case này kế thừa các chức năng từ
use case kia
Biểu đồ HOẠT ĐỘNG
Hoạt động
Mô tả hoạt động gồm tên hoạt động và
đặ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
Entity class
Mô hình hóa các thông tin lưu trữ lâu
dài trong hệ thống, nó thường độc lập
với các đối tượng khác ở xung quanh
Procedure
Là một phương thức của một lớp mà
đối tượng lớp 2 gọi thực hiện
1
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.
2
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
3
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.