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 đồ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
Miễn cưỡng sẽ không hạnh phúc
Hình 3.3: Mô tả kết quả thuật toán nhận dạng khối chưa tuyệt đối.
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ý.
Để 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ể đề xuất 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):
- Nếu Xmin= -1 thì gán Xmin := Xx-min - 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 trước và tất cả các dòng phía sau, sao cho tọa độ (Xj-min , Xj-max) có giao nhau với tọa độ (Xmin , Xmax);
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.
Như vậy, với khối như đã trình bày ở hình 3.3, sau khi đã điều chỉnh thuật toán ở bước 1 và bước 4 như trên thì khởi đầu thuật toán giả sử ta chọn từ “Miễn”
làm từ xuất phát, tọa độ của từ “Miễn” sẽ được cập nhật vào tọa độ (Xmin , Xmax), tiếp đến phát hiện được từ “sẽ” và từ “hạnh”, vì có sự cập nhật tọa độ (Xmin , Xmax) và so sánh sự giao nhau với tọa độ của từ “phúc” nên từ “phúc” cũng được nhận dạng vào khối này. Tiếp tục đệ quy với từ xuất phát là từ “phúc” nên đã phát hiện được hai từ còn lại là từ “không” và từ “cưỡng”. Kết quả tất cả các từ này được thuật toán phát hiện là thuộc cùng một khối (Hình 3.4).
Thuật toán chỉ quan niệm rằng văn bản trong ảnh tài liệu được trình bày theo hướng thẳng đứng, phông chữ chân phương và vùng bao quanh của mỗi từ là vùng bao quanh hình chữ nhật. Nếu xét một ảnh tài liệu đầu vào với văn bản được trình bày theo kiểu chữ in nghiêng (Italic) hoặc được trình bày với một số loại phông chữ đặc thù tạo ra hình dáng chữ có góc nghiêng đáng kể, thì nếu vẫn tiếp tục sử dụng hai tọa độ đầu cuối của đoạn thẳng đại diện cho vùng bao quanh của một từ lúc này số liệu tính toán để tìm điều kiện giao nhau sẽ bị sai số lớn. Từ đó thuật toán sẽ lại gặp phải những khó khăn về sự sai lệch khoảng cách dẫn đến phát hiện khối không chính xác. Có thể lúc đó để giảm thiểu sai số ta sẽ tìm cách tính toán xây dựng vùng bao quanh của mỗi từ là vùng bao quanh hình bình hành và tính toán lại tọa độ sao cho tọa độ đoạn thẳng đại diện cho vùng bao quanh hình bình hành chính là tọa độ của đoạn thẳng chia hình bình hành thành hai phần bằng nhau theo hướng ngang.