Project Naptha: Giải Mã Văn Bản Từ Mọi Hình Ảnh Với Công Nghệ OCR Vượt Trội

Sự khác biệt giữa văn bản thuần túy và văn bản “bị mắc kẹt” trong hình ảnh đã ăn sâu vào thói quen duyệt web của chúng ta đến mức ta có thể không nhận ra tính phi trực quan của nó. Đối với giới công nghệ, hạn chế này là hiển nhiên, xuất phát từ việc hình ảnh về cơ bản là các thực thể “raster”, thiếu thông tin ngữ nghĩa để xác định vùng nào có thể chọn và văn bản chứa nội dung gì.

Project NapthaProject Naptha

Ảnh chụp màn hình giao diện Project Naptha, hiển thị khả năng chọn và chỉnh sửa văn bản trực tiếp trên hình ảnh, với các chữ cái được làm nổi bật.

Thị giác máy tính là một lĩnh vực nghiên cứu tích cực, tập trung vào việc dạy máy tính cách “nhìn” mọi thứ, nhận dạng chữ cái, hình dạng và vật thể, thay vì chỉ đơn thuần sao chép các pixel.

Project NapthaProject Naptha

Hình ảnh minh họa khả năng của Project Naptha trong việc nhận diện các dòng chữ và ký tự riêng lẻ trong ảnh, đánh dấu các đường viền của từng con chữ.

Trên thực tế, nhận dạng ký tự quang học (OCR) không phải là công nghệ mới. Nó đã được sử dụng bởi các thư viện và công ty luật để số hóa sách và tài liệu trong ít nhất 30 năm. Gần đây hơn, nó đã được kết hợp với các thuật toán phát hiện văn bản để đọc chữ trên ảnh chụp biển báo đường phố, số nhà và danh thiếp.

Project NapthaProject Naptha

Ảnh cận cảnh thể hiện độ chính xác của Project Naptha sau khi áp dụng các thuật toán xử lý và nhận dạng, làm rõ các ký tự và dòng chữ trong hình ảnh.

Tính năng chính của Project Naptha thực sự là khả năng phát hiện văn bản, hơn là nhận dạng ký tự quang học đơn thuần. Nó sử dụng một thuật toán gọi là Stroke Width Transform (SWT), được phát minh bởi Microsoft Research vào năm 2008, có khả năng xác định các vùng chứa văn bản một cách độc lập với ngôn ngữ. Về một khía cạnh nào đó, nó giống với cách con người nhận biết: chúng ta có thể nhận ra rằng một biển báo có chứa ngôn ngữ viết mà không cần biết ngôn ngữ đó là gì, chứ đừng nói đến ý nghĩa của nó.

Tuy nhiên, nửa giây vẫn là một khoảng thời gian đáng kể, vì các nghiên cứu đã chỉ ra rằng người dùng không chỉ nhận thấy mà còn cảm thấy khó chịu bởi sự chậm trễ chỉ vài trăm mili giây. Để khắc phục điều đó, Project Naptha liên tục theo dõi chuyển động của con trỏ và dự đoán trước nửa giây để khởi động quá trình xử lý trước, tạo cảm giác tức thời.

Kết hợp với các thuật toán khác, như phân tích thành phần liên thông (xác định các chữ cái riêng biệt), ngưỡng Otsu (xác định khoảng cách từ), tập hợp rời nhau (xác định các dòng văn bản), Project Naptha có thể nhanh chóng xây dựng một mô hình các vùng văn bản, từ và chữ cái – tất cả đều hoàn toàn không biết đến các chi tiết cụ thể, những chữ cái cụ thể nào tồn tại.

Khi người dùng bắt đầu chọn một đoạn văn bản, nó nhanh chóng chạy các thuật toán nhận dạng ký tự để xác định chính xác những gì đang được chọn. Quá trình nhận dạng này diễn ra trên cơ sở từng vùng, do đó không lãng phí công sức khi thực hiện trước khi người dùng hoàn tất việc lựa chọn cuối cùng.

Quá trình nhận dạng bao gồm việc phóng to vùng quan tâm để mỗi dòng cao khoảng 100 pixel, có thể lớn tới mức phóng đại 5 lần. Sau đó, nó thực hiện một bộ lọc mặt nạ màu thông minh trước khi gửi nó đến một cổng pure-javascript tích hợp của công cụ Ocrad OCR mã nguồn mở.

Vì quá trình này tốn kém về mặt tính toán, nên việc thực hiện loại nhận dạng “lười biếng” này là hợp lý – trì hoãn cho đến thời điểm cuối cùng có thể để chạy quy trình. Nó có thể mất từ năm đến mười giây để hoàn thành, tùy thuộc vào kích thước của hình ảnh và lựa chọn. Vì vậy, rất có thể khi bạn nhấn Ctrl+C và văn bản được sao chép vào clipboard của bạn, công cụ OCR vẫn chưa hoàn tất việc xử lý văn bản.

Tuy nhiên, điều đó không thành vấn đề, vì thay vì văn bản vẫn đang được xử lý, nó sẽ chèn một cờ nhỏ mô tả vị trí của lựa chọn và phần nào của hình ảnh cần đọc. Trong 60 giây tiếp theo, Naptha theo dõi cờ đó và thay thế nó bằng văn bản cuối cùng đã được nhận dạng ngay khi có thể.

Đôi khi, công cụ OCR tích hợp không đủ tốt. Nó chỉ hỗ trợ các ngôn ngữ có bảng chữ cái Latinh và một số lượng hạn chế các dấu phụ, đồng thời không chứa mô hình ngôn ngữ để đưa ra một loạt các chữ cái phụ thuộc vào xác suất cho ngữ cảnh của nó (ví dụ: thuật toán có thể quyết định rằng “he1|o” phù hợp hơn “hello” vì nó chỉ nhìn vào hình dạng chữ cái). Vì vậy, có tùy chọn gửi vùng đã chọn qua dịch vụ nhận dạng văn bản dựa trên đám mây do Tesseract cung cấp, công cụ OCR mã nguồn mở từng đoạt giải thưởng của Google (trước đây là HP), hỗ trợ hàng chục ngôn ngữ và sử dụng mô hình ngôn ngữ nâng cao.

Nếu ai đó kích hoạt công cụ Tesseract trên một hình ảnh công khai, kết quả nhận dạng sẽ được lưu lại, để những người dùng khác tình cờ thấy cùng một hình ảnh đó sẽ ngay lập tức tải phiên bản văn bản được lưu trong bộ nhớ cache.

Có một lớp các thuật toán cho một cái gì đó gọi là “Inpainting”, đó là về việc tái tạo hình ảnh hoặc video mặc dù thiếu các phần. Điều này được sử dụng rộng rãi để phục hồi phim và thường thấy trong Adobe Photoshop dưới dạng tính năng “Content-Aware Fill”.

Project Naptha sử dụng các vùng được phát hiện dưới dạng văn bản làm mặt nạ cho một thuật toán inpainting cụ thể được phát triển vào năm 2004 dựa trên Phương pháp Fast Marching của Alexandru Telea. Mặt nạ này có thể được sử dụng để điền vào các điểm mà văn bản được lấy từ đó, tạo ra một bảng trắng để có thể in nội dung mới.

Với một số phân tích bố cục sơ khai và các số liệu văn bản, Project Naptha có thể tìm ra các tham số căn chỉnh của văn bản (căn giữa, căn đều, căn phải hoặc căn trái), kích thước phông chữ và độ đậm của phông chữ (đậm, nhạt hoặc bình thường). Với thông tin đó, nó có thể in lại văn bản bằng một phông chữ tương tự, ở cùng một vị trí. Hoặc, bạn thậm chí có thể thay đổi văn bản để nói bất cứ điều gì bạn muốn nó nói.

Nó thậm chí có thể được xâu chuỗi vào một dịch vụ dịch trực tuyến, Google Dịch, Microsoft Dịch hoặc Yandex Dịch để thực hiện dịch tài liệu tự động. Với công cụ OCR nâng cao của Tesseract, điều này có nghĩa là có thể đọc văn bản bằng các ngôn ngữ có các bảng chữ cái khác nhau (tiếng Trung, tiếng Nhật hoặc tiếng Ả Rập) mà bạn có thể không gõ được vào công cụ dịch.