Ana Brainiall

Trích xuất văn bản từ hình ảnh với Vision AI

iniciante · 8 min · Por Ana Brainiall

OCR đã thay đổi hoàn toàn trong giai đoạn 2024-2026

OCR truyền thống (Tesseract, ra đời từ năm 1985) hoạt động theo 2 bước:

1. Phát hiện: xác định các vùng trong hình ảnh có chứa văn bản
2. Nhận dạng: phân loại từng chữ cái riêng lẻ

Hoạt động tốt với tài liệu in ấn rõ ràng, phông chữ phổ biến, bằng tiếng Anh. Trong bất kỳ tình huống nào khác (chữ viết tay, biển hiệu cong, văn bản trong ảnh, ngôn ngữ ít phổ biến, bố cục phức tạp), độ chính xác giảm xuống còn 60-70%.

Các vision-language model hiện đại (Claude Sonnet, GPT-5, Gemini 3 Pro) đã cách mạng hóa OCR. Thay vì phân loại từng chữ cái, chúng diễn giải toàn bộ hình ảnh — nhận biết ngữ cảnh, tự động sửa lỗi dựa trên ý nghĩa, xử lý linh hoạt mọi bố cục.

comparação lado a lado — à esquerda uma receita manuscrita com Tesseract gerando

Khi nào nên dùng công cụ nào

Tesseract (mã nguồn mở, chạy CPU cục bộ):
- Tài liệu in ấn chuẩn hóa (hóa đơn, PDF scan)
- Khối lượng lớn (10.000+ trang/ngày) khi độ trễ là yếu tố quan trọng
- Trường hợp yêu cầu bảo mật, không thể gửi dữ liệu lên đám mây
- Chi phí: gần như bằng không

Vision-LLM (qua API):
- Văn bản viết tay
- Biển hiệu, áp phích, ảnh chụp ngoài đường
- Văn bản trên vật thể 3D (lon, nhãn cong)
- Tài liệu có bố cục phức tạp (bảng biểu, nhiều cột, chú thích cuối trang)
- Ngôn ngữ ít tài nguyên (tiếng Ả Rập, tiếng Trung, tiếng Hebrew)
- Chi phí: khoảng $0,001 đến $0,01 mỗi hình ảnh

Whisper-OCR (mô hình chuyên biệt):
- Tài liệu có nhiều bảng biểu
- Phương trình toán học
- Bố cục khoa học (bài báo nghiên cứu)

Cách tạo một request hiệu quả

Để vision-LLM hoạt động tốt nhất, hãy cấu trúc prompt như sau:

Kém hiệu quả:
> "OCR this"

Hiệu quả:
> "Trích xuất toàn bộ văn bản hiển thị trong hình ảnh này, giữ nguyên cấu trúc phân cấp (tiêu đề, tiêu đề phụ, đoạn văn). Nếu có bảng, định dạng theo markdown. Nếu văn bản không đọc được ở một vùng nào đó, hãy ghi [không đọc được]. Nếu có văn bản bằng nhiều ngôn ngữ, hãy tách riêng."

Sự khác biệt về chất lượng là rất rõ rệt. LLM sử dụng "sự hiểu biết" về cấu trúc để tổ chức kết quả đầu ra.

Các trường hợp sử dụng thực tế

Những lưu ý kỹ thuật quan trọng

Tích hợp qua API

`python
import httpx, base64

with open("foto.jpg", "rb") as f:
img_b64 = base64.b64encode(f.read()).decode()

r = httpx.post(
"https://api.brainiall.com/v1/chat/completions",
json={
"model": "claude-sonnet-4-6",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Trích xuất văn bản từ hình ảnh này theo định dạng markdown, giữ nguyên cấu trúc."},
{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{img_b64}"}}
]
}]
},
headers={"Authorization": "Bearer brnl-xxx"}
)
print(r.json()["choices"][0]["message"]["content"])
`

Thử ngay bây giờ

Trong chat Brainiall, nhấp vào biểu tượng đính kèm tệp, gửi một hình ảnh có văn bản và yêu cầu "trích xuất văn bản từ hình ảnh này". Kết quả trong 2-5 giây. Gói Pro bao gồm 100 lần phân tích/tháng; gói Business mở khóa tính năng xử lý hàng loạt.

Thích khóa học?

Mở khóa 17 khóa học Pro + 40+ AI trong chat + tạo video, âm nhạc và Studio đầy đủ.

Lên Pro · $5.99/tháng

Hủy bất cứ lúc nào · Không ràng buộc