Trong các chương trước, tôi đã trình bày các bước trong quy trình nhận dạng ảnh bao gồm tiền xử lý, tách vùng, nhận dạng. Một vấn đề xuyên suốt toàn bộ luận văn đó là nhận dạng ảnh được thực hiện dựa trên các thông tin đã biết trước về mẫu sử dụng để tạo ra ảnh. Các thông tin này cần được lưu trữ, sắp xếp một cách hợp lý nhằm hỗ trợ cho nhận dạng và quản lý.
Khác với các hệ thống nhận dạng ảnh khác như hệ thống chấm thi trắc nghiệm, hệ thống bầu cử,… Những hệ thống này là những hệ thống gắn chặt với một nghiệp vụ cụ thể và thông thường chỉ có một hặc vài loại phiếu nhập. Các thông tin trên phiếu nhập được liên kết với các dữ liệu có ngữ nghĩa trong cơ sở dữ liệu và được sử dụng để thực hiện các chức năng của hệ thống như phân loại sinh viên, lập báo cáo,... Phiếu nhập trong những hệ thống này hoàn toàn có thể được thay thể bởi một form trong chương trình để nhập thông tin vào từ máy tính thay vì điền vào phiếu trên giấy sau đó nhận dạng.
Hệ quản trị phiếu nhập được xây dựng ở đây là một chương trình trung gian. Là phần chỉ liên quan đến xử lý ảnh được tách riêng ra khỏi các hệ thống trên. Trong hệ thống này các mẫu phiếu được thiết kế và nhận dạng để được sử dụng trong các ứng dụng độc lập khác. Dữ liệu nhận dạng tương ứng cũng được đưa vào cơ sở dữ liệu của các ứng dụng đó. Hệ quản trị phiếu không nhằm mục đích quản lý các dữ liệu nhận dạng được mà chỉ quản lý các thông tin dùng để định nghĩa và hỗ trợ cho nhận dạng.
Bên cạnh quản trị phiếu nhập, hệ thống hoàn thiện cũng cần phải có một quy trình xử lý ảnh tích hợp các giải pháp đã trình bày ở các chương 2, 3 bắt đầu từ khi nhận được ảnh cho đến khi có được kết quả nhận dạng cuối cùng.
Chương xây dựng hệ thống tích hợp sẽ tập trung vào các chức năng : quản trị phiếu nhập( thiết kế form, lưu trữ và quản lý form), hỗ trợ nhận dạng form.
3.1 Phân tích bài toán
Chức năng quản trị phiếu nhập đảm nhiệm tất cả các công việc liên quan đến lưu trữ, thiết kế, chỉnh sửa form. Người dùng có thể lựa chọn form đã tạo từ trước, hoặc tạo ra form mới để chỉnh sửa. Những thay đổi đến bất cứ thành phần nào trên form sẽ được ghi nhận. Sau đó, form có thể được xuất ra ảnh hoặc in ra giấy, khi đã được điền thông tin form được quét qua máy scan và tạo ra các file ảnh cần xử lý.
Chức năng hỗ trợ nhận dạng hỗ trợ người dùng thực hiện xử lý ảnh một cách trực quan. Người dùng có thể tiến hành các chức năng xử lý ảnh riêng biệt như tách nền, chỉnh góc nghiêng, tìm đường thẳng để thấy được các kết quả trung gian trong toàn bộ quá trình xử lý. Kết quả cuối cùng khi tích hợp các module nhận dạng sẽ được
lưu lại và sử dụng sau đó với các mục đích cụ thể ví dụ như đưa vào cơ sở dữ liệu của ứng dụng có sử dụng mẫu phiếu của ảnh được xử lý.
Mô tả form
Mẫu form mà luận văn hướng đến áp đặt một số quy tắc cần thiết giúp nâng cao độ chính xác khi nhận dạng. Một mẫu form nhập liệu điển hình có những đặc điểm như sau:
Form có thể có các dòng chữ bao gồm tiêu đề của mẫu, nội dung, hướng dẫn nhập liệu, chú thích,…
Form có thể có một dãy block ở bên lề .
Form có thể chứa mã của mẫu phiếu và mã của số thứ tự tờ trong mẫu, giúp cho việc tự động xác định mẫu khi xử lý ảnh.
Form có thể chứa các hình ảnh, biểu tượng được thêm vào để trang trí, các đường thẳng để phân chia khu vực nhập liệu,…
Form có các vùng đánh dấu được định nghĩa cụ thể bao gồm số hàng, số cột, hình dạng( tròn/vuông) để phục vụ cho việc hiển thị và các thông tin đơn định dạng, đa định dạng, nhóm dòng/cột để phục vụ cho nhận dạng.
Form có các ô nhập dữ liệu dạng số, ký tự được định nghĩa bao gồm các thông số hiển thị như : số ô, kích thước ô, độ dày đường bao,… và các thông số hỗ trợ nhận dạng như định dạng của dữ liệu sẽ được nhập vào trong ô : chữ/số/số vuông.
Sau đây là một số mẫu phiếu được thiết kế bởi module quản trị phiếu nhập tuân thủ các ràng buộc đã xác định.
Với những đặc điểm trên, mẫu form được thiết kế phù hợp với các giả thiết về đặc trưng ảnh form nhập liệu đã nêu ở các chương trước :
Diện tích của các đối tượng chiếm một phần nhỏ diện tích của toàn bộ ảnh( khử nhiễu, tách nền, nhị phân hóa ảnh).
Trên form có các dòng chữ và có hướng nằm ngang từ trên xuống dưới, do đó có thể thực hiện phép chiếu để xác định góc nghiêng. Trên form cũng có thể có các block.
Trên form có các đường thẳng là đường bao của các ô nhập liệu dạng số, có thể có khung hoặc các đường thẳng phân chia nội dung. Các đối tượng này có thể được dùng làm mốc quy chiếu
Với bài toán nêu ra như trên, phần quản trị form được chia làm hai gói chính : gói quản lý phiếu và gói hỗ trợ nhận dạng.
Chi tiết các chức năng của hệ thống :
1. Gói quản trị mẫu phiếu :
Thêm, sửa , xóa mẫu phiếu.
Định nghĩa các vùng nhập liệu
Xuất ra file ảnh và ra máy in 2. Gói hỗ trợ nhận dạng :
Tiền xử lý ảnh : lọc nhiễu, tách nền, khử nghiêng
Phát hiện các mốc quy chiếu : hộp đen, đường thẳng
Tách vùng, nhận dạng với thông tin về mẫu được cung cấp
3.2 Xây dựng hệ thống
Đố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 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