AI phân loại bút toán: từ hóa đơn đến TK kế toán trong 5 giây
Hybrid stack (lookup → vector similarity → LLM) đạt 94.2% composite accuracy trên 5,000 hóa đơn thật. 3 layer trap để bắt AI sai trước khi post bút toán.
Founder, NKKTech Group · CEO, est-invoice
OCR hóa đơn (xem bài trước) chỉ là nửa câu chuyện. Sau khi extract được 14 trường, kế toán vẫn phải:
- Quyết định TK Nợ (chi phí gì) — 622, 627, 641, 642, 635...
- Quyết định TK Có (nguồn) — 111, 1121, 331, ...
- Phân bổ VAT đầu vào — 1331 vs 1332
- Quyết định khấu trừ hay không (TT 219/2013)
Với 200 hóa đơn/tháng × 4 quyết định = 800 lần phải nghĩ. Mỗi quyết định sai → bút toán sai → tới quý sau mới phát hiện. est-invoice rút đoạn này từ "1-2 phút/hóa đơn" còn "5 giây cho 100 hóa đơn batch".
Stack AI phân loại bút toán
Khác với OCR (vision LLM), phân loại bút toán dùng hybrid stack:
- Lookup-first: 80% hóa đơn từ nhà cung cấp quen (điện, nước, internet, thuê văn phòng, lương offset, vv) khớp NCC-MST → est-invoice nhớ mapping từ lần trước, áp ngay 0ms
- Vector similarity: 15% match "mô tả gần đúng" với hóa đơn cũ — em embedding bằng OpenAI ada-002, lookup k-NN trong tenant-scope, áp template phù hợp
- LLM classifier: 5% còn lại (hóa đơn lạ) → Claude Sonnet 4 nhận extract output + TT 200 chart of accounts → trả về TK đề xuất với confidence 0-100
- Rule layer:Apply TT 200 + TT 96/2015 sau: các check tự động (xe ô tô > 1.6 tỷ → cap 1.6 tỷ; chi phí tiếp khách → 642; lãi vay liên kết → check ratio EBITDA...)
Benchmark trên 5,000 hóa đơn thật (Q1 2026)
Test trên 3 tenant production (Phúc Khang sản xuất, Sao Mai thương mại, Đại Việt dịch vụ), tổng 5,000 hóa đơn random Q1 2026:
- Composite accuracy (cả TK Nợ + TK Có + VAT class đúng hết): 94.2%
- TK Nợ chính xác (mức 4 số chi tiết): 97.1%
- VAT khấu trừ/không khấu trừ đúng theo TT 219/2013:98.6%
- Tốc độ P50: 80ms / hóa đơn (lookup hit)
- Tốc độ P99: 3.2 giây / hóa đơn (LLM fallback, hóa đơn chưa từng thấy)
Composite accuracy 94.2% nghĩa là 94 hóa đơn auto-postkhông cần review. 6 còn lại được flag confidence < 70 cho kế toán spot-check (trung bình 30 giây/cái).
Ví dụ thực: hóa đơn FPT Telecom internet văn phòng
Input từ OCR:
{
"supplier": "FPT Telecom",
"supplier_mst": "0101778163",
"amount_no_vat": 2727273,
"vat_rate": 0.1,
"vat_amount": 272727,
"total": 3000000,
"items": [{
"desc": "Cước internet doanh nghiệp tháng 04/2026",
"qty": 1, "unit_price": 2727273
}]
}est-invoice xử trong 80ms:
- Lookup hit: FPT-MST 0101778163 đã có 13 hóa đơn cũ trong tenant → 100% mapping → áp:
- Nợ 642.7 (Chi phí dịch vụ mua ngoài) — 2,727,273
- Nợ 1331 (VAT đầu vào khấu trừ — dịch vụ) — 272,727
- Có 1121 (TGNH) — 3,000,000 (nếu đã auto-pay) hoặc 331 (CN) (nếu chờ thanh toán)
- VAT class: 1331 (dịch vụ, khấu trừ được — không thuộc danh sách Điều 14 TT 219)
- Source confidence: 100 → auto-post, no review needed
Ví dụ khó: hóa đơn nhà hàng tiếp khách
Input:
{
"supplier": "Nhà hàng Cánh Buồm",
"supplier_mst": "0312345678",
"amount_no_vat": 4545455,
"vat_amount": 454545,
"items": [{ "desc": "Set menu 10 khách + đồ uống", "qty": 1, "unit_price": 4545455 }]
}Đây là case khó vì:
- Cần xác định đây là "tiếp khách" (TK 642.8) hay "ăn uống nhân viên" (TK 622/627/642)
- Tiếp khách bị cap 0.5% (TT 96/2015) — chi vượt → cộng vào chi phí KHÔNG được trừ
- VAT đầu vào của tiếp khách vượt định mức → KHÔNG được khấu trừ → 1332 không phải 1331
est-invoice xử:
- LLM classify: keyword "khách" + nhà hàng → "tiếp khách" (confidence 85)
- Rule layer: pull tổng "tiếp khách YTD" → check ratio với chi phí khác
- Nếu chưa vượt 0.5%: Nợ 642.8 + Nợ 1331; nếu vượt: Nợ 642.8 (vẫn ghi nhận chi phí) + Nợ 1332 (VAT KHÔNG khấu trừ, sẽ chuyển thành chi phí cuối năm)
- Flag warning UI: "Tiếp khách YTD: ₫45M / cap ₫50M (90%) — review trước quyết toán"
Khi nào AI sai — và cách trap nó
Em đã build 3 layer trap để bắt AI sai trước khi post bút toán:
Layer 1: Confidence threshold
Bất kỳ field nào confidence < 70 → highlight + cần review. Default settings.
Layer 2: Anomaly detection
So sánh với pattern lịch sử tenant. Ví dụ: hóa đơn FPT Telecom thường 2-5 triệu/tháng, nếu xuất hiện 50 triệu → flag "Anomaly: 10x average". Không block, chỉ warn.
Layer 3: Period-close cross-check
Khi đóng kỳ, system tính tỷ lệ bút toán có "AI-classified=true" và confidence < 95. Nếu > 20% kỳ đó → đề nghị kế toán dành 30 phút sample 20 hóa đơn review.
So với phần mềm cũ
MISA AMIS có template bút toán có thể clone, nhưng:
- Phải manual map mỗi NCC vào template — 200 NCC = 200 lần map
- Không có vector similarity → NCC mới = phải gõ tay
- Không có anomaly detection → sai sót chỉ phát hiện cuối quý
est-invoice lookup-first nghĩa là NCC quen 1 lần map duy nhất, sau đó forever automated. 200 NCC × 1 map = 1 buổi setup ban đầu. Sau đó 0 công.
Bắt đầu trong 5 phút
- Tạo trial 30 ngày miễn phí
- Vào
/expenses → Upload10-20 hóa đơn của bạn - Sau 1 phút bấm
/journal?status=DRAFTxem bút toán AI đã đề xuất - Review + post — Tony bet 90%+ đúng ngay lần đầu
Đọc tiếp: Khai thuế GTGT tự động— bút toán đúng từ đầu → tờ khai GTGT đúng theo đó.