Trò chuyện với PDF 300 trang
Tại sao PDF lại là một vấn đề đặc biệt
PDF khó xử lý vì nó kết hợp 3 thế giới:
1. Văn bản có cấu trúc: đoạn văn, danh sách, chú thích cuối trang
2. Bố cục trực quan: cột, bảng biểu, sơ đồ, biểu đồ
3. Hình ảnh: ảnh chụp, logo, ảnh chụp màn hình nhúng trong tài liệu
PDF là định dạng visual-first: giữ nguyên giao diện trên mọi thiết bị. Nhưng văn bản chỉ là sản phẩm phụ — việc trích xuất nội dung ngữ nghĩa gốc không phải lúc nào cũng đơn giản.
Trên Brainiall, khi bạn gửi một PDF:
- Trích xuất văn bản thô (pdfplumber hoặc pdfium)
- Phát hiện bảng biểu (camelot hoặc tabula)
- Chuyển đổi từng trang thành hình ảnh
- Áp dụng OCR (Whisper-OCR hoặc Mistral-OCR) cho các trang không trích xuất được văn bản
- Nhận diện cấu trúc phân cấp (tiêu đề, mục)
- Tùy chọn: tóm tắt + vector hóa cho RAG

Luồng hội thoại: RAG vs full context
Hai chiến lược tùy theo kích thước tài liệu:
PDF < 50 trang (~100k token):
- Gửi toàn bộ văn bản vào prompt của Claude Sonnet hoặc Gemini Pro
- Model "nhìn thấy" tất cả và trả lời dựa trên toàn bộ ngữ cảnh
- Ưu điểm: không mất thông tin nào
- Nhược điểm: tốn kém cho nhiều câu hỏi (mỗi request đều xử lý lại toàn bộ PDF)
PDF > 50 trang:
- Sử dụng RAG (Retrieval Augmented Generation)
- Chia PDF thành các chunk ~500 token
- Vector hóa từng chunk
- Khi người dùng đặt câu hỏi, tìm kiếm 5-10 chunk liên quan nhất về mặt ngữ nghĩa
- Chỉ gửi những chunk đó vào prompt
- Ưu điểm: tiết kiệm chi phí + khả năng mở rộng cao
- Nhược điểm: nếu model cần kết nối thông tin từ các phần xa nhau, có thể mất ngữ cảnh
Brainiall tự động quyết định chiến lược phù hợp dựa trên kích thước PDF.
Các trường hợp sử dụng thực tế
- Tài liệu pháp lý: trò chuyện với hợp đồng 80 trang để tìm các điều khoản cụ thể
- Bài báo học thuật: "đâu là những lập luận chính phản bác luận điểm của tác giả?"
- Báo cáo tài chính: "so sánh tăng trưởng Q3 và Q4 trong báo cáo 10-K này"
- Hướng dẫn kỹ thuật: "quy trình reset thiết bị là gì?"
- Sách giáo khoa: gia sư riêng về bất kỳ chủ đề nào
- Hồ sơ pháp lý: tìm kiếm ngày tháng, các bên liên quan, sự kiện quan trọng trong hồ sơ 500+ trang
Những cạm bẫy thường gặp
- Bảng biểu phức tạp: bảng lồng nhau hoặc ô ghép có thể bị rối khi trích xuất văn bản; dùng OCR từ hình ảnh như phương án dự phòng
- Công thức toán học: LaTeX trong PDF trở thành văn bản khó đọc; vision models xử lý tốt hơn
- Tài liệu scan cũ: PDF chỉ là hình ảnh (không có văn bản) đòi hỏi OCR và có thể nhận sai từ
- Ngôn ngữ hiếm: các ngôn ngữ ít tài nguyên có chất lượng OCR kém hơn
- PDF có bảo mật: PDF được bảo vệ sao chép có thể chặn quá trình trích xuất — cần mật khẩu
Câu hỏi hiệu quả và không hiệu quả
Hiệu quả:
- "Luận điểm trung tâm của chương 3 là gì?"
- "Liệt kê tất cả các ngày được đề cập trong báo cáo này"
- "So sánh kết luận của mục 4 và mục 7"
- "Doanh thu thuần năm 2025 là bao nhiêu?"
Không hiệu quả:
- "Tóm tắt toàn bộ PDF này trong 2 đoạn" (yêu cầu toàn bộ ngữ cảnh có thể bị mất trong RAG)
- "Giọng điệu cảm xúc của tác giả ở phần cuối như thế nào?" (sắc thái khó nắm bắt trong các chunk)
- "Hình ảnh ở trang 45 là gì?" (cần vision chuyên biệt)

Tích hợp qua API
`python
import httpx
# Tải lên PDF trước
with open("contrato.pdf", "rb") as f:
r = httpx.post(
"https://api.brainiall.com/v1/files",
files={"file": f},
headers={"Authorization": "Bearer brnl-xxx"}
)
file_id = r.json()["id"]
# Sau đó, chat với tham chiếu đến file
r = httpx.post(
"https://api.brainiall.com/v1/chat/completions",
json={
"model": "claude-sonnet-4-6",
"messages": [
{"role": "user", "content": [
{"type": "text", "text": "Liste todas as partes deste contrato"},
{"type": "file", "file_id": file_id}
]}
]
},
headers={"Authorization": "Bearer brnl-xxx"}
)`
Dùng thử ngay bây giờ
Trong chat Brainiall, kéo thả một PDF vào khu vực nhập liệu và đặt câu hỏi. Tối đa 10MB mỗi file. Gói Pro $5.99 cho phép upload dung lượng lớn; gói Business có batch + lưu trữ 30 ngày.