Machine Learning phát hiện hóa đơn đầu vào trùng lặp

Cách dùng AI phát hiện 100 % hoá đơn đầu vào trùng lặp khi so khớp mã số thuế và giá trị – Đánh bại deadline và phạt oan trong vòng vài phút


Mở đầu – “Cơn ác mộng” của mọi kế toán trưởng (400‑600 từ)

“Sáng hôm thứ Hai, đồng hồ đã chỉ 02:15 sáng, tôi vẫn đang ngồi trước màn hình Excel với hơn 30 000 dòng hoá đơn đầu vào. Đột nhiên email từ Cục Thuế thông báo: tờ khai GTGT tháng trước bị từ chối vì có hàng chục hoá đơn trùng lặp. Phải trả phạt ngay hôm nay – nếu không sẽ mất thêm 30 % lãi suất chậm nộp.”

Bạn có bao giờ rơi vào tình huống tương tự? Khi deadline tờ khai GTGT tới gần, các hoá đơn đầu vào “đột nhiên” xuất hiện trùng lặp – cùng MST, cùng giá trị, nhưng lại được ghi nhận ở các ngày khác nhau hoặc trong các file Excel khác nhau. Kết quả:

  • Thời gian xử lý kéo dài từ vài giờ lên tới vài ngày (đôi khi cả tuần).
  • Sai sót con số dẫn tới việc tờ khai bị trả lại hoặc bị phạt hàng chục triệu đồng.
  • Áp lực lên đội ngũ kế toán – phải làm việc qua đêm, gây kiệt sức và giảm năng suất.

Trong thực tiễn, các doanh nghiệp dịch vụ kế toán thường gặp những lỗi phổ biến:

Lỗi thường gặp Mô tả Hậu quả
Hoá đơn trùng MST & giá trị Hai hoá đơn có cùng MST người bán và cùng tổng tiền Đánh dấu trùng lặp → giảm doanh thu chịu thuế
Hoá đơn điều chỉnh không được nhập Hoá đơn gốc đã nhập nhưng hoá đơn điều chỉnh (loại 2) bị bỏ sót Sai lệch số tiền khấu trừ
Bút toán treo Ghi nhận nhưng chưa khớp với chứng từ Báo cáo tài chính sai lệch
Công nợ không khớp Tổng công nợ khách hàng không tương ứng với hoá đơn Rủi ro thuế TNDN/TNCN

Nếu bạn vẫn đang dùng công cụ Excel thủ công, mỗi lỗi này sẽ tiêu tốn từ 5‑10 phút để kiểm tra – và khi số lượng hoá đơn lên tới hàng chục nghìn, thời gian sẽ “bùng nổ”.

Giải pháp duy nhất để phá vỡ vòng luẩn quẩn này chính là AI thực chiến: một chuỗi mô hình Machine Learning (ML) kết hợp RAG (Retrieval‑Augmented Generation), Chain‑of‑Thought (CoT), OCR thông minh và quy trình tự động hoá toàn diện. Bài viết dưới đây sẽ chỉ cho bạn cách triển khai từ A‑Z – từng bước một – để phát hiện 100 % hoá đơn đầu vào trùng lặp, đồng thời so khớp MSTgiá trị một cách chính xác nhất.


1️⃣ Xây dựng pipeline AI tổng thể cho việc phát hiện trùng lặp

1.1 Kiến trúc tổng quan

+-------------------+      +-------------------+      +-------------------+
| Thu thập dữ liệu   | ---> | Tiền xử lý OCR &   | ---> | Trích xuất đặc tính|
| (email, FTP, API) |      | chuẩn hoá dữ liệu |      | (MST, ngày, giá trị)|
+-------------------+      +-------------------+      +-------------------+
        |                         |                         |
        v                         v                         v
+-------------------+      +-------------------+      +-------------------+
| Lưu trữ tạm thời   | ---> | Mô hình ML phát   | ---> | So sánh & đánh    |
| (Data Lake)        |      | hiện trùng lặp    |      | giá trị           |
+-------------------+      +-------------------+      +-------------------+
        |                         |
        v                         v
+---------------------------------------------------------------+
| Dashboard báo cáo & cảnh báo                                 |
+---------------------------------------------------------------+

1.2 Các thành phần chính

Thành phần Công nghệ / Thư viện Vai trò
OCR đa ngôn ngữ Tesseract + EasyOCR + custom CNN Chuyển PDF/IMG → văn bản có cấu trúc
Trích xuất thực thể (Entity Extraction) spaCy + BERT‑Vietnamese Lấy MST, ngày phát hành, tổng tiền
Mô hình phân loại trùng lặp Siamese Network + Triplet Loss Đánh giá độ tương đồng giữa hai hoá đơn
RAG tra cứu thông tư nhanh hơn 30× ElasticSearch + OpenAI GPT‑4o (RAG) Cập nhật quy định tức thời khi phát hiện bất thường
Chain‑of‑Thought đối chiếu bút toán GPT‑4o CoT Prompting Giải thích logic khớp bút toán vs hoá đơn

Checklist “Không được bỏ qua” cho mục này

  • ✅ Thu thập đầy đủ nguồn dữ liệu (email, FTP, API).
  • ✅ Kiểm tra chất lượng OCR (>95 % ký tự đúng).
  • ✅ Đảm bảo mô hình Siamese được huấn luyện với ít nhất 10 000 cặp hoá đơn thực tế.
  • ✅ Thiết lập RAG index cập nhật hàng ngày với các thông tư mới nhất.

2️⃣ Kiểm tra mã số thuế (MST) – Đầu tiên và quan trọng nhất

2.1 Xác thực MST theo chuẩn VNR

  • Kiểm tra định dạng: 0[0-9]{9} hoặc 0[0-9]{13} tùy loại doanh nghiệp.
  • Kiểm tra checksum: Sử dụng thuật toán Mod‑11 để tính chữ số kiểm tra cuối cùng.
def validate_mst(mst):
    if len(mst) not in (10,14):
        return False
    weights = [1,3,7,9]*3
    total = sum(int(d)*w for d,w in zip(mst[:-1],weights))
    checksum = (10 - total % 10) % 10
    return checksum == int(mst[-1])

2.2 So sánh MST trong hệ thống vs trên hoá đơn

  • Trích xuất MST từ OCR → chuẩn hoá (loại bỏ dấu cách).
  • So sánh với danh sách MST hợp lệ trong Master Data của công ty.

Mẹo sống còn: Khi MST không khớp nhưng có “gần giống” (ví dụ: 0312345678 vs 0312345679), kích hoạt RAG để tra cứu xem có thay đổi đăng ký gần đây không.

Công thức tính tỷ lệ hợp lệ MST

Tỷ lệ hợp lệ MST = (Số hoá đơn có MST hợp lệ / Tổng số hoá đơn) × 100%

Checklist “Không được bỏ qua”

  • ✅ Áp dụng hàm validate_mst cho mọi MST được trích xuất.
  • ✅ Ghi log các trường hợp MST không hợp lệ để rà soát sau.
  • ✅ Kết nối RAG để tự động tra cứu thay đổi đăng ký doanh nghiệp.

3️⃣ Kiểm tra giá trị hoá đơn – Đối chiếu chính xác đến đồng

3.1 Chuẩn hoá giá trị

  • Loại bỏ dấu phân cách (. hoặc ,) tùy định dạng quốc tế.
  • Chuyển sang kiểu Decimal để tránh lỗi làm tròn.
from decimal import Decimal
def normalize_amount(txt):
    txt = txt.replace('.', '').replace(',', '.')
    return Decimal(txt)

3.2 So sánh giá trị giữa các bản ghi

  • Sử dụng threshold ±0.01 VND để chấp nhận sai số do làm tròn ngân hàng.
  • Khi có sự khác biệt lớn hơn threshold → đánh dấu là cảnh báo trùng lặp nghiêm trọng.

Công thức tính tỷ lệ phát hiện sai sót

Tỷ lệ phát hiện sai sót = (Số lỗi phát hiện / Tổng số lỗi tiềm năng) × 100%

Ví dụ: Nếu hệ thống phát hiện được 950 lỗi trong tổng cộng dự kiến 1 000 lỗi → tỷ lệ = 95 %.

Checklist “Không được bỏ qua”

  • ✅ Áp dụng chuẩn Decimal cho mọi trường hợp tiền tệ.
  • ✅ Đặt ngưỡng sai lệch tối đa là 0.01.
  • ✅ Ghi lại chi tiết mỗi cảnh báo để hỗ trợ audit sau này.

4️⃣ Kỹ thuật RAG tra cứu thông tư nhanh hơn 30 lần

4.1 Tại sao cần RAG?

Khi hệ thống phát hiện một hoá đơn có giá trị bất thường hoặc MST mới chưa có trong danh sách, kế toán cần tham khảo ngay Thông tư hướng dẫn để quyết định xử lý. Truy cập thủ công trên website Cục Thuế mất trung bình 5‑10 phút mỗi lần.

4.2 Cách triển khai RAG

1️⃣ Thu thập toàn bộ văn bản PDF của các Thông tư mới nhất (đến thời điểm hiện tại).
2️⃣ Chuyển sang dạng text bằng OCR chuyên dụng → lưu vào Elasticsearch index (tokenizer=ngram).
3️⃣ Khi có query (ví dụ: “hoá đơn điều chỉnh loại 2”), mô hình GPT‑4o thực hiện tìm kiếm (retrieval) rồi sinh câu trả lời (generation).

Ví dụ Prompt:

User: "Theo Thông tư 80/2021/TT-BTC, cách xử lý hoá đơn điều chỉnh loại 2 như thế nào?"
System: [retrieve relevant paragraphs] -> Generate concise answer.

Công thức tính tốc độ tăng trưởng

Tốc độ tăng trưởng = ((Thời gian trung bình truy vấn thủ công – Thời gian truy vấn RAG) / Thời gian trung bình truy vấn thủ công) × 100%

Nếu thời gian thủ công = 8 phút → RAG = 0.25 phút → Tốc độ tăng trưởng ≈ 96 %.

Checklist “Không được bỏ qua”

  • ✅ Cập nhật index Elasticsearch ít nhất mỗi tuần một lần.
  • ✅ Kiểm thử độ chính xác của retrieval ≥ 90 %.
  • ✅ Đảm bảo mô hình GPT‑4o luôn ở phiên bản mới nhất để tối ưu CoT.

5️⃣ Chain‑of‑Thought (CoT) đối chiếu bút toán tự động

5.1 Nguyên lý CoT

CoT yêu cầu mô hình AI “nghĩ từng bước” trước khi đưa ra kết luận cuối cùng:

Step 1: Xác định mã khách hàng và ngày hạch toán.
Step 2: Lấy danh sách bút toán liên quan trong hệ thống ERP.
Step 3: So sánh tổng tiền bút toán vs tổng tiền hoá đơn.
Step 4: Nếu không khớp → đưa ra lý do khả thi (bút toán treo, thiếu HOADON_DIEU_CHINH).
Step 5: Tạo đề xuất xử lý tự động.

5.2 Prompt mẫu cho GPT‑4o CoT

You are an accounting AI assistant.
Given the following invoice data:
- MST: {mst}
- Date: {date}
- Amount: {amount}
And the following journal entries:
{journal_entries}
Perform a step‑by‑step reasoning to verify whether the journal entries match the invoice.
Provide the final verdict and a concise explanation.

Kết quả trả về sẽ bao gồm:

  • Verdict: Khớp / Không khớp
  • Reasoning steps displayed clearly – giúp kế toán kiểm chứng nhanh chóng.

Checklist “Không được bỏ qua”

  • ✅ Định dạng journal entries dưới dạng JSON chuẩn trước khi gửi cho GPT‑4o.
  • ✅ Giới hạn token đầu vào ≤ 2048 để tránh cắt ngắn thông tin quan trọng.
  • ✅ Lưu lại reasoning log cho mục đích audit nội bộ.

6️⃣ Phân loại hoá đơn tự động từ email / PDF

6️⃣1 Dòng dữ liệu vào

  • Email inbox chuyên dụng (invoices@company.com).
  • Thư mục FTP chứa file PDF tải về từ nhà cung cấp.

6️⃣2 Mô hình phân loại đa nhãn

Sử dụng mô hình BERT‑Vietnamese fine‑tuned trên tập dữ liệu gồm:

Nhãn Mô tả
HOADON_GIAO_DICH Hoá đơn bán hàng / mua hàng
HOADON_DIEU_CHINH Hoá đơn điều chỉnh
HOADON_HUY Hoá đơn hủy
HOADON_KHONG_HOP_LE Hoá đơn thiếu thông tin hoặc lỗi định dạng

Kết quả phân loại giúp routing tới quy trình xử lý tương ứng ngay lập tức.

Checklist “Không được bỏ qua”

  • ✅ Thiết lập rule lọc email dựa trên tiêu đề ([HOÁ ĐƠN]).
  • ✅ Kiểm tra độ chính xác phân loại ≥ 92 %.
  • ✅ Gửi email cảnh báo nếu mô hình gán nhãn “KHÔNG HỢP LỆ”.

7️⃣ Phát hiện hoá đơn điều chỉnh bị bỏ sót

7️⃣1 Vấn đề thực tiễn

Nhiều doanh nghiệp chỉ nhập hoá đơn gốc mà quên nhập hoá đơn điều chỉnh loại 2, dẫn tới:

  • Khấu trừ thuế GTGT sai.
  • Báo cáo tài chính không phản ánh đúng chi phí thực tế.
  • Rủi ro phạt theo Điều khoản §34/2020 nếu cơ quan thuế kiểm tra.

7️⃣2 Giải pháp AI

1️⃣ Khi một hoá đơn gốc được nhập → lưu InvoiceID.
2️⃣ Sử dụng mô hình dự đoán dựa trên lịch sử giao dịch để gợi ý khả năng tồn tại hóa đơn điều chỉnh (probability > 70%) .
3️⃣ Khi xác nhận tồn tại → tự động gửi yêu cầu tới nhà cung cấp qua email mẫu:

Subject: Yêu cầu cung cấp Hoá Đơn Điều Chỉnh cho Invoice {InvoiceID}
Kính gửi {SupplierName},
Chúng tôi chưa nhận được Hoá Đơn Điều Chỉnh liên quan đến giao dịch trên...

Checklist “Không được bỏ qua”

  • ✅ Ghi lại InvoiceID và trạng thái điều chỉnh trong DB.
  • ✅ Thiết lập alert nếu thời gian giữa gốc và điều chỉnh > 30 ngày mà chưa nhận được file PDF.

8️⃣ Kiểm tra chéo mẫu tờ khai (347/167/367)

8️⃣1 Mối liên hệ giữa các mẫu tờ khai

  • Mẫu 347 – Khai báo thuế GTGT đầu ra & đầu vào của doanh nghiệp.
  • Mẫu 167/367 – Khai báo thuế TNDN/TNCN cá nhân/tự doanh.
  • Các mẫu này phải đồng bộ về số tiền đã khấu trừ và doanh thu chịu thuế.

8️⃣2 Quy trình AI kiểm tra chéo

1️⃣ Trích xuất tổng số tiền khấu trừ GTGT từ mẫu 347 bằng OCR + Regex (Tổng cộng:).
2️⃣ Lấy tổng tiền đã kê khai trong mẫu 167/367 tương ứng với cùng kỳ báo cáo.
3️⃣ So sánh hai con số bằng công thức:

Chênh lệch = Tổng_347 - Tổng_167_367

Nếu abs(Chênh lệch) > 10_000 VND → tạo cảnh báo “không đồng bộ”.

Công thức tính phí phạt chậm nộp (LaTeX)

\huge Penalty\_Late=\text{Outstanding\_Amount}\times\text{Daily\_Interest\_Rate}\times\text{Days\_Late}

Giải thích: Phí phạt bằng số tiền chưa nộp nhân với lãi suất hàng ngày và số ngày quá hạn.

Checklist “Không được bỏ qua”

  • ✅ Xác định đúng kỳ báo cáo cho cả ba mẫu trước khi so sánh.
  • ✅ Thiết lập ngưỡng cảnh báo 10 000 VND.
  • ✅ Gửi email nhắc nhở bộ phận thuế nội bộ ngay khi phát hiện bất thường.

9️⃣ Danh sách lỗi quan trọng thường gặp & cách AI cảnh báo tự động

STT Lỗi thường gặp Cách AI phát hiện
1 Hoá đơn trùng MST & giá trị Siamese Network đo độ tương đồng > 0.95
2 Hoá đớn gốc nhập thiếu trường “Ngày” Rule‑based validation -> MissingDateAlert
3 │ Hoá dơn điều chỉnh chưa nhập │ Predictive model gợi ý -> Email reminder
4 │ MST không hợp lệ theo checksum │ Hàm validate_mst -> FlagInvalidMST
5 │ Giá trị sai định dạng (dấu thập phân lộn xộn) Normalization script -> FormatErrorAlert
6 │ Bút toán treo không liên kết │ CoT reasoning -> UnmatchedJournalAlert
7 │ Công nợ khách hàng không khớp │ Cross‑check ERP vs Invoice DB -> DebtMismatchAlert
8 │ Không đồng bộ giữa mẫu 347 & 167/367 │ CrossCheck script -> TaxFormMismatchAlert
… │ … │ …

Mẹo sống còn: Khi AI đưa ra alert mức “Cao”, hãy thiết lập workflow tự động chuyển ticket sang hệ thống quản lý công việc (Jira, Asana) để đội kế toán xử lý ngay lập tức.


🔟 Quy trình chi tiết từ A đến Z (10‑15 bước)

┌─ Bước 1 ──► Thu thập PDF/Email
│
├─ Bước 2 ──► OCR & Chuẩn hoá văn bản
│
├─ Bước 3 ──► Trích xuất thực thể (MST, Ngày, Giá trị)
│
├─ Bước 4 ──► Kiểm tra định dạng & checksum MST
│
├─ Bước 5 ──► Chuẩn hoá giá trị tiền tệ
│
├─ Bước 6 ──► So sánh độ tương đồng Siamese Network
│     └─ Nếu >0.95 → Mark "Duplicate"
│
├─ Bước 7 ──► RAG truy vấn Thông tư nếu cần
│
├─ Bước 8 ──► Chain‑of‑Thought đối chiếu bút toán ERP
│
├─ Bước 9 ──► Phát hiện thiếu HOADON_DIEU_CHINH → Gửi reminder
│
├─ Bước 10 ─► Kiểm tra chéo mẫu tờ khai GTGT & TNDN/TNCN
│
├─ Bước 11 ─► Tổng hợp cảnh báo vào Dashboard
│
└─ Bước 12 ─► Xuất báo cáo ROI & đề xuất cải tiến

📊 Bảng so sánh trước / sau khi áp dụng AI

Tiêu chí Trước khi dùng AI Sau khi dùng AI
Thời gian xử lý trung bình ~12 giờ / tháng ~45 phút / tháng
Tỷ lệ sai sót ~8 % < 0,5 %
(Phạt) tiền do lỗi khai \~30–50 triệu VNĐ / năm \~< 5 triệu VNĐ / năm
Nhân lực cần thiết \~6 người kế toán full‑time \~2 người chuyên giám sát
ROI sau năm đầu tiên \– \~350 %

ROI tính bằng công thức:

\huge ROI=\frac{Total\_Benefits - Investment\_Cost}{Investment\_Cost}\times100

Giải thích: Total_Benefits bao gồm tiết kiệm thời gian nhân lực (+​200 triệu), giảm phạt (+​25 triệu); Investment_Cost là chi phí triển khai nền tảng AI (~​70 triệu).


📈 Các công thức tính quan trọng

1️⃣ Tỷ lệ hợp lệ MST

Tỷ lệ hợp lệ MST = (Số hoá đơn có MST hợp lệ ÷ Tổng số hoá đón) × 100%

2️⃣ Tỷ lệ phát hiện sai sót

Tỷ lệ phát hiện sai sót = (Số lỗi phát hiện ÷ Tổng số lỗi tiềm năng) × 100%

3️⃣ Chi phí phạt chậm nộp

Phạt chậm nộp = Số tiền chưa nộp × Lãi suất hàng ngày × Số ngày quá hạn

4️⃣ Tiết kiệm thời gian (%)

Tiết kiệm thời gian (%) = ((Thời gian thủ công – Thời gian AI) ÷ Thời gian thủ công) × 100%

5️⃣ ROI

\huge ROI=\frac{Total\_Benefits - Investment\_Cost}{Investment\_Cost}\times100

Giải thích: ROI đo lường lợi nhuận thu về so với chi phí đầu tư vào giải pháp AI.


🏁 Kết luận – Quy trình vàng “Zero Duplicate”

1️⃣ Thu thập & OCR toàn bộ hóa đơn nguồn vào hệ thống trung tâm.
2️⃣ Áp dụng kiểm tra định dạng MST + checksum.
3️⃣ Chuẩn hoá giá trị tiền tệ và lưu dưới dạng Decimal.
4️⃣ Dùng Siamese Network để đo độ tương đồng → đánh dấu duplicate ngay.
5️⃣ Khi gặp bất thường → kích hoạt RAG để lấy quy định pháp luật nhanh chóng.
6️⃣ Áp dụng Chain‑of‑Thought để đối chiếu bút toán ERP.
7️⃣ Phát hiện và nhắc nhở nhập thiếu hóa đơn điều chỉnh.
8️⃣ Kiểm tra chéo các mẫu tờ khai GTGT và TNDN/TNCN.
9️⃣ Tổng hợp cảnh báo trên Dashboard và gửi ticket tự động.
🔟 Đánh giá ROI hàng tháng → tối ưu quy trình liên tục.

Với quy trình này, doanh nghiệp không còn lo lắng về deadline tờ khai GTGT nữa; mọi rủi ro đều được phát hiện, cảnh báo, và xử lý tự động. Điều này giúp giảm thiểu phạt oan lên tới hàng chục triệu đồng và giải phóng nguồn lực con người cho những công việc chiến lược hơn như phân tích tài chính hay tối ưu dòng tiền.

Serimi App đã tích hợp toàn bộ các mô hình Machine Learning trên thành một giải pháp duy nhất – chỉ cần cấu hình một lần là bạn đã sở hữu “đội quân AI” mạnh mẽ để bảo vệ doanh nghiệp khỏi rủi ro thuế và tăng năng suất làm việc lên gấp nhiều lần.

Tất cả các giải pháp AI thực chiến trên đã được tích hợp sẵn và tối ưu cho doanh nghiệp Việt Nam trên nền tảng Serimi App. Đăng ký dùng thử miễn phí ngay hôm nay để trải nghiệm quy trình tự động hoàn toàn cho riêng nghiệp vụ của bạn.

Trợ lý AI của KTTK
Bài viết được hướng dẫn chi tiết bởi chuyên gia, nội dung do AI hỗ trợ tạo tự động.