ocrvisionmultimodal- Tăng cường các Kênh OCR của Bạn với các Mô hình Mở

Ocrvisionmultimodal- Tăng cường các kênh OCR của bạn với các mô hình mở

  • 24 min read
Ocrvisionmultimodal- Tăng cường các kênh OCR của bạn với các mô hình mở

Tăng tốc các quy trình OCR của bạn với các mô hình mã nguồn mở

Giới thiệu về OCR hiện đại

Nhận dạng ký tự quang học (OCR) là một trong những thách thức sớm nhất và lâu đời nhất trong lĩnh vực thị giác máy tính. Nhiều ứng dụng thực tế đầu tiên của AI tập trung vào việc chuyển đổi văn bản in thành dạng kỹ thuật số.

Với sự gia tăng của các mô hình ngôn ngữ thị giác (VLMs), OCR đã có những bước tiến đáng kể. Gần đây, nhiều mô hình OCR đã được phát triển bằng cách tinh chỉnh các VLM hiện có. Nhưng các khả năng ngày nay còn vượt xa OCR: bạn có thể truy xuất tài liệu theo truy vấn hoặc trả lời câu hỏi về chúng trực tiếp. Nhờ các tính năng thị giác mạnh mẽ hơn, các mô hình này cũng có thể xử lý các bản quét chất lượng thấp, diễn giải các thành phần phức hợp như bảng, biểu đồ và hình ảnh, đồng thời hợp nhất văn bản với hình ảnh để trả lời các câu hỏi mở trên nhiều tài liệu.

Khả năng của mô hình

Phiên âm

Các mô hình gần đây phiên âm văn bản thành định dạng có thể đọc được bằng máy. Đầu vào có thể bao gồm:

  • Văn bản viết tay
  • Các loại chữ viết khác nhau như ký tự Latinh, tiếng Ả Rập và tiếng Nhật
  • Biểu thức toán học
  • Công thức hóa học
  • Thẻ đánh dấu hình ảnh/bố cục/số trang

Mô hình OCR chuyển đổi chúng thành văn bản có thể đọc được bằng máy với nhiều định dạng khác nhau như HTML, Markdown và hơn thế nữa.

Xử lý các thành phần phức hợp trong tài liệu

Ngoài văn bản, một số mô hình còn có thể nhận dạng:

  • Hình ảnh
  • Biểu đồ
  • Bảng

Một số mô hình biết vị trí của hình ảnh trong tài liệu, trích xuất tọa độ của chúng và chèn chúng vào đúng vị trí giữa các văn bản. Các mô hình khác tạo chú thích cho hình ảnh và chèn chúng vào nơi chúng xuất hiện. Điều này đặc biệt hữu ích nếu bạn đang cung cấp đầu ra có thể đọc được bằng máy cho một LLM. Các ví dụ mô hình là OlmOCR của AllenAI, hoặc PaddleOCR-VL của PaddlePaddle.

Các mô hình sử dụng các định dạng đầu ra khác nhau, chẳng hạn như DocTags, HTML hoặc Markdown (được giải thích trong phần tiếp theo Định dạng đầu ra). Cách một mô hình xử lý bảng và biểu đồ thường phụ thuộc vào định dạng đầu ra mà chúng đang sử dụng. Một số mô hình coi biểu đồ như hình ảnh: chúng được giữ nguyên. Các mô hình khác chuyển đổi biểu đồ thành bảng Markdown hoặc JSON, ví dụ: biểu đồ cột có thể được chuyển đổi như sau.

Chart Rendering

Tương tự đối với bảng, các ô được chuyển đổi thành định dạng có thể đọc được bằng máy trong khi vẫn giữ lại ngữ cảnh từ tiêu đề và cột.

Table Rendering

Định dạng đầu ra

Các mô hình OCR khác nhau có các định dạng đầu ra khác nhau. Tóm lại, đây là các định dạng đầu ra phổ biến được sử dụng bởi các mô hình hiện đại. DocTag: DocTag là một định dạng giống XML cho tài liệu thể hiện vị trí, định dạng văn bản, thông tin cấp thành phần, v.v. Dưới đây là hình minh họa một bài báo được phân tích thành DocTags. Định dạng này được sử dụng bởi các mô hình Docling mã nguồn mở.

DocTags

  • HTML: HTML là một trong những định dạng đầu ra phổ biến nhất được sử dụng để phân tích tài liệu vì nó mã hóa cấu trúc và thông tin phân cấp một cách chính xác.
  • Markdown: Markdown là định dạng dễ đọc nhất cho con người. Nó đơn giản hơn HTML nhưng không biểu cảm bằng. Ví dụ, nó không thể biểu diễn các bảng được chia cột.
  • JSON: JSON không phải là định dạng mà mô hình sử dụng cho toàn bộ đầu ra, nhưng nó có thể được sử dụng để biểu diễn thông tin trong bảng hoặc biểu đồ.

Định dạng mô hình phù hợp phụ thuộc vào cách bạn dự định sử dụng đầu ra của nó:

  • Tái cấu trúc kỹ thuật số: Để tái cấu trúc tài liệu kỹ thuật số, hãy chọn mô hình có định dạng bảo toàn bố cục (ví dụ: DocTags hoặc HTML).
  • Đầu vào LLM hoặc Hỏi & Đáp: Nếu trường hợp sử dụng liên quan đến việc truyền đầu ra cho LLM, hãy chọn mô hình tạo đầu ra Markdown và chú thích hình ảnh, vì chúng gần với ngôn ngữ tự nhiên hơn.
  • Sử dụng theo chương trình: Nếu bạn muốn truyền đầu ra của mình cho một chương trình (như phân tích dữ liệu), hãy chọn mô hình tạo đầu ra có cấu trúc như JSON.

Nhận biết vị trí

Tài liệu có thể có cấu trúc phức tạp, chẳng hạn như các khối văn bản nhiều cột và hình ảnh nổi. Các mô hình OCR cũ xử lý các tài liệu này bằng cách phát hiện từ và sau đó là bố cục trang thủ công trong quá trình hậu xử lý để có văn bản được hiển thị theo thứ tự đọc, điều này rất dễ lỗi. Ngược lại, các mô hình OCR hiện đại kết hợp siêu dữ liệu bố cục để giúp bảo tồn thứ tự đọc và độ chính xác. Siêu dữ liệu này được gọi là “neo”, nó có thể đến dưới dạng các hộp giới hạn. Quá trình này cũng được gọi là “neo hóa/neo hóa” vì nó giúp giảm thiểu sự ảo giác.

Nhắc mô hình

Các mô hình OCR có thể nhận đầu vào là hình ảnh và một lời nhắc văn bản tùy chọn, điều này phụ thuộc vào kiến trúc mô hình và thiết lập tiền huấn luyện. Một số mô hình OCR hỗ trợ chuyển đổi tác vụ dựa trên lời nhắc, ví dụ: granite-docling có thể phân tích toàn bộ một trang bằng lời nhắc “Chuyển trang này sang Docling” trong khi nó cũng có thể nhận lời nhắc như “Chuyển công thức này sang LaTeX” cùng với một trang đầy công thức. Tuy nhiên, các mô hình khác chỉ được huấn luyện để phân tích toàn bộ trang và chúng được điều kiện hóa để thực hiện điều này thông qua lời nhắc hệ thống. Ví dụ: OlmOCR của AllenAI nhận một lời nhắc điều kiện dài. Giống như nhiều mô hình khác, OlmOCR về mặt kỹ thuật là một phiên bản OCR được tinh chỉnh của VLM (Qwen2.5VL trong trường hợp này), vì vậy bạn có thể yêu cầu các tác vụ khác, nhưng hiệu suất của nó sẽ không ngang bằng với khả năng OCR.

Các mô hình OCR mã nguồn mở tiên tiến

Chúng tôi đã chứng kiến một làn sóng mô hình mới đáng kinh ngạc trong năm qua. Vì có rất nhiều công việc đang diễn ra trong mã nguồn mở, những người chơi này xây dựng và hưởng lợi từ công việc của nhau. Một ví dụ tuyệt vời là bản phát hành OlmOCR của AllenAI, không chỉ phát hành một mô hình mà còn cả tập dữ liệu được sử dụng để huấn luyện nó. Với những điều này, những người khác có thể xây dựng chúng theo những hướng mới. Lĩnh vực này cực kỳ năng động, nhưng không phải lúc nào cũng rõ ràng nên sử dụng mô hình nào.

So sánh các mô hình mới nhất

Để mọi thứ dễ dàng hơn một chút, chúng tôi đang tổng hợp một so sánh không đầy đủ về một số mô hình yêu thích hiện tại của chúng tôi. Tất cả các mô hình bên dưới đều nhận biết bố cục và có thể phân tích bảng, biểu đồ và phương trình toán học. Danh sách đầy đủ các ngôn ngữ mà mỗi mô hình hỗ trợ được chi tiết trong thẻ mô hình của chúng, vì vậy hãy đảm bảo kiểm tra chúng nếu bạn quan tâm. Tất cả các mô hình bên dưới đều có giấy phép mã nguồn mở ngoại trừ Chandra có giấy phép OpenRAIL và giấy phép Nanonets chưa rõ ràng. Điểm số trung bình được lấy từ thẻ mô hình của Chandra, OlmOCR, được đánh giá trên OlmOCR Benchmark, chỉ dành cho tiếng Anh. Nhiều mô hình trong bộ sưu tập này đã được tinh chỉnh từ Qwen2.5-VL hoặc Qwen3-VL, vì vậy chúng tôi cũng cung cấp mô hình Qwen3-VL bên dưới.

Tên mô hình Định dạng đầu ra Tính năng Kích thước mô hình Đa ngôn ngữ? Điểm trung bình trên OlmOCR Benchmark
Nanonets-OCR2-3B Markdown có cấu trúc với thẻ ngữ nghĩa (bao gồm bảng HTML, v.v.) Chú thích hình ảnh trong tài liệuTrích xuất chữ ký & watermarkXử lý hộp kiểm, sơ đồ luồng và chữ viết tay 4B ✅Hỗ trợ tiếng Anh, tiếng Trung, tiếng Pháp, tiếng Ả Rập và nhiều hơn nữa. Không có sẵn
PaddleOCR-VL Markdown, JSON, bảng HTML và biểu đồ Xử lý chữ viết tay, tài liệu cũCho phép nhắcChuyển đổi bảng & biểu đồ sang HTMLTrích xuất và chèn hình ảnh trực tiếp 0.9B ✅Hỗ trợ 109 ngôn ngữ Không có sẵn
dots.ocr Markdown, JSON Neo hóaTrích xuất và chèn hình ảnhXử lý chữ viết tay 3B ✅Đa ngôn ngữ với thông tin ngôn ngữ không có sẵn 79.1 ± 1.0
OlmOCR-2 Markdown, HTML, LaTeX Neo hóaTối ưu hóa cho xử lý hàng loạt quy mô lớn 8B ❎Chỉ tiếng Anh 82.3 ± 1.1
Granite-Docling-258M DocTags Chuyển đổi tác vụ dựa trên lời nhắcKhả năng nhắc vị trí các phần tử bằng token vị tríĐầu ra phong phú 258M ✅Hỗ trợ tiếng Anh, Nhật Bản, Ả Rập và Trung Quốc. Không có sẵn
DeepSeek-OCR Markdown, HTML Hỗ trợ hiểu biết thị giác chungCó thể phân tích và hiển thị lại tất cả biểu đồ, bảng và hơn thế nữa sang HTMLXử lý chữ viết tayHiệu quả bộ nhớ, giải quyết văn bản thông qua hình ảnh 3B ✅Hỗ trợ gần 100 ngôn ngữ 75.4 ± 1.0
Chandra Markdown, HTML, JSON Neo hóaTrích xuất và chèn hình ảnh như nguyên bản 9B ✅Hỗ trợ hơn 40 ngôn ngữ 83.1 ± 0.9
Qwen3-VL Mô hình Ngôn ngữ Thị giác có thể xuất ở mọi định dạng Có thể nhận dạng văn bản cổXử lý chữ viết tayTrích xuất và chèn hình ảnh như nguyên bản 9B ✅Hỗ trợ 32 ngôn ngữ Không có sẵn

Mặc dù Qwen3-VL bản thân nó là một mô hình ngôn ngữ thị giác mạnh mẽ và linh hoạt, được hậu huấn luyện cho hiểu biết tài liệu và các tác vụ khác, nhưng nó không được tối ưu hóa cho một lời nhắc OCR phổ quát duy nhất. Ngược lại, các mô hình khác đã được tinh chỉnh bằng một hoặc một vài lời nhắc cố định được thiết kế đặc biệt cho các tác vụ OCR. Vì vậy, để sử dụng Qwen3-VL, chúng tôi khuyên bạn nên thử nghiệm với các lời nhắc.

Đây là một demo nhỏ để bạn thử một số mô hình mới nhất và so sánh đầu ra của chúng.

Đánh giá mô hình

Điểm chuẩn

Không có mô hình tốt nhất, vì mỗi vấn đề có các nhu cầu khác nhau. Bảng có nên được hiển thị dưới dạng Markdown hay HTML? Chúng ta nên trích xuất những thành phần nào? Làm thế nào để định lượng độ chính xác của văn bản và tỷ lệ lỗi? 👀 Mặc dù có nhiều tập dữ liệu và công cụ đánh giá, nhưng nhiều trong số đó không trả lời được những câu hỏi này. Vì vậy, chúng tôi đề xuất sử dụng các điểm chuẩn sau:

  1. OmniDocBenchmark: Điểm chuẩn được sử dụng rộng rãi này nổi bật với các loại tài liệu đa dạng: sách, tạp chí và sách giáo khoa. Các tiêu chí đánh giá của nó được thiết kế tốt, chấp nhận bảng ở cả định dạng HTML và Markdown. Một thuật toán kết hợp mới đánh giá thứ tự đọc và các công thức được chuẩn hóa trước khi đánh giá. Hầu hết các chỉ số dựa trên khoảng cách chỉnh sửa hoặc khoảng cách chỉnh sửa cây (bảng). Đáng chú ý, các chú thích được sử dụng để đánh giá không chỉ do con người tạo ra mà còn có được thông qua VLMs SoTA hoặc các phương pháp OCR truyền thống.
  2. OlmOCR-Bench: OlmOCR-Bench áp dụng một cách tiếp cận khác: chúng coi đánh giá là một loạt các bài kiểm tra đơn vị. Ví dụ, đánh giá bảng được thực hiện bằng cách kiểm tra mối quan hệ giữa các ô được chọn của một bảng cho trước. Chúng sử dụng các tệp PDF từ các nguồn công khai và chú thích được thực hiện bằng cách sử dụng nhiều loại VLMs mã nguồn đóng. Điểm chuẩn này khá thành công để đánh giá trên ngôn ngữ tiếng Anh.
  3. CC-OCR (Đa ngôn ngữ): So với các điểm chuẩn trước đó, CC-OCR ít được ưa chuộng hơn khi chọn mô hình, do chất lượng và sự đa dạng tài liệu thấp hơn. Tuy nhiên, đây là điểm chuẩn duy nhất chứa đánh giá ngoài tiếng Anh và tiếng Trung! Mặc dù đánh giá còn xa mới hoàn hảo (hình ảnh là ảnh chụp với ít từ), nhưng nó vẫn là điều tốt nhất bạn có thể làm cho đánh giá đa ngôn ngữ.

Khi kiểm tra các mô hình OCR khác nhau, chúng tôi thấy rằng hiệu suất trên các loại tài liệu, ngôn ngữ khác nhau, v.v., thay đổi rất nhiều. Lĩnh vực của bạn có thể không được đại diện tốt trong các điểm chuẩn hiện có! Để sử dụng hiệu quả thế hệ mô hình OCR dựa trên VLM mới này, chúng tôi đề xuất nhắm mục tiêu thu thập một tập dữ liệu gồm các ví dụ đại diện cho lĩnh vực tác vụ của bạn và kiểm tra một vài mô hình khác nhau để so sánh hiệu suất của chúng.

Hiệu quả chi phí

Hầu hết các mô hình OCR đều nhỏ, có từ 3B đến 7B tham số; bạn thậm chí có thể tìm thấy các mô hình có ít hơn 1B tham số, như PaddleOCR-VL. Tuy nhiên, chi phí còn phụ thuộc vào sự sẵn có của các triển khai được tối ưu hóa cho các framework suy luận chuyên biệt. Ví dụ, OlmOCR-2 đi kèm với các triển khai vLLM và SGLang, và chi phí cho mỗi triệu trang là 178 đô la (giả sử trên H100 với giá 2,69 USD/giờ). DeepSeek-OCR có thể xử lý hơn 200k trang mỗi ngày trên một A100 duy nhất với VRAM 40GB. Với phép tính nháp, chúng ta thấy rằng chi phí cho mỗi triệu trang hoặc tương tự như OlmOCR (mặc dù nó phụ thuộc vào nhà cung cấp A100 của bạn). Nếu trường hợp sử dụng của bạn không bị ảnh hưởng, bạn cũng có thể chọn các phiên bản lượng tử hóa của mô hình. Chi phí chạy các mô hình mã nguồn mở phụ thuộc nhiều vào chi phí hàng giờ của phiên bản và các tối ưu hóa mà mô hình bao gồm, nhưng nó được đảm bảo sẽ rẻ hơn nhiều mô hình mã nguồn đóng hiện có ở quy mô lớn hơn.

Tập dữ liệu OCR mã nguồn mở

Mặc dù năm ngoái đã chứng kiến sự bùng nổ của các mô hình OCR mã nguồn mở, nhưng điều này không được đi kèm với nhiều tập dữ liệu huấn luyện và đánh giá mã nguồn mở tương ứng. Một ngoại lệ là olmocr-mix-0225 của AllenAI, đã được sử dụng để huấn luyện ít nhất 72 mô hình trên Hub – có thể nhiều hơn, vì không phải tất cả các mô hình đều ghi lại dữ liệu huấn luyện của chúng.

Chia sẻ nhiều tập dữ liệu hơn có thể mở ra những tiến bộ lớn hơn nữa trong các mô hình OCR mã nguồn mở. Có một số cách tiếp cận đầy hứa hẹn để tạo các tập dữ liệu này:

  • Tạo dữ liệu tổng hợp (ví dụ: isl_synthetic_ocr)
  • Phiên âm do VLM tạo được lọc thủ công hoặc thông qua các thuật toán heuristic
  • Sử dụng các mô hình OCR hiện có để tạo dữ liệu huấn luyện cho các mô hình mới, có khả năng hiệu quả hơn trong các lĩnh vực cụ thể
  • Tận dụng các tập dữ liệu đã được sửa lỗi hiện có như Bộ dữ liệu Lịch sử Y tế Ấn Độ thuộc Anh của Thư viện Quốc gia Scotland, chứa OCR được con người sửa đổi rộng rãi cho các tài liệu lịch sử

Cần lưu ý rằng nhiều tập dữ liệu như vậy tồn tại nhưng vẫn chưa được sử dụng. Việc làm cho chúng sẵn có hơn dưới dạng tập dữ liệu “sẵn sàng để huấn luyện” mang lại tiềm năng đáng kể cho cộng đồng mã nguồn mở.

Công cụ để chạy mô hình

Chúng tôi đã nhận được nhiều câu hỏi về việc bắt đầu với các mô hình OCR, vì vậy đây là một vài cách bạn có thể sử dụng các công cụ suy luận cục bộ và lưu trữ từ xa với Hugging Face.

Cục bộ

Hầu hết các mô hình tiên tiến đều hỗ trợ vLLM và triển khai transformers. Bạn có thể tìm hiểu thêm về cách phục vụ từng mô hình từ thẻ mô hình của riêng chúng. Để thuận tiện, chúng tôi sẽ chỉ cho bạn cách suy luận cục bộ bằng vLLM. Mã dưới đây có thể khác nhau tùy thuộc vào mô hình, nhưng đối với hầu hết các mô hình, nó trông giống như sau.

vllm serve nanonets/Nanonets-OCR2-3B

Và sau đó bạn có thể truy vấn như sau bằng cách sử dụng, ví dụ: máy khách OpenAI.

from openai import OpenAI
import base64

client = OpenAI(base_url="http://localhost:8000/v1")

model = "nanonets/Nanonets-OCR2-3B"

def encode_image(image_path):
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode("utf-8")

def infer(img_base64):
    response = client.chat.completions.create(
        model=model,
        messages=[
            {
                "role": "user",
                "content": [
                    {
                        "type": "image_url",
                        "image_url": {"url": f"data:image/png;base64,{img_base64}"},
                    },
                    {
                        "type": "text",
                        "text": "Extract the text from the above document as if you were reading it naturally.",
                    },
                ],
            }
        ],
        temperature=0.0,
        max_tokens=15000
    )
    return response.choices[0].message.content

img_base64 = encode_image(your_img_path)
print(infer(img_base64))

Transformers Transformers cung cấp các định nghĩa mô hình tiêu chuẩn để suy luận và tinh chỉnh dễ dàng. Các mô hình có sẵn trong transformers đi kèm với triển khai transformers chính thức (định nghĩa mô hình trong thư viện) hoặc các triển khai “mã từ xa”. Sau này được xác định bởi chủ sở hữu mô hình để cho phép tải mô hình dễ dàng vào giao diện transformers, vì vậy bạn không cần phải đi qua việc triển khai mô hình. Dưới đây là ví dụ về việc tải mô hình Nanonets bằng triển khai transformers.

# make sure to install flash-attn and transformers
from transformers import AutoProcessor, AutoModelForImageTextToText
from PIL import Image

model = AutoModelForImageTextToText.from_pretrained(
    "nanonets/Nanonets-OCR2-3B",
    torch_dtype="auto",
    device_map="auto",
    attn_implementation="flash_attention_2"
)
model.eval()
processor = AutoProcessor.from_pretrained("nanonets/Nanonets-OCR2-3B")

def infer(image_url, model, processor, max_new_tokens=4096):
    prompt = """Extract the text from the above document as if you were reading it naturally. Return the tables in html format. Return the equations in LaTeX representation. If there is an image in the document and image caption is not present, add a small description of the image inside the <img></img> tag; otherwise, add the image caption inside <img></img>. Watermarks should be wrapped in brackets. Ex: <watermark>OFFICIAL COPY</watermark>. Page numbers should be wrapped in brackets. Ex: <page_number>14</page_number> or <page_number>9/22</page_number>. Prefer using ☐ and ☑ for check boxes."""
    image = Image.open(image_path)
    messages = [
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": [
            {"type": "image", "image": image_url},
            {"type": "text", "text": prompt},
        ]},
    ]
    text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
    inputs = processor(text=[text], images=[image], padding=True, return_tensors="pt").to(model.device)

    output_ids = model.generate(**inputs, max_new_tokens=max_new_tokens, do_sample=False)
    generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(inputs.input_ids, output_ids)]

    output_text = processor.batch_decode(generated_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True)
    return output_text[0]

result = infer(image_path, model, processor, max_new_tokens=15000)
print(result)

MLX MLX là một framework học máy mã nguồn mở dành cho Apple Silicon. MLX-VLM được xây dựng trên MLX để phục vụ các mô hình ngôn ngữ thị giác một cách dễ dàng. Bạn có thể khám phá tất cả các mô hình OCR có sẵn ở định dạng MLX ở đây. Chúng cũng đi kèm với các phiên bản lượng tử hóa. Bạn có thể cài đặt MLX-VLM như sau.

pip install -U mlx-vlm
wget https://huggingface.co/datasets/merve/vlm_test_images/resolve/main/throughput_smolvlm.png

python -m mlx_vlm.generate --model ibm-granite/granite-docling-258M-mlx --max-tokens 4096 --temperature 0.0 --prompt "Convert this chart to JSON." --image throughput_smolvlm.png

Từ xa

Điểm cuối suy luận cho triển khai được quản lý Bạn có thể triển khai các mô hình OCR tương thích với vLLM hoặc SGLang trên Điểm cuối suy luận Hugging Face, từ tùy chọn “Triển khai” của kho lưu trữ mô hình hoặc trực tiếp thông qua giao diện Điểm cuối suy luận. Điểm cuối suy luận phục vụ các mô hình tiên tiến trong môi trường được quản lý hoàn toàn với tăng tốc GPU, tự động mở rộng quy mô và giám sát mà không cần quản lý cơ sở hạ tầng thủ công.

Đây là một phương pháp đơn giản để triển khai nanonets sử dụng vLLM làm công cụ suy luận.

  1. Truy cập kho lưu trữ mô hình nanonets/Nanonets-OCR2-3B
  2. Nhấp vào nút “Triển khai” và chọn “Điểm cuối suy luận HF”

Inference Endpoints

  1. Cấu hình thiết lập triển khai trong vài giây

Inference Endpoints

  1. Sau khi điểm cuối được tạo, bạn có thể sử dụng nó bằng đoạn mã máy khách OpenAI mà chúng tôi đã cung cấp ở phần trước.

Bạn có thể tìm hiểu thêm về nó ở đây.

Công việc Hugging Face cho suy luận hàng loạt Đối với nhiều ứng dụng OCR, bạn muốn thực hiện suy luận hàng loạt hiệu quả, tức là chạy mô hình trên hàng nghìn hình ảnh với chi phí thấp nhất và hiệu quả nhất. Một cách tiếp cận tốt là sử dụng chế độ suy luận ngoại tuyến của vLLM. Như đã thảo luận ở trên, nhiều mô hình OCR dựa trên VLM gần đây được vLLM hỗ trợ, cho phép tạo lô hình ảnh hiệu quả và tạo đầu ra OCR ở quy mô lớn.

Để làm điều này dễ dàng hơn nữa, chúng tôi đã tạo uv-scripts/ocr, một bộ sưu tập các tập lệnh OCR sẵn sàng chạy hoạt động với Công việc Hugging Face. Các tập lệnh này cho phép bạn chạy OCR trên bất kỳ tập dữ liệu nào mà không cần GPU của riêng mình. Chỉ cần trỏ tập lệnh vào tập dữ liệu đầu vào của bạn và nó sẽ:

  • Xử lý tất cả hình ảnh trong một cột tập dữ liệu bằng nhiều mô hình OCR mở khác nhau
  • Thêm kết quả OCR dưới dạng một cột markdown mới vào tập dữ liệu
  • Đẩy tập dữ liệu đã cập nhật với kết quả OCR lên Hub

Ví dụ, để chạy OCR trên 100 hình ảnh:

hf jobs uv run --flavor l4x1 \
  https://huggingface.co/datasets/uv-scripts/ocr/raw/main/nanonets-ocr.py \
  your-input-dataset your-output-dataset \
  --max-samples 100

Các tập lệnh tự động xử lý tất cả cấu hình vLLM và tạo lô, giúp OCR hàng loạt có thể truy cập được mà không cần thiết lập cơ sở hạ tầng.

Vượt ra ngoài OCR

Nếu bạn quan tâm đến AI tài liệu, không chỉ OCR, đây là một số khuyến nghị của chúng tôi.

Trình truy xuất tài liệu trực quan

Truy xuất tài liệu trực quan là để truy xuất các tài liệu liên quan hàng đầu trong top-k khi được cung cấp một truy vấn văn bản. Nếu bạn đã từng làm việc với các mô hình truy xuất, sự khác biệt là bạn tìm kiếm trực tiếp trên một chồng các tệp PDF. Ngoài việc sử dụng chúng độc lập, bạn cũng có thể xây dựng các quy trình RAG đa phương thức bằng cách kết hợp chúng với một mô hình ngôn ngữ thị giác (tìm hiểu cách thực hiện ở đây). Bạn có thể tìm thấy tất cả chúng trên Hugging Face Hub.

Có hai loại trình truy xuất tài liệu trực quan, mô hình đơn vector và đa vector. Các mô hình đơn vector tiết kiệm bộ nhớ hơn và kém hiệu quả hơn; trong khi đó, các mô hình đa vector tiêu tốn nhiều bộ nhớ hơn và hiệu quả hơn. Hầu hết các mô hình này thường đi kèm với tích hợp vLLM và transformers, vì vậy bạn có thể lập chỉ mục tài liệu bằng chúng và sau đó thực hiện tìm kiếm dễ dàng bằng cơ sở dữ liệu vector.

Sử dụng Mô hình Ngôn ngữ Thị giác để Hỏi & Đáp về Tài liệu

Nếu bạn có một tác vụ cần chỉ trả lời câu hỏi dựa trên tài liệu, bạn có thể sử dụng một số mô hình ngôn ngữ thị giác đã có các tác vụ tài liệu trong các tác vụ huấn luyện của chúng. Chúng tôi nhận thấy người dùng cố gắng chuyển đổi tài liệu thành văn bản và chuyển đầu ra cho LLM, nhưng nếu tài liệu của bạn có bố cục phức tạp và đầu ra tài liệu đã chuyển đổi của bạn có biểu đồ, v.v. dưới dạng HTML, hoặc hình ảnh được chú thích không chính xác, thì LLM sẽ bỏ lỡ. Thay vào đó, hãy cung cấp tài liệu và truy vấn của bạn cho một trong các mô hình ngôn ngữ thị giác nâng cao như Qwen3-VL để không bỏ lỡ bất kỳ ngữ cảnh nào.

Tổng kết

Trong bài đăng blog này, chúng tôi muốn cung cấp cho bạn cái nhìn tổng quan về cách chọn mô hình OCR, các mô hình và khả năng tiên tiến hiện có, cũng như các công cụ để bạn bắt đầu với OCR. Nếu bạn muốn tìm hiểu thêm về OCR và các mô hình ngôn ngữ thị giác, chúng tôi khuyến khích bạn đọc các tài nguyên dưới đây.

Cộng đồng

  • abol3z Nếu chỉ có điều này xuất hiện vào tuần trước! Tôi đã dành cả tuần qua để tìm hiểu và đánh giá tất cả những mô hình này cùng với các mô hình bổ sung, và tôi muốn chỉ ra một sự điều chỉnh. OlmOCR không phải là mô hình chỉ có tiếng Anh, trên thực tế, nó cho kết quả tốt nhất trên tất cả các framework VLM và không VLM trên tập dữ liệu tiếng Ả Rập của tôi.
    • doladoo: Bạn đã thử VLM nào?
    • merve: @abol3z mô hình cơ sở của OlmOCR là Qwen2.5-VL, là mô hình đa ngôn ngữ, nhưng bản thân mô hình được huấn luyện và đánh giá trên các tệp PDF chỉ có tiếng Anh, vì vậy chúng tôi chỉ nêu rõ điều đó.
    • abol3z: @doladoo cả phiên bản 1 và 2 @merve theo thử nghiệm của tôi, nó không mất đi các kỹ năng đa ngôn ngữ, trên thực tế nó còn làm cho chúng tốt hơn nhiều. Tôi đã thử nghiệm cả Qwen2.5-VL và OlmOCR và cái sau là tốt nhất cho văn bản tiếng Ả Rập.
    • harpreetsahota: Tóm tắt tuyệt vời! Đừng quên, DeepSeek OCR cũng hỗ trợ OCR có neo hóa!
    • janus-zheng-sg: Tôi tự hỏi tại sao mô hình minerU 2.5 lại không được đưa vào so sánh? MinerU2.5-2509-1.2B
    • daya-shankar: Tóm tắt siêu hữu ích. Khả năng nhận biết bố cục và lợi ích về chi phí thực sự nổi bật. Cảm ơn đã chia sẻ!
    • pkghf: Thông tin chi tiết tuyệt vời và phân tích các điểm chuẩn. Tôi sẽ sử dụng các tập dữ liệu ở đây để thực hiện đánh giá.
    • staghado: LightOnOCR-1B sẽ phù hợp với so sánh này như một người biểu diễn mạnh mẽ, vượt trội so với trọng lượng của nó:
      • 🎯 Hiệu suất: Đạt được kết quả hiện đại nhất trên OlmOCR Benchmark cho kích thước của nó—vượt qua DeepSeek-OCR, tương đương với dots.ocr (mặc dù nhỏ hơn 3 lần), hoạt động ngang bằng với PaddleOCR-VL và vượt trội hơn Qwen3-VL-2B tới 16 điểm
      • Tốc độ: Nhanh hơn 6 lần so với dots.ocr, nhanh hơn 2 lần so với PaddleOCR-VL-0.9B, nhanh hơn 1,73 lần so với DeepSeekOCR
      • 💸 Hiệu quả: Xử lý 5,71 trang/giây trên một H100 duy nhất (~493k trang/ngày) với chi phí <$0,01 mỗi 1.000 trang
      • 🧠 End-to-End: Khả năng phân biệt hoàn toàn mà không cần quy trình OCR bên ngoài—dễ dàng tinh chỉnh để cải thiện theo lĩnh vực cụ thể
      • 🧾 Linh hoạt: Xử lý bảng, hóa đơn, biểu mẫu, bố cục nhiều cột và ký hiệu toán học
      • 🌍 Các biến thể nhỏ gọn: Tùy chọn từ vựng 32k và 16k được tối ưu hóa cho các ngôn ngữ châu Âu Kết quả chi tiết hơn ở đây: bench
    • Fnkh: (Không có mô tả nào được cung cấp.)

Bài viết này đã được dịch từ tiếng Anh.


Bài viết khác từ Blog của chúng tôi


Cộng đồng

Recommended for You

datasetsopen-sourcevision- Mở khóa sức mạnh của hình ảnh với AI Sheets

Datasetsopen-sourcevision- Mở khóa sức mạnh của hình ảnh với AI Sheets

Bảng xếp hạng so sánh- AI - Từ lượt bình chọn của người dùng đến bảng xếp hạng mô hình dựa trên sự tham gia

Bảng xếp hạng so sánh- AI - Từ lượt bình chọn của người dùng đến bảng xếp hạng mô hình dựa trên sự tham gia

Bảng xếp hạng so sánh- AI - Từ lượt bình chọn của người dùng đến bảng xếp hạng mô hình dựa trên sự tham gia