Vấn đề tập huấn ngôn ngữ

Một phần của tài liệu Xây dựng hệ thống nhận dạng và dịch trên thiết bị di động (Trang 28)

Ứng dụng thực tế cho thấy Tesseract engine rất nhạy cảm tới sự khác biệt trong hình dáng font chữ. Do đó để có thể OCR tốt, Tesseract cũng cần tập huấn cho từng ngôn ngữ với nhiều loại font khác nhau, đặc biệt là các font hay sử dụng. Để nhận dạng một ký tự đã được trích chọn, Tesseract sẽ tìm kiếm trong dữ liệu ngôn ngữ đã tập huấn và đưa ra ký tự tương đồng nhất. Ngoài ra dữ liệu ngôn ngữ huấn luyện còn tham gia việc thay thế một số ký tự lỗi dựa theo ngữ cảnh ngay sau khi nhận dạng. Ví dụ: .c0m = .com, rr=n, l<=k, cl=d. Luận văn trình bày vấn đề tập huấn ngôn ngữ cho Tesseract 3.0x[14].

Tesseract ban đầu chỉ được thiết kế để OCR ngôn ngữ tiếng Anh nhưng nhanh chóng được cải tiến về engine và hệ thống tập huấn để có thể làm việc với các ngôn ngữ khác và các ký tự UTF-8. Với Tesseract 3.01, đã có 38 ngôn ngữ được tập huấn. Tiếng Việt cũng đã có ngôn ngữ được tập huấn với các font cơ bản như Times New Roman, Courier New, Vni-Times...

Để huấn luyện cho một ngôn ngữ, cần tạo ra một số file dữ liệu trong thư mục tessdata, sau đó ghép (móc nối với nhau) các file này thành một file đơn. Tên quy ước thường là languagecode.file_name, language code tuân theo chuẩn ISO 639-3. Tuy nhiên language code có thể là một chuỗi bất kỳ. Ví dụ những file được tạo ra cho ngôn ngữ tiếng Anh (3.00) gồm:

 tessdata/eng.config  tessdata/eng.unicharset  tessdata/eng.unicharambigs  tessdata/eng.inttemp  tessdata/eng.pffmtable  tessdata/eng.normproto  tessdata/eng.punc-dawg  tessdata/eng.word-dawg  tessdata/eng.number-dawg  tessdata/eng.freq-dawg

và cuối cùng được trộn chung thành file tessdata/eng.traineddata. File tessdata/eng.traineddata chỉ đơn giản là ghép các file con ở trên lại với nhau, đồng thời có một table sẽ lưu giữ vị trí làm dấu hiệu nhận biết các file con ấy. Thư viện ccutil/tessdatamanager.h trong source code cung cấp danh sách các tên file hiện tại đã được chấp nhận.

Quy trình tập huấn Tesseract được giới thiệu chi tiết trong trang

http://code.google.com/p/wiki/Training Tesseract, tuy hơi phức tạp nhưng có thể tóm tắt các bước sau (chú ý trước khi tập huấn cài đặt cần Tesseract 3.0x vào máy):

 Tạo ra ảnh tập huấn. Với mỗi trang văn bản mẫu (nội dung văn bản là các ký tự của một ngôn ngữ theo một loại font nhất định), in ra và quét ở độ phân giải khoảng 300dpi tif, đặt tên scan.tif. Cần đảm bảo tối thiểu số mẫu cho mỗi ký tự, trung bình là 10 và 5 cho một số ký tự hiếm. Với những ký tự tần số xuất hiện cao, ít nhất là 20 mẫu nhưng không quá 32 mẫu.

 Tạo ra box file cho mỗi ảnh tập huấn. Box file là một file text chứa danh sách các ký tự trong ảnh tập huấn. Để tạo ra box file, chạy câu lệnh:

tesseract scan.tif scan batch.nochop makebox

lúc này sẽ sinh ra file scan.txt, kiểm tra sửa lỗi ở file này, đặt lại tên thành scan.box. Tesseract chưa có GUI để tạo ra box file, có thể dùng một số GUI đã có để hỗ trợ edit box file. Dưới đây là danh sách một vài Box File Editor đã được cộng đồng xây dựng:

 Với mỗi cặp file ảnh huấn luyện và box file tương ứng: chạy tesseract ở chế độ huấn luyện để tạo ra file scan.tr. Cú pháp:

 Tesseract cần biết tập các ký tự mà nó có thể output: chạy lệnh

unicharset_extractor để tạo ra file unicharset. Cú pháp:

unicharset_extractor scan.box

 Chạy lệnh mftraining để tạo ra các file inttemp, pffmtable và

Microfeat, chạy lệnh cnTraining để tạo ra file normproto. Cú pháp:

mftraining scan.tr

 Tạo ra từ điển (tùy chọn): tạo ra 2 file text UTF-8 là

frequent_words_list và words_list. Các file này chứa ít nhất một từ. Các từ trong 2 file này không nên trùng nhau. Chạy lệnh wordlist2dawg để tạo ra các file DAWG (Directed Acyclic Word Graph). Cú pháp:

wordlist2dawg frequent_words_list freq-dawg wordlist2dawg words_list word-dawg

 Tạo ra file text UTF-8 unicharambigs: file này hỗ trợ việc thay thế giữa các chuỗi nhập nhằng với nhau sau khi nhận dạng. Ví dụ m = r n,

i i i = m. Định dạng file này như sau:

+ Dòng thứ nhất : chỉ version;

+ Các dòng tiếp theo, mỗi dòng chứa 5 trường riêng biệt: trường 1 chứa số từ của trường 2; trường 3 chứa số từ của trường 4;

+ Quy tắc thay thế: Các từ trong trường 2 sẽ được thay thế bằng các từ trong trường 4 nếu trường 5 có giá trị 1; ngược lại nếu trường 5 có giá trị bằng 0, sự thay thế là không cần thiết.

 Gộp tất cả các file lại với nhau: Đổi tên lại các tập tin vừa tạo ra với việc thêm tiền tố languagecode. , sau đó chạy lệnh combine_tessdata để gộp các file lại với nhau. Cú pháp:

combine_tessdata languagecode.

 Chạy OCR trên ảnh gốc để kiểm chứng lại kết quả huấn luyện. File output.txt là file kết quả OCR. Cú pháp:

Một phần của tài liệu Xây dựng hệ thống nhận dạng và dịch trên thiết bị di động (Trang 28)

Tải bản đầy đủ (PDF)

(65 trang)