Trích xuất văn bản từ hình ảnh với Vision AI
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.

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ế
- Số hóa tài liệu lịch sử: thư viết tay, biên bản cũ
- Đơn thuốc y tế: chuyển đổi đơn thuốc viết tay thành văn bản có cấu trúc
- Biển hiệu trong ảnh du lịch: "tấm biển này viết gì?"
- Danh thiếp: trích xuất tên, email, số điện thoại từ một bức ảnh
- Bảng trắng: ảnh chụp buổi brainstorm trong cuộc họp → văn bản kỹ thuật số
- Hóa đơn chụp ảnh: xử lý invoice nhanh chóng ngay trên ứng dụng
- Kiểm tra công nghiệp: đọc nhãn thiết bị từ ảnh chụp thực địa
Những lưu ý kỹ thuật quan trọng
- Độ phân giải: vision-LLM cần tối thiểu 512×512. Ảnh chụp từ smartphone hiện đại là lý tưởng; ảnh in độ phân giải thấp sẽ thất bại.
- Hướng ảnh: hình ảnh xoay 90° vẫn hoạt động nhưng độ chính xác giảm — hãy xoay lại trước khi xử lý
- Độ tương phản cao giúp ích: chữ đen trên nền trắng > chữ xám nhạt trên nền trắng > chữ xám trên nền xám
- Độ nét: ảnh mờ làm giảm đáng kể chất lượng; hãy chụp rõ nét hoặc dùng camera chuyên nghiệp
- Phản chiếu: ảnh chụp màn hình có phản chiếu hoặc bóng = vấn đề lớn. Ưu tiên chụp trực tiếp hoặc dùng screenshot
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.