NHẬN DẠNG VĂN BẢN

        Khi đọc văn bản, chúng ta hầu như không quan tâm đến việc những con chữ trên giấy trắng mực đen được chuyển vào tiềm thức của chúng ta như thế nào.

    Mức độ phức tạp

        Mọi chuyện có vẻ rất dễ dàng. Tuy nhiên nếu phân chia quá trình đọc văn bản thành các tác vụ cơ bản thì máy tính hiện nay thực hiện các tác vụ đó khá chật vật và không phải khi nào cũng mang lại kết quả mong muốn.

        Những nhà lập trình đã nhiều năm dồn công sức để xây dựng các hệ nhận dạng văn bản (gọi tắt là OCR - Optical Character Recognition). Nhiều hệ thống nhận dạng đã làm việc khá tốt với các trang văn bản rõ nét, nhưng xét tổng thể thì vẫn còn khoảng cách khá lớn giữa tính năng của các hệ nhận dạng và đòi hỏi thực tế.

        Ða số các hệ OCR làm việc với hình ảnh nhị phân (bitmap) của các trang văn bản được đưa vào bằng Scanner hoặc nhận từ máy Fax. Công việc đầu tiên của quy trình nhận dạng là phân thành các khối văn bản dựa trên đặc thù trang in như lề phải, lề trái. Từng khối văn bản lại được phân thành những ô mực nhỏ (tương ứng với các chữ cái). Chương trình nhận dạng sẽ tính xem từng ô mực tương ứng với chữ cái nào và xác định nội dung trang văn bản đó.

        Các hệ OCR khá nhất hiện nay có thể đạt mức độ chính xác đến trên 99% đối với các trang văn bản sạch sẽ, rõ nét và font chữ chuẩn. Con số này có vẻ rất khả quan, nhưng thực ra việc sửa lổi sau khi nhận dạng vẫn đòi hỏi nhiều công sức vì một trang văn bản thông thường khoảng 1500 chữ cái, với độ chính xác thậm chí lên tới 99,9% thì cũng vẫn còn 1-2 chữ sai trên một trang in.

        Thực tế các trang văn bản còn xa mới đạt được mức độ sạch sẽ, tinh tươm, chuẩn mực. Nhiễu bẩn hiện tại là một vấn đề lớn đối với các hệ OCR, bởi vì chỉ cần một vài chấm mực nhỏ chữ c có thể biến thành chữ o. Nếu tài liệu đã qua photocopy thì các nét mảnh có thể trở thành đứt đoạn, khi đó lổi sẽ nhiều vì nhiều hệ OCR sẽ chuyển mỗi ô mực liền nét thành một chữ cái riêng.

        Nếu văn bản có rất sạch sẽ đi chăng nữa thì sự phong phú của các kiểu loại chữ cũng là một thách thức lớn với các hệ thống nhận dạng. Các kiểu chữ mang tính nghệ thuật ngày càng nhiều, và ngay cả các loại chữ chuẩn cũng không hoàn toàn đồng nhất ngay cả khi trùng tên, chẳng hạn font chữ Times của máy in Hewlett-Packard DeskJet khác font cùng tên trên máy in Apple LaserWriter.

        Các thuật toán nhận dạng phải đủ mềm dẻo để xử lý khía cạnh tế nhị này. Nếu không đủ mềm dẻo thì một khác biệt rất bé của kiểu chữ cũng đòi hỏi quản lý và xử lý riêng, ngược lại, quá mềm dẻo thì lổi có thể rất nhiều, chẳng hạn chữ b và chữ h khác nhau không nhiều có thể bị đồng nhất làm một.

    Xử lý trang in

        Các hệ OCR thường làm việc với các hình ảnh nhị phân lớn, là kết quả đưa trang văn bản vào từ Scanner. Thông thường trang văn bản được quét vào với độ phân giải 300 x 300 điểm/inch (dpi). Một trang văn bản khổ A4 (8,5 x 11 inch) với độ phân giải này chiếm khoảng 1,2MB bộ nhớ. Các loại Scanner đắt tiền có độ phân giải lớn hơn nữa nhưng không mang ý nghĩa thực tế lớn vì hình quét vào chiếm nhiều bộ nhớ và nếu trang văn bản chất lượng tồi thì phóng to nhiễu sẽ nhiều hơn. Trên các loại máy Fax, văn bản được quét với độ phân giải 200 x 100 ở chế độ thông thường và 200 x 200 ở chế độ cao. Các trang văn bản qua máy Fax có đặc thù riêng, nhiều hệ OCR được thiết kế các chức năng riêng để xử lý đặc thù này.

        Các hệ OCR tốt nhất hiện nay còn được bổ sung thêm tính năng "nhận dạng tài liệu" (Document Recognition) - tức là nhận dạng thêm các thông tin định dạng trang in. Mỗi hệ thống nhận dạng dùng các thủ thuật khác nhau để xử lý công việc này. Ví dụ hệ nhận dạng văn bản ExperVision sau khi phân thành ô mực liền tiến hành duyệt từ đầu trang, gộp các ô mực thành từ, nhiều tự gộp thành dòng theo hướng (với độ chính xác đến 1/2 độ). Các dòng gộp lại thành mục căn cứ vào lề, độ dài, kiểu chữ, dấu ngăn cách,... Ngoài ra còn dùng thêm các thông tin như đường kẻ, khối hộp, màu nền để phân đoạn. Bước cuối cùng là xác định thứ tự các đoạn trong trang in. Với văn bản một cột, điều này thực hiện dễ dàng, nhưng với văn bản nhiều cột và các cột phân bố tương đối tự do như báo chí thì phức tạp hơn. Thuật toán bắt đầu xử lý từ khối trên bên trái và chuyển dần xuống dưới, đến cuối trang quay lên trên xử lý cột tiếp theo. Các bảng biểu có trong trang in ảnh hưởng lớn đến thuật toán này, đa số các hệ OCR cho phép người dùng chỉnh lý lại khi nhận dạng có sai sót.

        Sự khác biệt giữa hình ảnh và văn bản cũng là một vấn đề được các hệ OCR lưu ý. Ða số các hệ nhận dạng dùng các tham số thống kê để phân biệt chữ và hình ảnh (đối với văn bản, màu trắng và đen phân bố với nhịp điệu chuẩn, còn trong hình ảnh thì các pattern đen trắng phân bố không đều). Thuật toán đơn giản nhất là lấy phần trăm các điểm đen/trắng làm chỉ tiêu phân biệt, nhưng khi đó chữ quá đậm có thể bị xem là hình ảnh.

        Hệ OmniPage của hãng Caere dùng thuật toán tương tự để tách con chữ ra khỏi nền xám. Trang văn bản được quét vào với các mức độ xám khác nhau. Hệ xác định một "ngưỡng xám", khi đó điểm nào có mức độ đậm dưới ngưỡng thì quy thành màu đen và trên ngưỡng quy thành màu trắng. Chọn ngưỡng xám thích hợp là cả một vấn đề. Ngưỡng xám chọn cao có thể làm các con chữ mảnh đi vì các điểm biên của con chữ với màu trung gian giữa màu chữ và màu nền sẽ thành điểm trắng.

        Nhận dạng bảng biểu cũng là đặc tính cần phải có nếu làm việc với các báo biểu. Hệ ExperVision nhận dạng bảng biểu bằng cách tìm các cột dẹt mang tính "điều hòa": thông thường các cột được căn giữa hoặc căn trái, các cột được đánh số và nội dung các cột là số. Tách bảng biểu ra được sẽ thuận lợi nhiều cho việc xử lý văn bản sau này.

    Xử lý con chữ

        Sau khi xử lý trang in, từng ô mực được chuyển thành con chữ. Có nhiều phương pháp nhận dạng, nhưng nói chung được quy về 2 kiểu: nhận dạng theo mẫu (template-base) và nhận dạng theo tính chất (feature - base). Tư tưởng của phương pháp nhận dạng theo mẫu là so sánh với các mẫu chữ lưu sẵn, còn nhận dạng theo tính chất quy ô mực thành các tính chất quy định cách thức viết nên con chữ.

        Phương pháp nhận dạng theo mẫu thuộc loại cổ điển quy mỗi ô mực thành một ma trận điểm 10 x 10. Các con chữ có thể có kích cỡ khác nhau nhưng đều quy thành ma trận 10 x 10 và so sánh với mẫu để chọn mẫu gần nhất. Có nhiều cách thức so sánh, chẳng hạn thông qua số lượng điểm khác biệt. Tuy nhiên do sự khác biệt giữa các font chữ nhiều khi còn lớn hơn sự khác biệt giữa các con chữ cùng font (chẳng hạn chữ b và chữ h - 2 chữ này trong cùng một font còn có vẻ gần nhau hơn so với cùng chữ trong font), bởi thế thông thường các mẫu được phân theo font. Sau khi xử lý một vài từ, hệ thống tự động xác định các con chữ hay dùng và định font cho thích hợp.

        Chương trình ExperVision dùng thuật toán tự học, tự tìm các điểm quan trọng đặc trưng cho con chữ. Hệ lấy ra 30 con chữ từ 30 tài liệu rồi tính ra 100 điểm đặc trưng nhất để làm mẫu.

        Hệ OmniPage nhận dạng theo tính chất, trong hệ có 100 "hệ chuyên gia" khác nhau, thực chất là các thuật toán nhận dạng 100 con chữ (từ A.. Z. a.. z, số, các dấu). Các con chữ được nhận dạng theo các tính chất như gạch nghiêng, đứng, nghiêng, điểm uốn, phản xạ, chiều dài và hướng các dấu gạch. Hệ chuyên gia còn xem xét hình chiếu dọc, ngang (cộng với các điểm đen theo hàng/cột) để xác định thêm các tham số khác. Kiểu nhận dạng này dựa trên tư duy quen thuộc sau: chẳng hạn chữ t gồm một đường thẳng đứng cắt một vạch ngang, có thể có thêm các gạch chân. Nếu nhận dạng theo mẫu phải lưu tất cả các mẫu khác nhau (hệ ExperVision chứa tới 2100 loại chữ). Hệ OmniPage dạy cho máy tính cách "đọc" từng con chữ, ví dụ chữ k gồm một vạch đứng và hai vạch chéo, còn các tham số khác chỉ là tham số phụ.

        Với kiểu nhận dạng này, nhiễu có thể gây ra các vấn đề đau đầu, bởi vì bỏ đi một vài điểm không ảnh hưởng nhiều đến việc nhận dạng theo mẫu nhưng có thể phân cắt các đường thẳng hoặc đường cong và dẫn đến kết quả sai. Việc xuất hiện thêm một số điểm cũng vậy, số 5 có thể nhận dạng thành số 6.

        Còn một khía cạnh nữa là việc đọc bằng mắt có thể phân biệt được chữ h và b dựa vào ngữ cảnh. Theo hướng này, nhiều hệ OCR có từ điển để trợ giúp thêm, tuy nhiên cách này cũng không giải quyết trọn vẹn vấn đề khi chữ không có trong từ điển hoặc khi các phương án đều có trong từ điển (chẳng hạn chữ if và it).

        Hãng Xerox Imaging System có phần mềm Lexifier xử lý vấn đề này khá tốt, ví dụ nó biết chữ u luôn đi sau chữ q và i thì đi trước chữ e, số điện thoại Mỹ có dạng XXX-XXX-XXXX...

    Kết luận

        OCR là một trong nhiều ứng dụng khá rộng rãi của hướng nghiên cứu các hệ chuyên gia, kết quả đưa ra khá tốt với những người phải bấm vào máy tính các văn bản rõ ràng. Tuy nhiên, việc soát lổi sau khi nhận dạng vẫn phải thực hiện. Trang in ra trên máy in Laser có ít lổi, nhưng sách báo thì lổi nhiều hơn. OCR là một ví dụ về mức độ phức tạp khi bắt máy tính làm việc gì đấy thay cho con người. Khó tính quá (cứng nhắc) không được vì không xử lý được nhiễu, còn dễ tính quá (mềm dẻo) thì dễ lầm từ.