Top Ad unit 728 × 90


Bộ nhận dạng ký tự quang học Tesseract OCR

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 đó.

Cách thứ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.


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.
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.

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:
 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
 Ướ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 đó: <tên loại font><in nghiêng><in đậm><bình thường><in
hoa><fraktur> (đá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
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).


Ví dụ và Video hướng dẫn:



Bộ nhận dạng ký tự quang học Tesseract OCR Reviewed by Jacky on tháng 10 26, 2017 Rating: 5

Không có nhận xét nào:

All Rights Reserved by Cộng Đồng OpenCV © 2017
Edit bởi: Jacky Le | Youtube Channel: JACKY LE

Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Được tạo bởi Blogger.