Trong những năm gần đây, cùng với sự phát triển của công nghệ phần cứng, người ta tiến hành nghiên cứu, phát triển các phương pháp, thuật toán để xử lý và phân tích về cấu trúc của ảnh tài liệu. Trên thực tế, ảnh tài liệu được quét vào và lưu trữ trên máy tính dưới dạng tập tin ảnh rất đa dạng cả về nội dung và hình thức. Mỗi ảnh đó có thể là chỉ là văn bản hoặc là hình ảnh. Việc phân tích cấu trúc của ảnh tài liệu có vai trò quan trọng rằng khi máy tính định hình được cấu trúc của
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
ảnh thì sẽ giúp ích cho việc phục vụ mang tính chất đầu cuối cho những công đoạn xử lý khác, cũng như kết hợp xử lý tự động các dữ liệu thu thập được, thí dụ máy sẽ tự động thực hiện một số công đoạn quan trọng như trang trí văn bản, phân loại văn bản, đánh chỉ số (numbering), tìm kiếm, thay thế, sao lưu, xóa văn bản hay những thao tác khác thay vì con người phải làm như trước đây. Do đó, khi đã nhận dạng được một đối tượng (văn bản hay hình ảnh) thì việc nhận dạng luôn cả cấu trúc chứa đựng và liên quan với đối tượng đó là thật sự cần thiết. Một trong những cấu trúc quan trọng phổ biến thường được sử dụng mà luận văn quan tâm đề cập đến trong chương này đó là việc phát hiện bảng biểu (detect table) trong ảnh tài liệu.
Một số yếu tố cấu thành nên bảng biểu (structure of table) đó là các ô (cells), các dòng (rows) và các cột (columns). Các yếu tố này lại được tạo ra từ những đường kẻ thẳng nằm ngang, dọc hoặc đường kẻ nghiêng thông thường là 45 độ (đôi khi các đường kẻ này cũng sẽ được ẩn đi). Như vậy giữa các dòng và các cột của bảng thường có khoảng cách là những khoảng trắng hẹp hoặc những đoạn thẳng. Ðây là dấu hiệu nổi bật để người ta có thể áp dụng một số ý tưởng và phương pháp để phát hiện bảng. Thông thường người ta sử dụng một phương pháp hoặc phối hợp cả hai phương pháp để phát hiện bảng trong ảnh tài liệu, đó là việc đi phát hiện chính xác cấu trúc của bảng hoặc là xây dựng một cấu trúc bảng phức tạp đầy đủ từ việc phát hiện các đối tượng rời rạc có mối quan hệ lô- gíc nào đó.
Dựa vào đặc điểm của bảng là các đường kẻ và khoảng trắng dài liên tục phân cách các dòng và cột, có nhiều tác giả đã đề xuất ý tưởng để xây dựng thuật toán phát hiện. Ðiển hình như Rainero, Rahgozar và Fan trong bài báo “Tabular document recognition” rằng họ đã sử dụng kết quả tính toán độ rộng thích hợp của các khoảng trắng giữa các hàng và các cột để phát hiện bảng (Rahgozar - 1994) [15]. Hay một số tác giả khác như K. Summers và D. Rus
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
trong bài viết “Using white space for Automated document structuring” cũng ứng dụng khoảng cách hẹp giữa các cột trong bảng để phát hiện bảng thông qua kỹ thuật lập biểu đồ về mật độ các khoảng trắng (white-space density graph) (Summers-1994) [10]. Hoặc Krishnamoorthy với bài viết “Recognition of table using table grammars” thì căn cứ vào các đường kẻ ngang và dọc tạo nên các hàng và cột để phát hiện bảng (Krishnamoorthy-1995) [11].
Phát hiện bảng là bài toán phát hiện ra cấu trúc bảng có trong trang tài liệu ảnh bao gồm việc phát hiện các cột, các dòng và các ô có chứa dữ liệu trong bảng. Với thuật toán sử dụng trong luận văn này thì không xem xét dựa vào yếu tố đường kẻ và khoảng trắng như một số tác giả đã từng sử dụng như đã nêu. Thay vào đó chúng ta sẽ tìm ra các ký tự tạo thành một từ nhờ vào đặc điểm vùng bao quanh rồi tiếp tục xây dựng mối quan hệ lô-gíc giữa từ đó với các từ lân cận để phát hiện được các khối văn bản, các khối này sẽ làm căn cứ để định vị các cột của bảng nếu có. Ðây là cách phát hiện bảng theo phương pháp quy nạp. Có thể mô tả ý tưởng này như sau:
Ðầu vào (input): các vùng bao quanh của các từ trong đoạn văn bản; Ðầu ra (output): các ô, các dòng, các cột của bảng nếu có.
Tất nhiên là với ý tưởng này thì chúng ta cũng phải xử lý ảnh tài liệu trước đó để có cơ sở dữ liệu thể hiện máy tính đã hiểu được các đoạn, các dòng, các từ và đã định hình được vùng bao quanh của tất cả các từ trong ảnh tài liệu đầu vào. Trên cơ sở ý tưởng này, thuật toán lựa chọn để phân tích trong luận văn này là thuật toán khởi tạo phân đoạn do tác giả Thomas G. Kieninger đề xuất được đặt tên là T-Recs (Table Recognition System).
Chương này sẽ mô tả toàn bộ chức năng của thuật toán T-Recs, phần đầu mô tả thuật toán phân đoạn khởi tạo - phần cốt yếu. Đầu tiên luận văn sẽ trình bày thuật toán phân đoạn khởi tạo do Thomas G. Kieninger [6] đề xuất và sau đó
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
chỉ ra những trường hợp mà thuật toán phân đoạn do G. Kieninger sẽ nhận dạng sai. Tiếp theo luận văn sẽ trình bày thuật toán cải tiến Nhận dạng cấu trúc bảng để có thể nhận dạng chính xác các cột dữ liệu tồn tại trong một bảng.
2.2.1. Các bƣớc khởi tạo và phân đoạn của thuật toán
Trong phương pháp tiếp cận theo hướng quy nạp, người ta có thể xác định
các đường khoảng trắng dài hoặc những đường kẻ từ các cụm từ liên tiếp nhau theo hướng ngang và các cụm từ theo hướng dọc để phát hiện bảng. Song ở đây chúng ta lại xem xét quy nạp theo cách phân khối các cụm từ và cấu trúc của văn bản nhờ vào quá trình phân tích đánh giá các từ. Bằng kỹ thuật đệ quy, chúng ta chọn ngẫu nhiên một từ trong ảnh tài liệu làm từ xuất phát để nhằm phát hiện một khối văn bản mới. Ta xác định vùng bao quanh hình chữ nhật của từ này và tất cả các từ khác thuộc lớp đối tượng văn bản (Quá trình phát hiện từ và vùng bao quanh của từ đuợc trình bày trong chương 2 của luận văn này). Căn cứ vào diện tích vùng bao quanh của từ xuất phát đã chọn, giả sử diện tích vùng bao quanh này có giá trị K (mm2), thì ta lấy chính giá trị K này bành trướng (expansion) theo hai hướng: lên dòng cận trên và xuống dòng cận dưới của từ xuất phát. Mục đích là để tìm ra sự giao nhau của phần diện tích bành trướng này với diện tích của các vùng bao quanh của các từ nằm trên hai dòng bị bành trướng đó nếu có. Theo đó, tất cả những từ có xảy ra sự giao nhau này sẽ được liệt kê vào cùng khối với từ xuất phát, trong hình 2.3 chúng ta chọn từ
consists làm từ xuất phát (Hình 2.3). Như vậy mỗi lần thực hiện bành trướng ta sẽ có được một khối gồm các từ có mối liên hệ lô-gíc với nhau theo giá trị Ki (i = 1,2,3,…n). Tiếp tục thực hiện đệ quy bước bành trướng cho các từ khác và sẽ dừng quá trình đệ quy khi không còn từ nào mới mà chưa được xếp vào một khối nào cả. Kết quả của quá trình này ta sẽ nhận được các khối văn bản trong đó có các từ quan hệ lô-gíc với nhau.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Ðầu vào: Vùng bao quanh hình chữ nhật của các từ; Ðầu ra: Các từ được liệt kê vào từng khối lô-gíc;
(a) (b) (c)
Hình 2.3: Mô tả từ giao nhau vùng bao quanh với từ consists chọn trước. (a): vùng bao quanh của từ. (b): diện tích bành trướng. (c): các từ cùng khối. Nguồn: Kieninger (1998).
Phƣơng pháp:
Bước 1: Chọn tùy ý một từ Wx chưa được đánh dấu là đã mở rộng;
Bước 2: Tạo một khối mới Bi;
Bước 3: Ðánh dấu Wx là đã mở rộng và thêm Wx vào khối Bi;
Bước 4: Tìm tất cả các từ Wj theo chiều ngang ở dòng kế trước và dòng kế sau, sao cho vùng bao quanh của Wj có giao nhau với vùng bành trướng của Wx
Bước 5: Thực hiện Ðệ quy các bước 3, 4 và 5 cho tất cả các từ Wj vừa tìm được;
Bước 6: Nếu như không tìm được từ nào mà chưa đánh dấu và có vùng bao quanh giao nhau với từ khác (hiểu theo ý nghĩa như bước 4) thì tăng i lên một đơn vị và quay lại bước 1.
Bước 7: Thủ tục sẽ dừng lại khi tất cả các từ trong ảnh tài liệu đều đã được đánh dấu là đã mở rộng.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Hình 2.4: Thuật toán phân đoạn khởi tạo đối với một đoạn văn bản
2.2.2. Trƣờng hợp xác định sai cột của thuật toán
Các bước của thuật toán do Thomas Kieninger đề xuất làm việc hiệu quả đối với những khối văn bản được bố trí liên tục trên các dòng, còn khi gặp những khối văn bản mà có nhiều dòng trống rồi lại xuất hiện dòng có văn bản thì sẽ gặp khó khăn khi phải nhận dạng phần văn bản phía dưới các dòng trống đó là thuộc cùng một khối với những dòng trên. Như vậy nên chăng chúng ta phải tiến hành tìm trên mọi dòng của đoạn văn bản. Thí dụ việc phát hiện khối chưa tuyệt đối được cụ thể hóa như trong hình 2.5. Khi thực hiện các bước của thuật toán thì kết quả ta có được hai khối độc lập, khối thứ nhất có ba từ “Làm”, “cho ”, “nên”; khối thứ hai có ba từ “trai”, “đáng” và “trai”. Trong khi đó từ “làm” và từ “trai” ở dòng cuối về mặt lô-gíc là hai vùng bao quanh của chúng có gối chồng lên nhau. Sở dĩ có trường hợp này xảy ra là do khi thuật toán đệ quy đến từ “cho ” thì xét từ “nên” và từ “trai” ở dòng cuối nhưng chỉ có từ “nên ” có vùng bao quanh là bảo đảm điều kiện của thuật toán.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Hình 2.5 : Trường hợp thuật toán nhận dạng sai cột
Hình 2.6: Trường hợp giữa các dòng của một cột trong bảng có ô trắng
Có thể nói trong 7 bước mà G. Kieninger đề xuất, khi thực hiện xuất phát từ một hình bao chữ nhật của một từ, thuật toán chỉ tìm các từ có nằm chồng lên nó trong dòng trước và dòng kế tiếp. Vì vậy trong trường hợp một cột trong bảng mà có nhiều dòng để trống (chẳng hạn khi một ô của bảng kéo dài trên nhiều dòng) thì khi thực hiện tìm các từ ở dòng kế tiếp và dòng trước sẽ không tìm được từ nào thuộc cột đó. Do đó để tìm được chính xác các từ thuộc một cột của bảng thì xuất phát từ một từ phải tìm trên tất cả các dòng của đoạn văn bản. Dưới đây sẽ trình bày những cải tiến các bước của thuật toán phân đoạn trên.
2.2.3. Cải tiến một số bƣớc của thuật toán
Chúng ta tập trung khắc phục hai vấn đề chính đặt ra đối với thuật toán đó là hạn chế đến mức tối đa sự nhầm lẫn khi các từ cùng một khối lại bị phát hiện thành hai hoặc nhiều khối (do tỷ lệ diện tích vùng bao quanh của các từ không
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ đồng đều) và không phát hiện được các từ còn lại của một khối là thuộc khối này khi gặp phải một số dòng trống cục bộ làm cho các từ trong khối phân bố không liên tục, từ đó các từ vốn dĩ thuộc một khối cũng bị phát hiện nhầm thành hai hoặc nhiều khối khác nhau. Như vậy, ta xem xét lại bước thứ tư của thuật toán T-Recs. Thứ nhất, thay vì trước đây chỉ tìm các từ Wj theo chiều ngang ở một dòng trước và một dòng kế tiếp, thì nay ta cho thuật toán tìm các từ Wj
theo chiều ngang ở tất cả các dòng trước và tất cả các dòng kế tiếp. Thực hiện duyệt tất cả các dòng trước và tất cả các dòng kế tiếp như vậy sẽ khắc phục được lỗi khi gặp các dòng trống cục bộ. Nhưng chúng ta cũng nhận thấy rằng điều này chắc chắn sẽ không tối ưu về mặt tốc độ tính toán vì trước đây với mỗi lần gọi đệ quy cho một từ nào đó thì thuật toán chỉ duyệt hai lần (hiểu theo nghĩa số dòng, một dòng trước và một dòng kế tiếp), còn nay thì mỗi lần gọi đệ quy cho một từ thuật toán phải duyệt một số lần bằng tổng số dòng hiện có của ảnh tài liệu trừ đi một đơn vị. Theo đó khi gọi đệ quy cho các bước trong thuật toán thì số lần lặp đi lặp lại mang tính trùng lắp không cần thiết là một con số cực kỳ lớn. Thứ hai, cũng trong bước thứ tư của thuật toán lựa chọn, trước khi tìm các từ Wj thì ta xây dựng điều kiện ràng buộc rằng từ Wj phải có diện tích vùng bao quanh hình chữ nhật giao nhau với diện tích vùng bao quanh tổng hợp bành trướng hình chữ nhật được xác định sau khi đã thực hiện các bước đệ quy từ bước thứ 0 đến bước thứ j - 1 trước đó.Ðiều này sẽ khác với thuật toán lựa chọn ở chỗ thuật toán lựa chọn chỉ đặt ra điều kiện rằng từ Wj có diện tích vùng bao quanh hình chữ nhật giao nhau với diện tích vùng bao quanh hình chữ nhật của chỉ một từ xuất phát trong lần gọi đệ quy này. Về mặt lý thuyết thì khi hiệu chỉnh thuật toán lựa chọn ban đầu theo cách này sẽ làm cho độ phức tạp tính toán tăng lên, làm tốn kém bộ nhớ lưu trữ cũng như phải cân nhắc về khả năng của bộ vi xử lý.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Ðể xem xét liệu rằng diện tích vùng bao quanh hình chữ nhật của một từ Wj
có giao nhau với diện tích vùng bao quanh tổng hợp mở rộng hình chữ nhật sau khi đã thực hiện j – 1 bước đệ quy hay không (j = 1,2,3,…n, n hữu hạn), hơn nữa hầu hết các cấu trúc bảng thường dùng hiện nay đều được tạo thành từ những hàng nằm ngang theo chiều của trục hoành và các cột nằm dọc theo chiều của trục tung, cũng như để đơn giản hóa trong quá trình tính toán, ta đồng nhất hai hình chữ nhật này với hai đoạn thẳng. Sau đó ta xác định các giá trị: tọa độ điểm đầu Xj-min và tọa độ điểm cuối Xj-max của đoạn thẳng đại diện cho từ Wj ; tọa độ điểm đầu Xmin và tọa độ điểm cuối Xmax của đoạn thẳng đại diện cho diện tích vùng bao quanh tổng hợp bành trướng hình chữ nhật. Trong đó, Xj-min và Xj-max được xác định dựa vào trục Ðề-các, Xmin là một biến mà giá trị của
nó luôn có xu hướng giảm về điểm đầu của một khối văn bản và Xmax là một biến mà giá trị của nó luôn có xu hướng tăng lên để phối hợp với Xmin nhằm làm tăng độ rộng của khối lên càng nhiều càng tốt. Với ý tưởng và các đại lượng phát sinh thêm như vậy, ta có thể đưa ra trình bày lại thuật toán có bổ sung một số điểm mới trong bước 1 và bước 4 so với thuật toán lựa chọn ban đầu như sau:
Ðầu vào: Vùng bao quanh hình chữ nhật của các từ; Ðầu ra: Các từ được liệt kê vào từng khối lô-gíc; Phƣơng pháp:
Bước 1: Chọn tùy ý một từ Wx chưa được đánh dấu là đã mở rộng. Xác định tọa độ Xx-min và Xx-max tương ứng của nó, đồng thời gán Xmin := -1, Xmax := 0;
Bước 2: Tạo một khối mới Bi ;
Bước 3: Đánh dấu Wx là đã mở rộng và thêm Wx vào khối Bi ;
Bước 4:
+ Cập nhật tọa độ (Xmin , Xmax):
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
- Nếu Xmin > Xx-min thì gán Xmin := Xx-min
- Nếu Xmax < Xx-max thì gán Xmax := Xx-max
+ Tìm tất cả các từ Wj theo chiều ngang ở tất cả các dòng phía