- Mô hình OCR ảnh-to-Markdown hiệu năng cao, vượt xa mức nhận dạng ký tự đơn thuần để chuyển đổi toàn bộ tài liệu sang cấu trúc Markdown
- Chuyển công thức toán sang định dạng LaTeX, tự động thêm mô tả cho hình ảnh, và xuất bảng dưới dạng bảng HTML/Markdown để tạo ra đầu ra được tối ưu cho việc sử dụng với LLM
- Nhận diện chữ ký, watermark, checkbox rồi chuyển thành các dạng như
<signature>, <watermark>, ☐/☑, cho thấy khả năng xử lý rất tốt theo từng thành phần tài liệu
- Có thể sử dụng dễ dàng thông qua Transformers hoặc máy chủ vLLM của Hugging Face, đồng thời cũng có thể dùng dưới dạng ứng dụng web qua thư viện
docext
- Với nhiều loại tài liệu và bố cục phức tạp, mô hình cho độ chính xác và mức độ cấu trúc hóa rất cao, rất hữu ích cho hợp đồng, biểu mẫu, báo cáo, v.v.
Tổng quan dự án và tầm quan trọng
- Nanonets-OCR-s là một mô hình đột phá không chỉ dừng ở OCR thông thường (nhận dạng ký tự quang học), mà còn phân tích ý nghĩa và cấu trúc của tài liệu để xuất kết quả ở định dạng Markdown
- Mô hình phân biệt công thức, hình ảnh, bảng, checkbox, chữ ký và watermark, rồi chuyển chúng sang cách gắn thẻ và biểu diễn có ý nghĩa (LaTeX, HTML, Markdown, v.v.), từ đó cung cấp đầu ra phù hợp cho các tác vụ downstream hoặc xử lý tài liệu dựa trên LLM (mô hình ngôn ngữ lớn)
- So với các dự án OCR mã nguồn mở hiện có, mô hình cho thấy hiệu năng cao hơn trong việc trích xuất cấu trúc tài liệu phức tạp và nhiều yếu tố ngữ nghĩa khác nhau, đồng thời có tiềm năng áp dụng vào các workflow tự động hóa
- Đây là phiên bản fine-tune từ mô hình Qwen2.5-VL-3B-Instruct, có khả năng nhận diện nhiều thành phần tài liệu và gắn thẻ chúng bằng markup có ý nghĩa
Tính năng chính
- Nhận diện công thức LaTeX
- Tự động chuyển các biểu thức và công thức toán học trong tài liệu sang cú pháp LaTeX theo dạng inline(
$...$) hoặc display($$...$$)
- Mô tả hình ảnh thông minh
- Với mỗi hình ảnh, mô hình mô tả chi tiết tính chất, phong cách và nội dung của ảnh trong thẻ
<img>
- Các loại hình như logo, biểu đồ, đồ thị cũng được mô tả kèm ngữ cảnh và ý nghĩa để chuyển thành đầu vào phù hợp cho LLM
- Phát hiện và tách chữ ký
- Tách hình ảnh chữ ký khỏi văn bản và xử lý trong thẻ
<signature> riêng
- Có giá trị ứng dụng cao trong xử lý tự động tài liệu pháp lý và kinh doanh
- Trích xuất watermark
- Phát hiện văn bản watermark được chèn trong tài liệu và sắp xếp riêng trong thẻ
<watermark>
- Chuyển đổi checkbox và radio button
- Xuất ra dưới dạng ký hiệu Unicode chuẩn như * ☐ (chưa chọn), ☑ (đã chọn), ☒ (từ chối)
- Nâng cao độ tin cậy khi xử lý các tài liệu dạng biểu mẫu như khảo sát, đơn đăng ký
- Trích xuất cấu trúc bảng phức tạp
- Ngay cả các bảng phức tạp cũng được chuyển sang bảng Markdown và HTML, mang lại khả năng tận dụng cao
Cách sử dụng chính
Ví dụ mã Python
- Có thể dễ dàng tải và chạy mô hình bằng thư viện transformers của Hugging Face
- Khi đưa hình ảnh làm đầu vào, mô hình sẽ trả về kết quả dưới dạng Markdown có cấu trúc gồm văn bản, bảng, công thức, mô tả hình ảnh, watermark, v.v.
- Số trang hoặc watermark được bọc và phân tách bằng
,
- Checkbox được xuất bằng ký hiệu Unicode (☐, ☑)
Sử dụng dựa trên vLLM
- Có thể đăng ký mô hình trên máy chủ vLLM và truy cập, sử dụng dễ dàng qua API tương thích OpenAI
- Khi nhập hình ảnh, mô hình xuất kết quả chuyển đổi ở định dạng nhất quán cho văn bản, bảng, công thức, watermark, v.v.
Sử dụng gói docext
- Thông qua gói riêng
docext, có thể áp dụng ngay Nanonets-OCR-s vào việc cấu trúc hóa tài liệu chỉ bằng cách chạy lệnh riêng biệt
- Có thể tham khảo tài liệu GitHub
2 bình luận
Ý kiến trên Hacker News
Tôi làm việc tại Nanonets và rất hào hứng khi được công bố
Nanonets-OCR-s, một mô hình VLM quy mô 3BMô hình nhẹ này được tối ưu để chuyển tài liệu thành Markdown sạch, có cấu trúc
Nó học được cấu trúc và ngữ cảnh của tài liệu như bảng, công thức, hình ảnh, biểu đồ, watermark, checkbox, v.v.
Các tính năng chính gồm nhận diện công thức LaTeX (phân biệt đúng giữa công thức inline và block khi chuyển đổi), mô tả hình ảnh tích hợp sẵn (dùng thẻ
img, hỗ trợ biểu đồ/logo/sơ đồ, v.v.), phát hiện và tách chữ ký (xuất trong khốisignature), trích xuất watermark (lưu bằng thẻwatermark), xử lý checkbox/radio button thông minh (chuyển sang Unicode để tăng độ tin cậy cho hậu xử lý), trích xuất cấu trúc bảng phức tạp (cả bảng nhiều hàng/cột cũng xuất tốt sang Markdown và HTML)Nếu muốn tự dùng thử, có thể xem Huggingface hoặc Docext Colab
Liên kết đúng của Docext là README.md
Tôi tò mò liệu LLM đang dùng có xuất hiện hiện tượng hallucination hay không
Tôi muốn hỏi liệu có thể trích xuất chính hình ảnh hay vẫn cần một bước trích xuất riêng
Tôi muốn biết liệu có thể dùng nó để parse ảnh hoặc PDF thực đơn nhà hàng theo một JSON schema nào đó không (có lẽ kèm thêm sự hỗ trợ của một LLM hậu xử lý), hay một multimodal LLM cỡ lớn sẽ phù hợp hơn cho mục đích này
Tôi đã thử nhiều LLM để dịch một từ điển Shipibo (ngôn ngữ bản địa Peru)-Tây Ban Nha sang từ điển tiếng Anh, nhưng vì có hai cột, xuống dòng lạ, và phần định nghĩa trộn cả Shipibo lẫn tiếng Tây Ban Nha nên rất khó hiểu
Thêm nữa chất lượng bản scan cũng không tốt
Tôi nghĩ mình nên thử mô hình này một lần
Tôi đã luôn tìm một giải pháp nhận toàn bộ tài liệu được lưu suốt hàng chục năm trong Word và PowerPoint, rồi chuyển chúng sang dạng chuẩn hóa để từng thành phần có thể được tái sử dụng ở các định dạng khác
Đây là một khối xây dựng cốt lõi tuyệt đối cần thiết để tạo ra hệ thống đó
Giờ tôi còn cần thêm tính năng archive hoặc history, tức là sẽ rất tốt nếu có thể dễ dàng lưu trữ và gọi lại từng thành phần
Thật sự là một công trình rất tuyệt
Tôi thấy tiếc vì các mô hình kiểu này chỉ nhắm tới Markdown
Thực tế Markdown có nhiều biến thể và hỗ trợ còn kém cho chú thích cuối trang, tài liệu tham khảo, hình minh họa, v.v.
Cần một định dạng có cấu trúc hơn và đặc tả rõ ràng hơn
Thực ra chúng tôi huấn luyện mô hình không chỉ chuyển sang Markdown mà còn gắn semantic tagging cùng lúc
Ví dụ, công thức được trích xuất dưới dạng LaTeX, còn hình ảnh (biểu đồ, hình minh họa, v.v.) được mô tả chi tiết bằng thẻ
imgChữ ký (
signature), watermark (watermark), số trang, v.v. cũng dùng thẻCác bảng phức tạp (nhiều hàng/cột) sẽ được xuất thành bảng HTML thay vì Markdown
Tôi còn hào hứng với khái niệm "Markdown có cấu trúc" hơn cả bản thân mô hình LLM OCR, nhưng rốt cuộc cảm giác nó vẫn chỉ dừng ở mức gắn thẻ cho một số thành phần nhất định, nên khả năng tận dụng ngoài mô hình có phần hơi hạn chế
Tôi muốn biết nếu so với docling(https://github.com/docling-project/docling) thì ưu và nhược điểm là gì
Tôi muốn biết nó khác gì so với Datalab/Marker(https://github.com/datalab-to/marker)
Tôi đã so sánh nhiều bộ chuyển PDF->MD, và tới giờ Marker vẫn là cái tốt nhất, dù chưa hoàn hảo
Theo trải nghiệm cá nhân, Marker khá hợp để chuyển các bài báo có công thức phức tạp và code trộn lẫn
Ví dụ, nếu xử lý bằng Marker một trang trong bài báo về phép biến đổi Laplace ngược bằng Fortran, nơi công thức (trộn inline/display) và các khối code monospace xen lẫn nhau, thì inline $\sigma_0$ sẽ bị hỏng thành "<sup>s</sup> 0", còn $f(t)$ thành "<i>f~</i>~t*!"
Điểm mạnh của mô hình này là hiện xuất đúng các phần như vậy ở mức nội tại
Ảnh chụp màn hình tham khảo(https://imgur.com/a/Q7UYIfW)
Tôi mới bắt đầu tự so sánh chéo, nên nếu có thể cho tôi danh sách các ứng viên thì tôi sẽ thực sự rất biết ơn
Tôi đã tự viết một script PowerShell để áp dụng mô hình này cho PDF ở mọi nơi
Tự chạy thử thì GPU (1080 8GB) đã cũ nên tốc độ khá chậm (ít nhất hơn 5 phút mỗi trang)
Nếu ai muốn thử một tiện ích chuyển PDF sang Markdown chạy trên Cloud Run (có hỗ trợ GPU ngoài), hãy cho tôi biết
Khi hoàn thiện tôi cũng sẽ chia sẻ liên kết
Tôi vừa chạy nó trên Cloud Run và báo cáo kết quả mẫu
Nhìn vào một phần kết quả của animate.pdf, có thể thấy tiêu đề, tác giả, nhà xuất bản, minh họa đen trắng (được mô tả bằng thẻ
img), và thẻ số hóa của Google đều được trích xuất tốtNgay cả mục lục cũng được trích ra hoàn hảo dưới dạng bảng
Ngoài việc chậm ra thì tôi rất hài lòng với tính năng và độ chính xác
Tôi rất quan tâm đến dịch vụ PDF sang Markdown dùng Cloud Run
Tôi muốn biết nó xử lý tài liệu có bảng nhiều cột hoặc bảng nhiều hàng như thế nào (ví dụ: PDF này, như
rowspanở trang 1,colspanở trang 29, v.v.)Tôi tò mò về hiệu năng nhận diện văn bản không phải tiếng Anh
Tôi biết rằng OCR dựa trên LLM hiện có thường kém xa OCR truyền thống về hỗ trợ ngoại ngữ
Theo trải nghiệm của tôi, nếu dùng trực tiếp Google Translate và ChatGPT trên hình ảnh thì ChatGPT luôn cho kết quả tốt hơn
Đặc biệt nó còn dịch/giải thích rất tốt cả thực đơn viết tay bằng tiếng Nhật
Những mô hình không hề nhắc tới hỗ trợ đa ngôn ngữ thì ngoài thực tế sẽ cho hiệu năng rất tệ với PDF không phải tiếng Anh
Thêm nữa, mô hình nền tảng (
Qwen-2.5-VL-3B) là đa ngôn ngữTôi từng thấy một bài trên Reddit nói rằng nó cũng hoạt động tốt với tiếng Trung (liên kết)
Tôi đã thử xử lý mẫu hóa đơn thẻ bằng tiếng Hàn; tốc độ thì chậm nhưng đang dần đọc ra gần như hoàn hảo.