Nhận dạng ký tự bằng mạng Neural Lan truyền ngược

Nhận dạng ký tự quang học (Optical Character Recognition, viết tắt là OCR), là chương trình được

tạo ra để chuyển các hình ảnh của chữ viết tay hoặc chữ đánh máy (thường được quét bằng máy scanner)

thành các văn bản tài liệu. Bài báo giới thiệu một phương pháp nhận dạng ký tự, đó là kỹ thuật mạng

Neural lan truyền ngược. Kỹ thuật này hiện nay được ứng dụng rộng rãi giúp người dùng không phải

mất thời gian và công sức cho việc nhập lại văn bản từ file ảnh chứa văn bản (đã được scan hoặc dùng

các thiết bị khác chụp lại). Kết quả thực nghiệm trên 90 ký tự với hai loại font : Arial và Tahoma cho

thấy phương pháp này đạt được kết quả nhận dạng chính xác đến 98.89 phần trăm.

pdf 5 trang kimcuc 7640
Bạn đang xem tài liệu "Nhận dạng ký tự bằng mạng Neural Lan truyền ngược", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Nhận dạng ký tự bằng mạng Neural Lan truyền ngược

Nhận dạng ký tự bằng mạng Neural Lan truyền ngược
Khoa hoïc Coâng ngheä30
Số 14, tháng 6/2014 30
NHẬN DẠNG KÝ TỰ BẰNG MẠNG NEURAL LAN TRUYỀN NGƯỢC
Character recognition by backpropagation neural network
Tóm tắt
Nhận dạng ký tự quang học (Optical Character Recognition, viết tắt là OCR), là chương trình được 
tạo ra để chuyển các hình ảnh của chữ viết tay hoặc chữ đánh máy (thường được quét bằng máy scanner) 
thành các văn bản tài liệu. Bài báo giới thiệu một phương pháp nhận dạng ký tự, đó là kỹ thuật mạng 
Neural lan truyền ngược. Kỹ thuật này hiện nay được ứng dụng rộng rãi giúp người dùng không phải 
mất thời gian và công sức cho việc nhập lại văn bản từ file ảnh chứa văn bản (đã được scan hoặc dùng 
các thiết bị khác chụp lại). Kết quả thực nghiệm trên 90 ký tự với hai loại font : Arial và Tahoma cho 
thấy phương pháp này đạt được kết quả nhận dạng chính xác đến 98.89 phần trăm.
Từ khóa: nhận dạng ký tự quang học, mạng neural nhân tạo, mạng truyền thẳng, mạng hồi qui, 
mạng tự tổ chức.
Abstract
Optical Character Recognition (Optical Character Recognition, abbreviated as OCR), a program 
is created to convert images of handwritten or typewritten text (usually scanned by a scanner) to 
text documents. This paper presents a method of character recognition, which is the technical back-
propagation neural network. This technique is now widely applied to enable users not to spend time and 
effort to re-enter the text from the image file (scanned or use other capture devices). The experimental 
results on 90 characters with two types of fonts of Arial and Tahoma showed that this method gives the 
accurate recognition result to 98.89 percent.
Keys words: optical Character Recognition, Artificial Neural Networks, feel- forward, feedback, 
self-organizing.
1. Dẫn nhập1
Mạng neural nhân tạo (Artificial Neural 
Networks: ANN) ra đời xuất phát từ ý tưởng mô 
phỏng hoạt động của bộ não con người. ANN là 
sự tái tạo bằng kỹ thuật những chức năng của hệ 
thần kinh con người với vô số các neural được liên 
kết truyền thông với nhau qua mạng. Giống như 
con người, ANN được học bởi kinh nghiệm, lưu 
những kinh nghiệm đó và sử dụng trong những 
tình huống phù hợp. Trong một vài năm trở lại đây, 
mạng neural đã được nhiều người quan tâm và áp 
dụng thành công trong nhiều lĩnh vực khác nhau. 
Chẳng hạn như ở các cơ quan tài chính, y tế, địa 
chất và vật lý. Thật vậy, bất kỳ ở đâu có vấn đề 
về dự báo, phân loại và điều khiển, mạng neural 
đều có thể ứng dụng được. Mạng neural dựa trên 
việc mô phỏng cấp thấp hệ thống neural sinh học. 
Trong tương lai với sự phát triển mô phỏng neural 
sinh học, chúng ta có thể có loại máy tính thông 
minh thật sự.
Trong phạm vi bài báo này, chúng tôi vận dụng 
lý thuyết mạng neural để thiết kế chương trình 
nhận dạng ký tự quang học.
1 Thạc sĩ, Trường Đại học Trà Vinh
2. Phương pháp huấn luyện mạng neural2 
2.1. Phương pháp học
Mạng neural nhân tạo phỏng theo việc xử lý 
thông tin của bộ não người. Do vậy, đặc trưng cơ 
bản của mạng là có khả năng học, khả năng tái tạo 
các hình ảnh và dữ liệu khi đã học. Trong trạng 
thái học, thông tin được lan truyền theo hai chiều 
nhiều lần để học các trọng số. Có 3 kiểu học chính, 
mỗi kiểu học tương ứng với một nhiệm vụ học trừu 
tượng. Đó là học có giám sát (có mẫu), học không 
giám sát và học tăng cường. Thông thường, loại 
kiến trúc mạng nào cũng có thể dùng được cho các 
nhiệm vụ.
2.2. Học có giám sát
Một thành phần không thể thiếu của phương 
pháp này là sự có mặt của một người thầy (ở bên 
ngoài hệ thống). Người thầy này có kiến thức về 
môi trường thể hiện qua một tập hợp các cặp đầu 
vào - đầu ra đã được biết trước. Hệ thống học (ở 
đây là mạng neural) sẽ phải tìm cách thay đổi các 
tham số bên trong của mình (các trọng số và các 
2 Trần, Hùng Cường. 2013. Nhận dạng ký tự quang học. Trường Đại 
học Công nghiệp Hà Nội.
Trần Văn Nam1
Khoa hoïc Coâng ngheä 31
Số 14, tháng 6/2014 31
ngưỡng) để tạo nên một ánh xạ có khả năng ánh xạ 
các đầu vào thành các đầu ra mong muốn. Sự thay 
đổi này được tiến hành nhờ việc so sánh giữa đầu 
ra thực sự và đầu ra mong muốn.
2.3. Học không giám sát
Trong học không có giám sát, ta được cho trước 
một số dữ liệu x và hàm chi phí cần được cực tiểu 
hóa có thể là một hàm bất kỳ của dữ liệu x và đầu 
ra của mạng, f – hàm chi phí được quyết định bởi 
phát biểu của bài toán. Phần lớn các ứng dụng nằm 
trong vùng của các bài toán ước lượng như mô 
hình hóa thống kê, nén, lọc, phân cụm.
2.4. Học tăng cường
Dữ liệu x thường không được tạo trước mà được 
tạo ra trong quá trình một agent tương tác với môi 
trường. Tại mỗi thời điểm t, agent thực hiện hành 
động yt và môi trường tạo một quan sát xt với một 
chi phí tức thời Ct, theo một quy trình động nào đó 
(thường là không được biết). Mục tiêu là một sách 
lược lựa chọn hành động để cực tiểu hóa một chi 
phí dài hạn nào đó, nghĩa là chi phí tích lũy mong 
đợi. Quy trình hoạt động của môi trường và chi 
phí dài hạn cho mỗi sách lược thường không được 
biết, nhưng có thể ước lượng được. Mạng neural 
nhân tạo thường được dùng trong học tăng cường 
như một phần của thuật toán toàn cục. Các bài toán 
thường được giải quyết bằng học tăng cường là các 
bài toán điều khiển, trò chơi và các nhiệm vụ quyết 
định tuần tự (sequential decision making) khác.
3. Phương pháp và thuật toán nhận dạng ký tự
Ở đây, chúng tôi sử dụng mạng feed-forward 
và thuật toán lan truyền ngược sai số Back 
Propagation để xử lý bài toán.
3.1. Cơ sở dữ liệu
Cơ sở dữ liệu cho bài toán nhận dạng ký tự 
quang gồm 90 ký tự theo chữ cái Latin với hai loại 
font: Times New Roman và Arial, trong bảng mã 
Unicode tương ứng.
Hình 1. Một ví dụ về mẫu các ký tự trong nhận dạng 
ký tự quang học
3.2. Phương pháp nhận dạng
Phương pháp nhận dạng ký tự quang bằng mạng 
neural bao gồm các bước được mô tả như sau:
− Thu nhận ảnh
− Tiến hành phân tích ảnh để tìm ký tự
− Tiền xử lý ký tự
− Mạng Neural nhận dạng ký tự
− Hậu xử lý dữ liệu
3.2.1. Thu nhận ảnh
Input văn bản, tài liệu có thể được thu nhận 
bằng máy quét scanner, webcam, hoặc các thiết bị 
thu nhận ảnh thông dụng khác.
3.2.2. Tiến hành phân tích ảnh để tìm ký tự
Việc phân tích ảnh để tìm ký tự bao gồm các 
bước sau:
− Đầu tiên, tiến hành tách dòng ký tự ra khỏi 
ảnh ký tự
− Thứ hai, tách từ riêng biệt ra khỏi dòng ký tự
− Cuối cùng, tách riêng từng ký tự ra khỏi từ
3.2.3. Tiền xử lý ký tự
Quá trình tiền xử lý ký tự giải quyết vấn đề ánh 
xạ giá trị pixel ảnh ký tự vào ma trận 10x15 và 
tuyến tính hóa ma trận thành 150 giá trị đưa vào 
150 Neural ở lớp vào của mạng.
3.2.4. Mạng Neural nhận dạng ký tự
Hiện nay, các loại mạng Neural thông dụng 
gồm có: mạng truyền thẳng (feel-forward), 
mạng hồi qui (feedback), mạng tự tổ chức (self-
organizing). Mạng truyền thẳng feed-forward bao 
gồm nhiều lớp các đơn vị xử lý phi tuyến (non-
linear processing unit).
Trong phương pháp này, chúng tôi thiết kế 
chương trình nhận dạng sử dụng mạng MLP có 3 
lớp: lớp vào có 150 nút tương ứng với 250 phần tử 
vectơ ma trận pixel, lớp ẩn có 600 Neural và lớp ra 
có 16 Neural với 16 bit.
Hình 2. Quá trình nhận dạng ký tự
Khoa hoïc Coâng ngheä32
Số 14, tháng 6/2014 32
3.2.5. Hậu xử lý dữ liệu 
Đây là giai đoạn sau cùng, giai đoạn này làm 
nhiệm vụ chuyển đổi giá trị sang dạng ký tự tương 
ứng và sắp xếp lại các ký tự dưới dạng text theo 
dạng văn bản ban đầu. 
4. Thực nghiệm và kết quả
4.1. Tách dòng 
Thuật toán:
Bước 1: Xác định giới hạn dưới của dòng:
Bước 2: Bắt đầu duyệt từ giới hạn trên (đỉnh) 
vừa tìm thấy của dòng (0, top_line).
Bước 3: Tương tự như xác định giới hạn trên, 
chúng ta duyệt hết chiều rộng của ảnh trên cùng 
một giá trị y.
− Nếu duyệt hết dòng mà không tìm thấy ký tự 
pixel đen nào thì ghi nhận y-1 là giới hạn dưới của 
dòng (bottom_line). Dừng duyệt. Tăng số dòng lên 
(lines++).
− Nếu chưa tìm thấy bottom_line, tiếp tục duyệt 
đến dòng tiếp theo (tăng y, reset x=0).
Bắt đầu từ giới hạn dưới y (bottom_line) vừa 
tìm thấy sau cùng, lặp lại các bước a,b để xác định 
các giới hạn của các dòng tiếp theo, cho đến khi 
duyệt hết chiều cao của ảnh thì dừng, quá trình xác 
định dòng ký tự hoàn tất.
4.2. Tách kí tự
Thuật toán:
Bước 1: Bắt đầu từ kí tự đầu tiên của hàng trên 
cùng với giá trị x đầu tiên.
Bước 2: Quét hết chiều rộng với một giá trị y
− Nếu phát hiện điểm đen đánh dấu y như là 
đỉnh của hàng đầu tiên
− Nếu không xét điểm tiếp theo
Bước 3: Bắt đầu từ giới hạn trên của kí tự phát 
hiện được và giá trị x đầu tiên. (0, giới hạn trên kí tự) 
Bước 4: Quét đến giới hạn dưới của dòng, giữ 
nguyên x
− Nếu phát hiện điểm đen đánh dấu x là phía 
trái của kí tự
− Nếu không xét điểm tiếp theo
− Nếu không thấy điểm đen nào tăng x và khởi 
động lại y để xét đường thẳng đứng tiếp theo
Bước 5: Bắt đầu từ phía trái của kí tự tìm thấy 
và đỉnh của dòng hiện thời, (giới hạn trái kí tự, giới 
hạn trên dòng)
Bước 6: Quét hết chiều rộng của ảnh trên cùng 
một giá trị x
− Nếu không có điểm đen nào thì đánh dấu x-1 
là bên phải của kí tự
Nếu phát hiện điểm đen tăng x và khởi động lại 
y để xét đường thẳng đứng tiếp theo
Hình 3.Quá trình tách ký tự
4.3. Tìm giới hạn kí tự
Thuật toán:
Bước 1: Bắt đầu từ đỉnh của dòng hiện thời và 
bên trái của kí tự
Bước 2: Quét đến bên phải của kí tự cùng một 
giá trị y
− Nếu phát hiện điểm đen thì đánh dấu y và 
thay đổi lại giới hạn trên
− Nếu không xét điểm tiếp theo
− Nếu không tìm thấy điểm đen nào tăng y và 
khởi động lại x, xét đường thẳng ngang tiếp theo
Bước 3: Bắt đầu từ giới hạn dưới của dòng và 
bên trái của kí tự
Bước 4: Quét tới bên phải của kí tự trên một 
giá trị y
- Nếu phát hiện điểm đen, đánh dấu y là giới 
hạn dưới của kí tự
- Nếu không phát hiện điểm đen giảm y và khởi 
động lại x xét đường thẳng ngang tiếp theo
Hình 4. Quá trình tìm giới hạn kí tự
Khoa hoïc Coâng ngheä 33
Số 14, tháng 6/2014 33
4.4. Ánh xạ vào ma trận
Thuật toán:
Bước 1: Đối với chiều rộng:
− Khởi tạo với 19 phần tử tương ứng
− Ánh xạ điểm đầu (0,y) và điểm cuối (C_
rong,y) của ảnh kí tự tương ứng với giá trị đầu 
(0,y) và giá trị cuối (10,y) của ma trận
− Chia nhỏ chiều rộng thành 19 giá trị tương ứng
Bước 2: Đối với chiều cao: 
− Khởi tạo với 29 phần tử tương ứng
− Ánh xạ điểm đầu (x,0) và điểm cuối (x,C_
cao) của ảnh kí tự tương ứng với giá trị đầu (x,0) 
và giá trị cuối (x,29) của ma trận
− Chia nhỏ chiều cao thành 19 giá trị tương ứng
Hình 5. Quá trình chia lưới kí tự
Để đưa giá trị vào mạng neural, chúng ta cần 
chuyển ma trận điểm ảnh sang ma trận giá trị.
Thuật toán:
Bước 1: Bắt đầu từ phần tử (0,0)
Bước 2: Tăng x giữ nguyên giá trị y cho tới khi 
bằng chiều rộng của ma trận
− Ánh xạ mỗi phần tử tới một phần tử của mảng 
tuyến tính
 + Nếu là điểm đen thì nhận giá trị bằng 1
 + Ngược lại nhận giá trị bằng 0
− Nếu x = chiều rộng thì khởi động lại x và 
tăng y
Lặp lại cho tới khi (x,y)=( C_Rong, C_Cao)
Hình 6. Quá trình ánh xạ từ ma trận điểm sang ma 
trận giá trị
4.5. Huấn luyện mạng neural
Thuật toán:
Bước 1: Xây dựng mạng tương ứng với mô 
hình tham số
Bước 2: Khởi tạo giá trị trọng số với giá trị 
ngẫu nhiên. Nạp file huấn luyện (cả ảnh đầu vào 
và ảnh đầu ra mong muốn)
Bước 3: Phân tích ảnh và ánh xạ tất cả kí tự tìm 
thấy vào các mảng một chiều
Bước 4: Đọc giá trị đầu ra mong muốn từ file và 
chuyển đổi từng kí tự tới giá trị nhị phân Unicode 
và lưu trữ riêng biệt
Bước 5: Với mỗi kí tự:
− Tính toán giá trị đầu ra của mạng Feed 
ForWard
− So sánh với giá trị đầu ra mong muốn tương 
ứng với từng kí tự và tính toán lỗi
− Truyền ngược giá trị từ đầu và với mỗi liên 
kết điều chỉnh trọng số liên kết
Bước 6: Chuyển sang kí tự tiếp theo và lặp lại 
“6” cho tới khi hết các kí tự
Bước 7: Tính toán trung bình lỗi cho tất cả các 
kí tự
Bước 8: Lặp lại từ bước 6 đến 8 cho tới khi đạt 
số đưa vào của số lần lặp tối đa
− Với phạm vi lỗi đạt đến ngưỡng. Nếu như vậy 
thì bỏ lặp lại
− Ngược lại tiếp tục lặp lại
4.6. Nhận dạng ảnh kí tự
Thuật toán:
Bước 1: Nạp file ảnh
Bước 2: Phân tích ảnh cho các dòng kí tự
Bước 3: Với mỗi dòng tách các kí tự liên tiếp
− Phân tích và xử lý ảnh kí tự cho việc ánh xạ 
vào một vectơ đầu vào
− Đưa giá trị vector đầu vào cho mạng neural 
và tính toán giá trị đầu ra
− Chuyển đổi mã Unicode đầu ra từ nhị phân 
tới kí tự tương ứng và trả ra dưới dạng textbox
Khoa hoïc Coâng ngheä34
Số 14, tháng 6/2014 34
Hình 7. Quá trình nhận dạng kí tự
4.7. Kết quả
Thử nghiệm việc huấn luyện mạng với tập mẫu 
của 2 loại font: Latinh Arial, Latinh Times Roman. 
4.7.1. Kết quả khi thay đổi số lần lặp (Epoch) 
Số kí tự = 90, tốc độ học learning_rate = 150, 
hệ số góc hàm sigmoid α =0.014
Font
Epoch=300 Epoch=500 Epoch=700
Số
ký tự 
sai
%
Error
Số
ký tự 
sai
%
Error
Số
ký tự 
sai
%
Error
Latin 
Arial 3 3.33 2 2.22 1 1.11
Latin 
Times 
Roman
0 0 0 0 1 1.11
4.7.2. Kết quả khi thay đổi tham số learing_rate 
Số kí tự = 90, số Epoch = 150, hệ số góc 
α=0.014
Font
60 100 180
Số
ký tự 
sai
%
Error
Số
ký tự 
sai
%
Error
Số
ký tự 
sai
%
Error
Latin 
Arial 80 88.88 19 21 2 2.22
Latin 
Times 
Roman
76 84.44 14 15.56 0 0
5. Kết luận
Chương trình thực nghiệm đã được huấn luyện 
và nhận dạng hai loại font: Arial và Times Roman 
với nhiều kích thước khác nhau đã đạt được kết 
quả 98.89%, nhưng còn một số tồn tại cần được 
phát triển để đạt kết quả cao hơn.
Đối với quá trình huấn luyện, chúng ta cần 
chú ý nhiều và font Arial như đã nói ở trên chữ 
“I-Hoa”mã 49h và chữ “l-Thường ” mã 6Ch khi 
tách kí tự, chia lưới và đưa kết quả vào mạng sẽ 
làm cho mạng không phân biệt được hai kí tự này, 
dẫn đến dễ nhận dạng sai. Phương pháp này cần 
tăng số lần lặp cho quá trình huấn luyện.
Ngoài ra, còn một số trường hợp ảnh của hai kí 
tự nằm chéo nhau như một số trường hợp sau:
Nó sẽ dẫn đến quá trình tách kí tự bị dính do đó 
nhận dạng sai. Đối với trường hợp này, chúng ta 
cần phát triển phương pháp tách để tách kí tự.
Trong quá trình thực nghiệm nhận dạng kí tự, 
chúng ta thấy những kí tự sai là do quá trình huấn 
luyện mạng chưa học được nên những kí tự này 
trong ảnh nhận dạng sẽ bị nhận dạng sai, chỉ có 
một số ít là do trong quá trình tách kí tự.
Tài liệu tham khảo
Jain, A. 2000. Personal Identification Based on Handwriting. IIT Kapur, April.
Holst, A. 1997. “The Use of Bayesian Neural Network Model for Classification Tasks. Department 
of Numerical Analysis and Computing Science. Sweden.
Jain, A. K. 1998. Texture Analysis. East Lansing, MI 48824-1027 USA.
Cha Sung-Hynk. 2001. Use of Distance Measures in Handwriting Analysis. Buffalo UB: New York.
Trần, Hùng Cường. 2013. Nhận dạng ký tự quang học. Trường Đại học Công Nghiệp Hà Nội.

File đính kèm:

  • pdfnhan_dang_ky_tu_bang_mang_neural_lan_truyen_nguoc.pdf