Đối tƣợng/Khái niệm
Vai trò/ý nghĩa
Phiếu nhập Là một văn bản có thể được in ra dưới dạng ảnh để thu thập dữ liệu
Tờ
Mỗi phiếu nhập có thể bao gồm nhiều tờ, nghĩa là cùng một phiếu nhập nhưng khi scan vào máy tính có thể bao gồm nhiều tờ
Nhãn Các dòng chữ trên phiếu
Hình ảnh Các biểu tượng, các hình trang trí,.. có thể được đưa vào phiếu Block Các hộp đen ở cạnh lề của phiếu, mỗi tờ phiếu chỉ có một dãy
các hộp đen ở một lề của phiếu
Vùng đánh dấu Các vùng lựa chọn để người dùng tô đen bằng bút chì, bút bi Vùng nhập ký tự Các vùng để nhập dữ liệu theo các ô
Vùng nhập liệu Đại diện cho những vùng được điền dữ liệu vào phiếu bao gồm vùng đánh dấu, vùng nhập ký tự.
Đường thẳng ngang/dọc
Các đường thẳng được tìm tự động trên mẫu phiếu để làm mốc quy chiếu
Tác vụ Một dãy các thao tác xử lý ảnh để nhận dạng ra kết quả cuối cùng của các vùng nhập liệu
Vùng nhập liệu trên ảnh
Vùng nhập liệu tìm được trên ảnh
3.2.2 Mô hình khái niệm
Dựa vào các khái niệm đã nêu, ta xây dựng được mô hình khái niệm như hình vẽ
Hình 3-6: Mô hình khái niệm
Cơ sở dữ liệu : Cơ sở dữ liệu của hệ thống phải đảm bảo đáp ứng được tính rõ ràng, đầy đủ. Do mỗi mẫu phiếu được xây dựng từ các thành phần nhỏ, do tần suất truy xuất dữ liệu không cao và lưu trữ dữ liệu không lớn nhưng lại cần sự gắn kết chặt chẽ. Cơ sở dữ liệu của hệ thống được chọn là các kho chứa XML.
Thiết kế các thẻ biểu diễn đối tƣợng trong kho chứa XML
1) Thẻ <FormTemplate/> đại diện cho một tờ của mẫu phiếu trong kho chứa XML
Các Thuộc tính : - FormId : mã phiếu - PaperId : mã tờ Các thẻ thành phần :
- Identifier : vùng mã của phiếu, giúp tự động tìm mẫu phiếu của ảnh cần xử lý
- FormBaseImage : ảnh nền của form - Name : tên của phiếu
- FormSize : kích cỡ phiếu bao gồm chiều rộng và chiều cao - Blocks : các ô đen ở bên lề để định vị
- UserInputs : các vùng nhập liệu - Labels : các nhãn
- Pictures : các ảnh, biểu tượng trang trí
- Lines : các đường thẳng, được tự động tìm kiếm trên phiếu 2) Thẻ <Identifier/ >
Các thẻ thành phần
- TopleftPosition : vị trí của khu vực mã phiếu - Bound : kích thước của cả vùng
- Style : cách hiển thị của khu vực
- NumberOfFormIdCells : số lượng các ô hiển thị mã phiếu - NumberOfPaperIdCells : số lượng các ô hiển thị mã tờ 3) Thẻ <Blocks/ >
Các thẻ thành phần
- Size : kích cỡ của một block
- NumberOfBlocks : số lượng của các block - BlockDistance : khoảng cách của các block - TopleftPosition : vị trí của block đầu tiên - Bound : kích thước của cả vùng
- ShapeType : ô có dạng hình chữ nhật/ellipse 4) Thẻ <DigitInputCells/ >
Thuộc tính : - Name
Các thẻ thành phần
- Bound : kích thước của cả vùng
- Style : cách hiển thị, định nghĩa độ rộng của ô nhập, viền, kích thước chữ số,…
- NumberOfCells : số lượng các ô trong vùng 5) Thẻ <CheckInputs/>
Thuộc tính : - Name
Các thẻ thành phần
- TopleftPosition : vị trí của ô đầu tiên - Bound : kích thước của cả vùng
- Style : cách hiển thị, định nghĩa kích thước của ô cần tô, hình dáng(vuông/tròn), kích thước ô,…
- Rows : số lượng và khoảng cách của các ô trong một hàng - Cols : số lượng và khoảng cách của các ô trong một cột
- SelectOption : nhóm các ô theo hàng/cột, trong một nhóm thì là đa lựa chọn hay đơn lựa chọn
6) Thẻ <Line/> Thuộc tính :
- LineId : mã đường thẳng Các thẻ thành phần :
- MinX, MinY, MaxX, MaxY : tọa độ của đường bao của đường thẳng 7) Thẻ <Task/> đại diện cho một tác vụ xử lý ảnh của mẫu phiếu trong kho
chứa XML Thuộc tính
- TaskId : mã của tác vụ Các thẻ thành phần :
- Template : mã của mẫu phiếu mà ảnh xử lý được tạo ra - Inputs : các vùng nhập liệu xác định được trên ảnh 8) Thẻ < Input>
Thuộc tính :
- Name : tên vùng nhập liệu trên ảnh Các thẻ thành phần :
- TopleftPosition : vị trí của vùng
- Bound : kích thước của cả vùng trên ảnh - Value : giá trị nhận dạng được của vùng
3.2.3 Biểu đồ các quy trình thiết kế, nhận dạng
1) Quy trình thiết kế mẫu phiếu
Người sử dụng có thể tạo ra mẫu form mới hoặc mở các mẫu form cũ để chỉnh sửa. Quá trình thiết kế được hỗ trợ một cách trực quan, các đối tượng trên form như nhãn, vùng đánh dấu có thể được kéo, thả. Mẫu form có thể xuất ra ảnh để in ra và điền thông tin. Sau khi hoàn tất quá trình thiết kế, ảnh của form sẽ được xử lý để tách ra các đường thẳng. Cuối cùng thông tin về các đối tượng trên form cùng các đường thẳng tìm được sẽ được lưu vào kho dữ liệu dạng XML.
Mo mau phieu cu
Tao mau phieu moi Chinh sua mau
phieu Tim cac duong thang
trong mau phieu Luu mau phieu
Tao phieu moi Mo phieu
Hình 3-7: Quy trình thiết kế mẫu phiếu 2) Quy trình nhận dạng
a) Chưa biết trước mã của mẫu phiếu
Hình 3-9 mô tả quy trình nhận dạng ảnh của form nhập liệu khi chưa biết các thông tin về mã form của ảnh, nghĩa là khi xử lý module xử lý ảnh sẽ chưa có thông tin về kích cỡ form, vị trí các vùng nhập liệu, vị trí các block(nếu có),…. Module xử lý ảnh nhận vào một ảnh và sẽ phải tự động tìm kiếm các thông tin về mã form, mã tờ trên ảnh.
Để định danh form, [26] sử dụng các đặc trưng của form(cụm ký tự, cấu trúc bảng,…). Phương pháp này cho phép định danh một form bất kỳ mà không phải sử dụng các đối tượng ngoại lai. Tuy nhiên trong một form không phải bao giờ cũng có đủ đặc trưng để định dang.
Một số ứng dụng sử dụng các đối tượng định nghĩa thêm vào form như mã vạch để định danh form nhập liệu ví dụ như SimpleIndex, Taskmaster,… ; một số form lại dùng các ký hiệu tại các vị trí khác nhau trên ảnh để đánh dấu [33]. Trong khuôn khổ luận văn này, tôi sử dụng vùng mã với các số trong vùng được tự động sinh ra theo mã của form như hình 3-8. Vùng mã viết theo kiểu này có tính trực quan cao hơn
các cách thể hiện ở trên, thông qua đó người thao tác chương trình có thể dễ dàng biết được ảnh thuộc về kiểu form mẫu nào mà chưa cần tiến hành nhận dạng ảnh.
Hình 3-8: Vùng mã form trên ảnh
Khi nạp ảnh vào để xử lý, đầu tiên ảnh sẽ được khử nhiễu, tách nền, chính xác góc nghiêng( bằng phương pháp phép chiếu hoặc sử dụng block). Sau khi tiền xử lý, vùng mã form trên ảnh sẽ được tìm kiếm và nhận dạng để xác định mã form của ảnh.
Với các thông tin có được về form, các block sẽ được tìm kiếm và chính xác hóa. Các blocks này được sử dụng làm mốc quy chiếu để xác định vùng nhập liệu. Tuy nhiên nếu trên form không có block, các vùng nhập liệu vẫn có thể xác định được thông qua vị trí tương đối đến vùng mã( vùng mã cũng là một mốc quy chiếu) và các đường thẳng, sau đó những vùng nhập liệu nhận dạng được lại tiếp tục trở thành các mốc quy chiếu để nhận dạng các vùng nhập liệu khác.
Sau khi nhận dạng hoàn tất, kết quả nhận dạng cùng với các thông tin cần thiết sẽ được lưu lại cho các mục đích xử lý khác ( hậu xử lý).
Khu nhieu, tach nen, xac dinh nguong nhi phan
Khu nghieng bang blocks
Khu nghieng bang phep chieu Xac dinh vung
ma phieu
Tim thay blocks
Khong tim thay blocks
Khong tim thay vung ma phieu
Nap cac thong tin ve mau phieu
Tim duoc vung ma phieu
Chinh xac hoa cac blocks
Tach vung nhap lieu Nhan dang vung nhap lieu
Luu ket qua Tim cac duong
thang tren anh Doi chieu cac duong thang tren
anh voi cac duong tren mau Tim thay block
Khong tim thay block Co blocks trong mau Khong co blocks
Doi chieu khong trung Doi chieu dung hai cap duong thang
b) Biết trƣớc mã của mẫu phiếu
Trong trường hợp không định nghĩa vùng mã trên form, người thao tác chương trình sẽ phải cung cấp mã form như một tham số nhận dạng. Quy trình xử lý ảnh tương tự như trên, tuy nhiên do được cung cấp mã nên không cần phải tìm kiếm vùng mã trên ảnh.
Mặt khác do các thông tin về form được biết trước khi bắt đầu xử lý, các module xử lý ảnh như "xác định block" có thể sử dụng các thông tin đó để xử lý hiệu quả hơn.
Nap thong tin ve mau phieu Khu nhieu, tach nen, xac
dinh nguong nhi phan
Khu nghieng bang phep chieu
Khu nghieng bang blocks Tim cac duong
thang tren anh Doi chieu cac duong thang tren
anh voi cac duong trong mau
Tach vung nhap lieu
Doi chieu dung hai tap duong thang
Tim duoc blocks Khong tim duoc blocks
Doi chieu khong trung nhau
Nhan dang vung nhap lieu
Luu ket qua
Khong co blocks Co blocks trong mau phieu
CHƯƠNG 4 – THỰC NGHIỆM
4.1 Môi trƣờng thực nghiệm
Chương trình được cài đặt trên ngôn ngữ C++ và C#, được thử nghiệm trên Máy tính Pentium IV 3.0 GHz, bộ nhớ RAM 512 MB sử dụng hệ điều hành Windows XP SP2.
Với mục đích đánh giá độ chính xác và hiệu năng thực hiện của các phương pháp trình bày trong luận văn, chúng tôi đã tuyển tập rất nhiều các tài liệu dạng ảnh trên các kiểu form khác nhau như: phiếu đăng ký, phiếu điều tra, hóa đơn, phiếu thanh toán, bảng điểm….Các ảnh này được tìm thấy phần lớn là thông qua trang tìm kiếm Google.com để có thể đảm bảo được sự đa dạng về kiểu form, về chất lượng ảnh, về kích cỡ và ngôn ngữ.
Bên cạnh đó tôi cũng tự thiết kế một số mẫu form đồng thời tiến hành thu thập các mẫu form trên thực tế( form tiếng việt).
Trên các ảnh kiểu form nhập dữ liệu này bao gồm nhiều đối tượng khác nhau như dòng chữ, bảng, ô đánh dấu, ảnh biểu tượng,.... Các ảnh này đều có kích thước rất đa dạng nhưng đều được in ra giấy khổ A4, và được scan với nhiều độ phân giải khác nhau, từ 100 đến 300 DPI( tương ứng với kích thước 827x1170 đến 2481x3510 pixel cho mỗi một ảnh).
Các tập ảnh con trong cơ sở dữ liệu ảnh được chọn lựa để kiểm thử cho từng giải pháp xử lý ảnh, các ảnh này được chia làm 5 loại được liệt kê trong bảng.
Bảng 1: Bảng phân loại ảnh
Category Loại ảnh Số lƣợng
Cat 1 Tài liệu thông thường 5 Cat 2 Tài liệu có chứa ảnh 5 Cat 3 Tài liệu có chứa bảng 20 Cat 4 Tài liệu hỗn hợp 30 Cat 5 Tài liệu tự thiết kế 7
4.2 Thực nghiệm về Lọc nhiễu, tách nền và tìm ngƣỡng nhị phân hóa.
Thực nghiệm Lọc nhiễu, tách nền và tìm ngưỡng nhi phân theo phương pháp ở mục 1.1. Kết quả về hiệu năng cho trong bảng dưới.
Bảng 2: Lọc nhiễu
DPI Hiệu năng (ms) Số lần lọc Trung bình
100 7.63 3.43
150 15.53 3.57
200 28.81 3.21
300 65.21 3.34
Dựa trên kết quả thực nghiệm ta thấy rằng thời gian lọc ảnh không phụ thuộc vào số lần lọc mà phụ thuộc chủ yếu vào độ phân giải của ảnh.
Ngược lại số lần lọc trung bình không phụ thuộc vào độ phân giải mà vào chất lượng của ảnh. Trong quá trình thực nghiệm chúng tôi thấy rằng với các ảnh có chất lượng tốt thì trung bình cần khoảng 2 lần lọc. Đối với những ảnh có độ tương phản thấp thì số lần lọc có thể lên đến 6 lần. Tuy nhiên do việc lọc ảnh thực tế chỉ sử dụng lược đồ mức xám nên số lần lọc không ảnh hưởng đến hiệu năng xử lý.
4.3 Thực nghiệm về xác định góc nghiêng của ảnh dựa trên phép chiếu
Thực nghiệm về xác định góc nghiêng của ảnh được cài đặt theo phương pháp phép chiếu trong mục 1.2.1. Chúng tôi đã thực nghiệm trên 60 ảnh, với mỗi một ảnh, chúng tôi thực hiện kiểm thử với 300 góc nghiêng khác nhau – mỗi góc nghiêng lệch nhau 0.1o, khoảng góc nghiêng lớn nhất mà chúng tôi thực hiện là ±15o, đây cũng là khoảng góc phù với các máy scan theo lô. Tổng số ảnh thử nghiệm là 18000 trường hợp.
Kết quả thực tế khi xác định một số góc nghiêng lớn với một ảnh 150 DPI và 300 DPI áp dụng phương pháp phép chiếu đã được tối ưu hóa như sau :
Bảng 3: Góc nghiêng với ảnh 150DPI Góc
thực
Kết quả trên ảnh với độ phân giải 150 DPI
Kết quả trên ảnh với độ phân giải 300 DPI
5 5 5 5.1 5.1 5.1 5.2 5.2 5.2 5.3 5.2 5.2 5.4 5.4 5.4 5.5 5.5 5.5 5.6 5.5 5.6 5.7 5.7 5.7 5.8 5.8 5.8 5.9 5.9 5.9 6 6.1 6.0
Qua kết quả thực nghiệm trên ta thấy với những ảnh bé, góc nghiêng xác định được chỉ có thể đạt được độ chính xác là ±0.30
đến ±0.20, Với những ảnh lớn thì độ chính xác cao hơn rất nhiều. Điều này là do các điểm ảnh có tọa độ nguyên, khi ta sử dụng các đường chiếu theo phương pháp Bresenham thì các đường chiếu này không phải là các đường thẳng hoàn toàn. Ảnh càng lớn thì các đường này càng chuẩn hơn và càng cho kết quả chính xác hơn.
Kết quả chúng tôi thu được đối với độ lệch trung bình (0) so với góc thực tế:
Bảng 4: độ lệch trung bình so với góc thực tế Phƣơng pháp
phép chiếu tối ƣu (0) Cat 1 0.11 Cat 2 0.05 Cat 3 0.03 Cat 4 0.03 Cat 5 0.03 Total 0.04
Trong thực tế sai số ±0.10 trong việc xác định góc nghiêng hoàn toàn có thể chấp nhận được. Với kết quả thực nghiệm trên cho ta thấy áp dụng phương pháp phép chiếu trong hệ thống là hợp lý.
Chúng tôi đã thực hiện kiểm thử hiệu năng với ảnh 100 DPI, 150 DPI, 200 DPI, 300 DPI, kết quả thu được trong bảng 5
Bảng 5: So sánh hiệu năng của phƣơng pháp phép chiếu tối ƣu với phƣơng pháp phép chiếu DPI Phƣơng pháp phép
chiếu tối ƣu (ms)
Phƣơng pháp phép chiếu(ms) 100 12.81 64.53 150 25.63 132.40 200 31.15 259.17 300 41.34 517.12
Thực nghiệm cho thấy độ chính xác của phương pháp phép chiếu khi tối ưu và phương pháp phép chiếu là gần như nhau, trong khi đó tốc độ xử lý khi tối ưu thuật toán và tham số nhanh hơn một các đáng kể.
4.4 Thực nghiệm về xác định góc nghiêng của ảnh dựa trên block
Thực nghiệm về xác định góc nghiêng của ảnh được cài đặt theo phương pháp xác định block trong mục 1.2.2. tôi đã thực nghiệm trên 7 ảnh, mỗi một ảnh thực hiện kiểm thử với 300 góc nghiêng khác nhau – mỗi góc nghiêng lệch nhau 0.1o, khoảng góc nghiêng lớn nhất là ±15o, đây cũng là khoảng góc phù với các máy scan dạng batch job. Tổng số ảnh thử nghiệm là 2100 ảnh.
Kết quả thử nghiệm trên một số góc nghiêng của ảnh bài thi trắc nghiệm có độ phân giải 150DPI và 300DPI
Bảng 6: Kết quả xác định góc nghiêng bằng block Góc thực Kết quả trên ảnh 150 DPI Kết quả trên ảnh 300 DPI 5 5 5 5.1 5.1 5.1 5.2 5.2 5.2 5.3 5.2 5.3 5.4 5.4 5.4 5.5 5.5 5.5 5.6 5.6 5.6 5.7 5.7 5.7 5.8 5.8 5.8 5.9 5.9 5.9 6 6 6
Block đặt bên lề ảnh có khoảng cách giữa block đầu tiên và block cuối cùng càng lớn thì đường thẳng xấp xỉ qua tâm các block càng dài, do đó thì độ chính xác