Hình 22 chỉ ra một thí dụ mà thuật toán do G. Kieninger có thể nhận dạng được các cột trong bảng. 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.
3.2.2. Cải tiến các bước của thuật toán phân đoạn khởi tạo - T-Recs++ T-Recs++
Do các cột của một bảng đều nằm ở các vị trí là những khoảng khác nhau theo chiều ngang, vì vậy để cải tiến thuật toán ta sẽ đi xác định toạ độ nhỏ nhất - Xminvà lớn
nhất - Xmax theo chiều ngang của một khối. Khi duyệt qua các từ cần thêm vào khối
nếu như toạ độ nhỏ nhất và lớn nhất theo chiều ngang của khối có giao với khoảng (Xmin, Xmax) thì ta sẽ thêm từ đó vào khối và cập nhật lại toạ độ Xmin, Xmax của khối đó.
Đầu vào của thủ tục là hình bao chữ nhật của các từ, đầu ra là các khối lôgíc và các từ thuộc từng khối lôgic.
Các bước cải tiến của thuật toán phân đoạn khởi tạo sẽ gồm 8 bước như sau:
1) Gán Xmin= -1 và Xmax = 0.
2) Tìm một từ bất kỳ nào đó Wx mà chưa được đánh dấu là mở rộng (expanded).
Tính các toạ độ XXmin, XXmax lần lượt là 2 toạ độ nhỏ nhất và lớn nhất theo chiều ngang của hình bao của từ Wx.
3) Tạo một khối mới Bi
4) Đánh dấu Wx là đã mở rộng và thêm Wx vào Bi. Xét:
Nếu Xmin = -1 thì gán Xmin= XXmin.
Nếu Xmin > XXmin thì gán Xmin= XXmin.
Nếu Xmax < XXmax thì gán Xmax = XXmax.
5) Tìm tất cả các từ Wj nằm theo chiều ngang ở các dòng trước và những dòng
kế tiếp (thuộc đoạn văn bản), sao cho:
(Xmin , Xmax) ∩ (XJmin , XJmax) ≠ Φ
Trong đó các toạ độ XJmin, XJmax lần lượt là 2 toạ độ nhỏ nhất và lớn nhất theo chiều ngang của hình bao của từ Wj.
6) Thực hiện đệ quy các bước 4, 5, và 6 cho các từ Wj vừa tìm được.
7) Nếu không tìm được từ nào mà chưa đánh dấu và không thoả mãn điều kiện 5
thì tăng i lên một và quay trở lại bước 1.
8) Dừng thuật toán lại nếu không tìm thấy từ nào mà chưa được đánh dấu là mở
rộng trong tài liệu.
Hình 23 dưới đây mô tả các bước thuật toán phân đoạn đã cải tiến. Nếu như trên Hình 21, thuật toán trước có thể phân tách các từ vào hai khối riêng rẽ thì với các bước đã cải tiến trên thuật toán sẽ nhóm các từ trong Hình 21 vào thành một khối duy nhất (hình cuối bên phải của Hình 23).
Trong bước thứ 5 của thuật toán, khi thực hiện tìm những từ thoả mãn để đưa vào một khối, thuật toán sẽ tìm tất cả các từ ở các dòng trước và các dòng kế tiếp chứ không phải chỉ tìm ở dòng trước và dòng kế tiếp của dòng đang xét. Do đó việc nhận dạng đúng các cột của bảng từ Hình 22 được minh hoạ trên Hình 24.
Hình 23. Mô phỏng việc thực hiện các bước sau khi đã cải tiến thuật toán T-Recs++