2 điểm bởi GN⁺ 2024-10-29 | 1 bình luận | Chia sẻ qua WhatsApp
  • InkSight của Google Research khôi phục ảnh chụp chữ viết tay thành mực số ở mức từng nét bút, nhằm lưu trữ và chỉnh sửa sổ tay giấy như sổ tay số mà không cần thiết bị chuyên dụng
  • Khác với OCR đơn thuần chỉ dừng ở việc chép lại văn bản, InkSight khôi phục quỹ đạo nét viết đã tạo ra chữ, giúp người dùng xem lại và viết tiếp trong khi vẫn giữ nguyên phong cách chữ viết tay
  • Thay vì chỉ trích xuất đặc trưng hình học, mô hình học cả đọc và viết cùng lúc, dùng bộ mã hóa ViT và encoder-decoder mT5 để xử lý nhận dạng từ và sinh nét bút
  • Với toàn bộ trang, hệ thống dùng OCR để tìm bounding box theo từng từ, rồi derender từng từ riêng lẻ trước khi thay thế chữ viết dạng pixel bằng các nét bút đã khôi phục
  • Trong đánh giá, đầu ra Large-i khoảng 1 tỷ tham số được xem là gần giống mực số do con người tạo ra trong nhiều trường hợp, và 87% được đánh dấu là bản truy vết tốt hoặc chỉ có lỗi nhỏ

Vì sao muốn biến chữ viết tay trên giấy thành mực số

  • Sổ tay số mang lại độ bền, khả năng chỉnh sửa và lập chỉ mục, nhưng nhiều người vẫn ghi chép bằng giấy và bút
  • Quá trình chuyển chữ viết tay vật lý sang dạng số được gọi là derendering, và kết quả là các nét bút lưu chuyển động của bút hoặc ngón tay dưới dạng chuỗi điểm
  • Cách biểu diễn này còn được gọi là biểu diễn chữ viết “online” hoặc mực số
  • OCR thông thường chép lại chữ viết tay thành tài liệu văn bản, còn mực số ghi lại tài liệu viết tay dưới dạng tập hợp các nét
    • Người dùng có thể chỉnh sửa bằng tay một cách tự nhiên hơn
    • Có thể giữ được phong cách chữ và cảm giác chữ viết tay thực tế
    • Có thể sắp xếp và tích hợp ghi chú cùng hình ảnh, văn bản, liên kết và các tính năng hỗ trợ số
  • Trước đây đã có các cách dùng bút thông minh, giấy chuyên dụng hoặc phần mềm riêng, nhưng phần cứng bổ sung và chi phí là rào cản triển khai

InkSight khôi phục điều gì

  • InkSight: Offline-to-Online Handwriting Conversion by Learning to Read and Write trích xuất các nét bút đã tạo ra chữ từ ảnh chụp sổ tay viết tay
  • Chỉ dùng ảnh làm đầu vào mà không cần thiết bị riêng, và có thể xem mô hình cùng mã suy luận tại GitHub repo
  • Không phụ thuộc vào các thành phần hình học điển hình như gradient, đường viền hay hình dạng của ảnh
  • Mô hình học đồng thời hai năng lực
    • Đọc: nhận dạng từ trong ảnh
    • Viết: xuất ra các nét trông giống chữ viết tay
  • Sự kết hợp này được thiết kế để hoạt động vững hơn với đầu vào khó như điều kiện ánh sáng, che khuất và hình thức thể hiện đa dạng

Luồng hệ thống để xử lý ở mức toàn trang

  • Mục tiêu cơ bản là ghi lại quỹ đạo ở mức nét bút của chữ viết tay để người dùng có thể lưu vào ứng dụng ghi chú mình muốn
  • Bên trong, một mô hình OCR có sẵn nhận diện các từ viết tay, sau đó mô hình chuyển từng từ đó thành nét bút
  • Để tăng tính tái lập, tái sử dụng và dễ triển khai, hệ thống kết hợp bộ mã hóa ViT và encoder-decoder mT5 vốn được dùng rộng rãi
  • Vì cần xử lý ảnh kích thước bất kỳ, nhiều độ phân giải và lượng nội dung khác nhau, khả năng mở rộng là thách thức chính
  • Việc học trực tiếp từ đầu vào độ phân giải rất cao và chuỗi đầu ra dài làm chi phí tính toán tăng mạnh, nên quá trình derender trang được chia thành ba bước
    • Dùng OCR để trích xuất bounding box theo từng từ
    • Derender từng từ riêng biệt
    • Thay thế biểu diễn pixel offline bằng các nét bút đã derender
  • Để giảm khác biệt miền giữa ảnh tổng hợp của mực được render và ảnh chụp thật, nhóm nghiên cứu dùng tăng cường dữ liệu
    • Ngẫu nhiên hóa góc mực, màu sắc và độ rộng nét
    • Thêm nhiễu Gaussian và nền phức tạp

Cách học đọc và viết cùng lúc

  • Việc thu thập đủ cặp ảnh và mực số đáp án cho học có giám sát là tốn kém, mất thời gian, và dường như chưa có bộ dữ liệu đủ đa dạng cho tác vụ này
  • InkSight dùng cấu hình học đa nhiệm để tổng quát hóa mà không cần lượng lớn mẫu ghép cặp
  • Hỗn hợp huấn luyện gồm năm loại tác vụ
    • Tác vụ derendering sinh mực số từ ảnh
    • Tác vụ derendering sinh mực số từ ảnh cùng văn bản OCR nhận dạng được
    • Tác vụ nhận dạng xuất văn bản từ ảnh thật
    • Tác vụ nhận dạng xuất văn bản từ ảnh tổng hợp
    • Tác vụ lai nhận dạng-derendering xuất đồng thời văn bản và mực
  • Mỗi tác vụ dùng văn bản đầu vào riêng theo tác vụ để mô hình có thể phân biệt trong cả huấn luyện lẫn suy luận
  • Việc học đọc giúp định vị và trích xuất chính xác hơn các thành phần văn bản trong ảnh
  • Việc học viết giúp biểu diễn vector đầu ra tuân theo động lực học vật lý và thứ tự nét gần với cách con người viết

Biểu diễn mực số và token hóa

  • Quá trình huấn luyện dùng các cặp mực số tương ứng với ảnh văn bản
  • Mực số được lấy mẫu từ quỹ đạo viết tay thời gian thực, rồi biểu diễn thành chuỗi nét
  • Mỗi nét là một chuỗi điểm được lấy mẫu ở tốc độ cố định
    • Ví dụ là lấy mẫu 50 điểm mỗi giây
  • Ảnh tương ứng được tạo bằng cách render mực thành bitmap ở độ phân giải chỉ định
  • Quá trình này tạo ra ánh xạ pixel-nét làm tiền đề cho cặp đầu vào-đầu ra của mô hình
  • Bộ token hóa mực chuyển các điểm sang định dạng phù hợp với LLM
    • Mỗi điểm được chuyển thành hai token mã hóa riêng tọa độ x và tọa độ y
    • Chuỗi token mực bắt đầu bằng b, biểu thị điểm bắt đầu nét
    • Sau đó là các token tọa độ của các điểm đã lấy mẫu

Dữ liệu đánh giá và các mô hình so sánh

  • Nhóm nghiên cứu thu thập một bộ dữ liệu đánh giá riêng để đo hiệu năng
  • Dữ liệu đánh giá bắt đầu từ dữ liệu OCR, rồi được bổ sung các cặp truy vết do con người tạo ra khi người tham gia trực tiếp đồ lại ảnh văn bản được đưa ra
  • Ba biến thể mô hình được huấn luyện
    • Small-p: khoảng 340 triệu tham số, cấu hình public
    • Small-i: cấu hình in-house
    • Large-i: khoảng 1 tỷ tham số
  • Mốc so sánh là baseline General Virtual Sketching
  • Trong cả đánh giá tự động lẫn đánh giá bởi con người, biểu diễn vector do hệ thống tạo ra vừa gần với ảnh đầu vào về mặt ngữ nghĩa và hình học, vừa tương tự dữ liệu mực số do con người tạo

Khác biệt thể hiện trong đánh giá định tính

  • Nhóm nghiên cứu so sánh mô hình và GVS trên các bộ dữ liệu đánh giá công khai IAM, IMGUR5K và một bộ dữ liệu phác thảo ngoài miền
  • Các mô hình InkSight nhìn chung phản ánh chính xác nội dung văn bản và bỏ qua nền không liên quan về mặt ngữ nghĩa
  • Hệ thống cũng xử lý được đầu vào bị che khuất, cho thấy lợi thế của tri thức đọc đã học được
  • GVS thường tạo nhiều nét lặp và gặp khó trong việc phân biệt nền với tiền cảnh
  • Large-i giữ lại nhiều chi tiết hơn và chấp nhận được đa dạng phong cách ảnh hơn
  • Trên dữ liệu phác thảo ngoài miền, các mô hình nhìn chung vẫn derender được phác thảo đơn giản, nhưng vẫn xuất hiện artifact như nét thừa hoặc lệch

Đánh giá con người và các giới hạn

  • Hiện chưa có chỉ số hay benchmark được thiết lập sẵn cho đánh giá định lượng trong lĩnh vực này
  • Trong đánh giá con người, dữ liệu truy vết do người tạo từ HierText dataset được dùng làm đối chứng, còn đầu ra mô hình trên cùng mẫu được dùng làm nhóm thử nghiệm
  • Người đánh giá xem đồng thời ảnh gốc và mẫu mực số đã render, rồi trả lời hai câu hỏi
    • Đầu ra có phải là bản truy vết hợp lý của ảnh đầu vào hay không
    • Mực số này có thể trông như do con người tạo ra hay không
  • Có 16 người tham gia đánh giá, đều quen với mực số nhưng không tham gia nghiên cứu
    • Mỗi mẫu được 3 người đánh giá
    • Kết quả được tổng hợp theo đa số
  • Phần lớn mực derender do Large-i tạo ra được đánh giá là gần với mức do con người tạo
  • 87% đầu ra của Large-i được đánh dấu là bản truy vết tốt hoặc chỉ có lỗi nhỏ
  • Trong ví dụ so sánh, mọi mô hình đều xử lý sai dấu ngoặc kép ở mẫu dòng trên, còn ở mẫu dòng dưới có trường hợp bản truy vết của con người chỉ tập trung vào từ khóa chính nên bỏ lỡ hầu hết các thành phần khác
  • Bản truy vết của con người cũng không khớp hoàn toàn với ảnh gốc, cho thấy việc truy vết phần chữ viết tay trong HierText vốn phức tạp và khó

Kết luận

  • InkSight là một trong những cách tiếp cận đầu tiên nhằm chuyển ảnh chụp chữ viết tay thành mực số
  • Cấu hình huấn luyện được thiết kế để hoạt động ngay cả khi không có dữ liệu huấn luyện ghép cặp
  • Hệ thống hoạt động vững trên nhiều loại đầu vào, có thể áp dụng cho toàn bộ sổ tay viết tay và cũng tổng quát hóa phần nào sang các bản phác thảo ngoài miền
  • Đây là cách tiếp cận có thể xây dựng bằng các thành phần tiêu chuẩn mà không cần mô hình hóa quá phức tạp

1 bình luận

 
GN⁺ 2024-10-29
Ý kiến trên Hacker News
  • Tôi đã mua một bảng trắng gắn tủ lạnh cỡ nhỏ, và khi kết hợp với tính năng trên iPhone chụp ảnh chữ viết tay rồi sao chép thành văn bản thì nó hoạt động khá tuyệt
    Không phải lúc nào cũng hoàn hảo và chữ của tôi cũng không hoàn hảo, nhưng đủ tốt để chỉ cần sửa một hai ký tự rồi gửi đi
    Hiệu quả hơn vì không phải gửi cả ảnh, không cần nhìn màn hình để gõ hay vuốt, vợ/chồng tôi có thể xem danh sách bất cứ lúc nào, và cũng không cần đưa lên đám mây
    Nó không cần nguồn điện, bút dạ dùng được lâu, và khi đồ trong tủ lạnh hết thì việc cầm ngay cây bút lên viết vào tủ lạnh tạo cảm giác rất tự nhiên

    • Ý tưởng khá hay. Có vẻ bài này sẽ khiến doanh số bảng trắng gắn tủ lạnh trong nhóm độc giả HN tăng nhẹ
    • Nếu muốn tránh dùng bút dạ thì máy tính bảng viết LCD cũng là một cách. Nó trông và hoạt động hơi giống Etch A Sketch, nhưng dùng bút stylus và màn hình LCD, và có thể mua với giá dưới 10 euro
  • Rất tuyệt. Có một ứng dụng thú vị của kiểu công nghệ này. Chữ viết tay của tôi khá xấu, và khi viết nhanh thì còn tệ hơn
    Khi giảng dạy, chữ tôi viết trên bảng nhiều lúc tệ hơn rất nhiều so với mong muốn
    Có lẽ có thể huấn luyện hệ thống này bằng nét chữ tôi viết thật chậm và thật nắn nót, rồi để nó biến nét chữ xấu viết nhanh trên bảng trắng trong lúc dạy thành phiên bản chữ của tôi gọn gàng hơn

    • Nghe có thể hơi lạ, nhưng tôi tò mò không biết bạn đã thử dùng bút máy chưa
      Cảm giác phản hồi của nó hoàn toàn khác bút bi, và còn bị ảnh hưởng bởi loại giấy cũng như mực. Việc viết trở nên bớt “có thể đoán trước” hơn và thú vị hơn một chút
      Bạn có thể bắt đầu với loại rẻ 5–15 đô la, ngòi cỡ trung, một số người sau đó chuyển sang sưu tầm bút máy, nhưng phần lớn việc viết trên giấy của tôi là bằng cây Pelikan Jazz khoảng 20 đô la
    • Cải thiện chữ viết tay không khó. Trên bảng trắng, bạn có thể bắt đầu bằng cách chỉ viết chữ in khối trước
      Lúc đầu sẽ chậm hơn, nhưng không kéo dài lâu
      Đó là một trong những lời khuyên “thay đổi cuộc chơi” tôi nhận được khi làm gia sư ở đại học. Lời khuyên kia là luôn chép sách từ sau ra trước, rất hữu ích nhưng giờ có phần hơi lỗi thời
    • Bạn cũng có thể tìm giáo trình luyện chữ để cải thiện chữ viết tay. Luyện chậm sẽ giúp nét chữ khi viết nhanh cũng đẹp hơn
    • Nếu viết công thức đủ tốt, bạn có thể chuyển chúng sang LaTeX theo thời gian thực rồi chạy trong notebook tính toán
      Đặc biệt nếu kết hợp LaTeX với phần âm thanh giải thích công thức thì còn có thể sửa lỗi
    • Vậy thì có phải chỉ cần dùng máy chiếu laser, bàn phím và hộp văn bản trên canvas là được không
  • Chỉ nhìn tiêu đề thôi, tôi đã ngây thơ nghĩ đây là bài viết về cách lấy lại kỹ năng đã mất để lại viết ghi chú bằng chữ tay cho dễ đọc và đẹp
    Đây đúng là vấn đề tôi đang gặp phải sau nhiều năm gõ quá nhiều và viết tay quá ít
    Đúng là nghiên cứu thực tế của Google có giúp ghi chú số của tôi bớt lộn xộn hơn. Nhưng tôi không muốn phải dựa vào đổi mới công nghệ để làm chữ viết tay của mình đẹp lên

    • Nếu thật sự muốn cải thiện, trên YouTube có hẳn một mảng nội dung dành riêng cho việc đó. Chọn kiểu chữ bạn muốn rồi luyện tập, luyện tập, luyện tập là được
      Cũng có những người phát hành miễn phí hoặc bán giấy luyện có dòng kẻ đặc biệt để giúp căn nhiều chiều cao khác nhau hoặc giữ độ nghiêng hoàn hảo
      Giống như khi mới học viết, bạn phải tự dành thời gian và sự chú ý để làm điều đó
    • Nếu muốn cải thiện chữ viết tay, một cách hay là dùng bút máy
      Chữ của tôi đẹp hơn hẳn khi viết bằng bút máy so với bút bi hay bút gel. Có vẻ vì bút máy buộc bạn phải cầm ở vị trí và góc tối ưu. Nó không phải kiểu cứ ấn xuống giấy ở bất kỳ góc nào cũng viết được, nên nghiêm ngặt hơn, đồng thời cũng cho cảm giác trơn hơn và phản hồi tốt hơn
      Không cần đi quá xa, thường chỉ cần Pilot Metro ngòi trung khoảng 20 euro hoặc sản phẩm tương tự là đủ
    • Tôi khuyên bạn thử tìm hiểu lettering truyện tranh. Nó không hẳn là cách viết hiệu quả nhất, nhưng sẽ dạy bạn cách suy nghĩ về nét bút và tính nhất quán
      Từ đó bạn có thể dễ dàng phát triển phong cách riêng của mình
    • Sau khi nhận ra chữ mình rất xấu, tôi đã cải thiện bằng cách cố ý viết chậm hơn và viết gọn gàng hơn
      Bút máy giúp tôi giảm tốc độ, nhưng về cơ bản đây là vấn đề chủ động tạo ra những con chữ đẹp và viết đủ chậm; khi việc đó trở nên dễ hơn thì tốc độ cũng tăng trở lại. Dù vậy, thói quen dành đủ sự chú ý để tạo ra những con chữ đẹp vẫn còn
      Quan trọng hơn việc luyện tập có chủ đích kiểu dùng vở luyện hay bài tập là viết chậm đủ để tạo đúng hình dạng chữ cái cho đến khi trí nhớ cơ bắp tích lũy và tốc độ quay trở lại
    • Tôi đề xuất trang Handwriting Repair của Kate Gladstone
      https://handwritingrepair.info/
      Hoặc bạn cũng có thể xem
      https://sites.google.com/view/briem/free-books
      The First Writing Book: Arrighi's Operina rất đẹp của John Howard Benson hoặc An Italic Calligraphy Handbook rất hay của Carolyn Knudsen cũng đáng đọc. Tên sách nghe khiêm tốn nhưng nội dung còn hay hơn nhiều, và bạn có thể dùng cùng bút marker đầu vát hoặc bút máy
  • 10 năm trước tôi đã thử dùng Tesseract cho OCR, và tiếng Anh được nhận diện đủ tốt. Nếu nhớ không nhầm thì Tesseract cũng do Google phát triển và là mã nguồn mở
    Khi đó tôi đã thử với một ngôn ngữ không phải tiếng Anh, cụ thể là tiếng Hy Lạp, nhưng kết quả rất tệ
    Thật vui khi thấy có nghiên cứu OCR tốt dựa trên Transformer

    • Gần đây tôi khá ấn tượng với Tesseract. Tháng trước tôi dùng nó để thêm văn bản OCR ẩn vào một file PDF scan mà tôi thường tham khảo; chất lượng bản scan vốn đã khá tốt, nhưng độ chính xác vẫn rất ấn tượng
      Tôi cũng OCR cả mục lục, rồi thử điều chỉnh thiết lập phân đoạn trang trong terminal cho đến khi tạo ra đầu ra có thể copy-paste được, sau đó thêm mục lục có thể điều hướng
      1: https://github.com/ocrmypdf/OCRmyPDF đã hỗ trợ việc này
      2: https://tesseract-ocr.github.io/tessdoc/Command-Line-Usage.html, “ Using different Page Segmentation Modes”
    • Tesseract ban đầu do HP tạo ra, sau khi được mã nguồn mở thì về sau Google mới tiếp tục phát triển. Vì dựa trên công nghệ từ thập niên 1980 nên nó khá dưới kỳ vọng
      Dù vậy, ưu điểm là miễn phí
  • Tôi tò mò không biết đâu là mức tốt nhất hiện nay trong lĩnh vực phát hiện chữ viết tay từ ảnh
    Theo dõi nét bút cũng hay, nhưng tôi quan tâm hơn đến việc chuyển ghi chú viết tay của mình sang Markdown

    • Không biết có phải là tốt nhất không, nhưng nhận diện chữ viết tay trên iOS và ChatGPT hoạt động tốt đến mức đáng ngạc nhiên với tôi. Kể cả chữ xấu cũng được
      Tuy nhiên độ chính xác chỉ khoảng gần 90~95%, nên vẫn phải rà lại đầu ra trước khi tin tưởng
  • Đây là một thử nghiệm rất thú vị. Tôi đã làm ứng dụng chữ viết tay vài năm nay, và sẽ thật tuyệt nếu có thể thêm tính năng chụp ảnh rồi chuyển thành mực số
    [0] https://scrivanolabs.github.io

  • Liệu nó có đọc được cả nét chữ nguệch ngoạc của bác sĩ không? Nếu làm được thì đây có thể là đột phá trong lĩnh vực nhập dữ liệu y tế

    • Số ca tử vong do đọc sai chỉ định điều trị trong bệnh viện cao đến mức gây sốc
      Cần cực kỳ thận trọng khi chèn thêm một tầng diễn giải nữa giữa bác sĩ và điều dưỡng điều trị
      Thật tiếc là trường y không dạy chữ in kiểu khối như cách người ta từng dạy cho họa viên kỹ thuật ngày xưa
  • Khoảnh khắc Apple Notes chỉnh chữ của tôi nhưng vẫn giữ đúng nét chữ của chính tôi thật sự khiến tôi rợn người

  • Tôi vẫn mong có một môi trường lập trình hỗ trợ nhập bằng bút trên máy tính bảng. Giá mà đừng bắt người ta phải mang theo bàn phím Bluetooth
    Đáng tiếc là phần lớn mọi người có lẽ sẽ không trả tiền, nên có vẻ chẳng ai xem đây là cơ hội kinh doanh đáng bận tâm

    • Tôi chắc chắn gõ nhanh hơn viết. Đặc biệt là với code, vì thường xuyên cần chỉnh sửa tại chỗ hoặc sắp xếp lại câu lệnh
      Tôi cũng thích làm việc với giấy và bút, nhưng nó hợp hơn cho việc phác thảo ý tưởng, sơ đồ và danh sách việc cần làm, hơn là nhập liệu có cấu trúc
    • Nghe như một trải nghiệm người dùng thật kinh khủng, và tôi sẽ không trả tiền cho nó. Có khi còn phải được trả tiền thì tôi mới dùng
    • Có thể vẽ được 120 từ mỗi phút bằng cảm ứng không?
  • Tôi nghĩ các mô hình biến chữ viết tay “ngoại tuyến”, tức mực trên giấy, thành dạng “trực tuyến” là thứ tự nét và thời điểm, có thể cực kỳ hữu ích cho các pipeline nhận diện chữ viết tay tài liệu lịch sử
    Nhưng rốt cuộc vẫn cần một cách tiếp cận tích hợp từ đầu đến cuối
    Tôi không hiểu vì sao nhận diện chữ viết tay trong tài liệu lịch sử lại bị bỏ quên đến vậy trong mọi benchmark đánh giá mô hình đa nhiệm. Có hàng triệu tài liệu lịch sử viết tay chưa được lập chỉ mục, và chúng có thể giúp chúng ta hiểu quá khứ gần của mình tốt hơn rất nhiều
    Hơn nữa, chúng cũng có thể giúp các mô hình hiểu quá khứ gần tốt hơn rất nhiều