MỤC LỤC
LỜI CẢM ƠN…………………………………………………….……………….....................…...i
TÓM TẮT NỘI DUNG ĐỒ ÁN………………………………………………...…....................….ii
CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI........................................................................................ 1
1.1 Đặt vấn đề....................................................................................................................... 1
1.2 Mục tiêu đề tài, đối tượng và phạm vi nghiên cứu.......................................................... 2
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT........................................................................................ 4
2.1 Tổng quan về OCR.......................................................................................................... 4
2.2 OCR (Nhận dạng ký tự quang học) là gì?........................................................................4
2.2.2 Tại sao OCR lại quan trọng?........................................................................................ 4
2.2.3 OCR hoạt động như thế nào?...................................................................................... 4
2.3 Phương pháp OCR truyền thống................................................................................... 5
2.3.1 Text Detection với EAST................................................................................................5
2.2.2 Text Recognition........................................................................................................... 6
2.2.3 Tesseract..................................................................................................................... 11
2.2.4 EasyOCR..................................................................................................................... 11
2.2.5 TrOCR......................................................................................................................... 12
2.3 VLMs(Vision language Models)...................................................................................... 14
2.3.1 Gemini..........................................................................................................................19
2.3.2 Chat GPT..................................................................................................................... 20
CHƯƠNG 3. THIẾT KẾ HỆ THỐNG................................................................................... 22
3.1 Tổng quan hệ thống....................................................................................................... 22
3.1.1 Yêu cầu hệ thống........................................................................................................ 22
3.1.2 Luồng hoạt động tổng quan của hệ thống................................................................... 22
3,2 Thiết kế các thành phần................................................................................................. 23
3.2.1 Phần mềm trích xuất thông tin.....................................................................................23
3.2.2 Cơ sở dữ liệu.............................................................................................................. 24
3.2.3 Ứng dụng Web và App điện thoại............................................................................... 25
CHƯƠNG 4. KẾT QUẢ ĐẠT ĐƯỢC................................................................................... 29
4.1 Xây dựng thành công hệ thống trích xuất hóa đơn đa nền tảng.................................... 29
4.1.1 Mẫu hóa đơn 1.............................................................................................................29
4.1.2 Mẫu hóa đơn 2............................................................................................................ 31
4.1.3 Mẫu hóa đơn 3............................................................................................................ 33
4.2 Đánh giá hiệu năng........................................................................................................ 36
4.3 So sánh với các giải pháp khác..................................................................................... 36
CHƯƠNG 5. KẾT LUẬN..................................................................................................... 38
5.1 Kết luận.......................................................................................................................... 38
5.2 Hạn chế......................................................................................................................... 38
5.3 Hướng phát triển:.......................................................................................................... 38
PHỤ LỤC..............................................................................................................................40
TÓM TẮT NỘI DUNG ĐỒ ÁN
Đề tài tập trung vào việc phát triển hệ thống phần mềm tự động trích xuất thông tin từ hóa đơn bán hàng nhằm hỗ trợ doanh nghiệp số hóa quy trình xử lý hóa đơn. Vấn đề đặt ra là làm sao để hệ thống có thể nhận dạng và trích xuất chính xác các trường thông tin như số hóa đơn, ngày, danh sách sản phẩm và tổng tiền từ ảnh hóa đơn có định dạng đa dạng.
Phương pháp thực hiện bao gồm kết hợp các kỹ thuật thị giác máy tính hiện đại với trí tuệ nhân tạo đa phương thức, trong đó sử dụng mô hình Gemini của Google để thực hiện OCR và phân tích ngữ nghĩa. Phần mềm được xây dựng bằng ngôn ngữ Python, sử dụng Qt Designer để thiết kế giao diện desktop, Flask cho web backend, và MySQL làm cơ sở dữ liệu lưu trữ. Ngoài ra, một ứng dụng Android cơ bản được phát triển để hỗ trợ người dùng chụp và gửi hóa đơn từ thiết bị di động.
Kết quả đồ án đạt được là hệ thống hoạt động ổn định, có khả năng xử lý nhiều loại hóa đơn với độ chính xác trích xuất trung bình 90-95%. Hệ thống đáp ứng được các mục tiêu đặt ra, có tính thực tiễn cao và khả năng tích hợp vào quy trình kế toán hiện tại. Trong tương lai, hệ thống có thể được mở rộng với tính năng xác minh hóa đơn thật - giả, nhận dạng chi tiết sản phẩm, tích hợp hệ thống kế toán và cải tiến giao diện người dùng. Qua đề tài, sinh viên đã nâng cao kiến thức về AI, lập trình đa nền tảng, xử lý ảnh, và kỹ năng triển khai hệ thống thực tế.
Hà Nội, ngày … tháng … năm 20…
Sinh viên thực hiện
(Ký và ghi rõ họ tên)
…………………
CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI
1.1 Đặt vấn đề
Trong thời đại kỹ thuật số, các doanh nghiệp đang dần thoát khỏi các quy trình thủ công và áp dụng các công cụ tự động hóa để hợp lý hóa hoạt động của mình. Một trong những khía cạnh quan trọng nhất của sự chuyển đổi này là Trích xuất dữ liệu hóa đơn. Công cụ mạnh mẽ này giúp các công ty xử lý khối lượng lớn hóa đơn một cách chính xác và nhanh chóng.
* Trích xuất dữ liệu hóa đơn là gì?
Trích xuất dữ liệu hóa đơn là quá trình tự động trích xuất dữ liệu quan trọng từ hóa đơn, chẳng hạn như số hóa đơn, ngày, số tiền, thông tin chi tiết về thuế, tên nhà cung cấp, v.v. Bằng cách số hóa và tự động hóa việc trích xuất dữ liệu hóa đơn, các doanh nghiệp có thể loại bỏ dữ liệu thủ công, nhập liệu, giảm thiểu lỗi của con người và cải thiện hiệu quả hoạt động.
* Lợi ích của việc trích xuất dữ liệu hóa đơn:
- Tăng độ chính xác và giảm lỗi của con người: Trích xuất hóa đơn tự động giúp giảm việc nhập dữ liệu thủ công, dẫn đến ít lỗi hơn và dữ liệu chính xác hơn
- Thời gian xử lý nhanh hơn: Hóa đơn được xử lý theo thời gian thực, giảm thời gian xác minh dữ liệu thủ công và cải thiện tốc độ xử lý thanh toán.
+ Tăng cường bảo mật dữ liệu và tuân thủ: Dữ liệu hóa đơn được lưu trữ an toàn, đảm bảo tuân thủ luật riêng tư và quy định của ngành.
+ Hiệu quả chi phí: Bằng cách tự động hóa các nhiệm vụ lặp đi lặp lại, doanh nghiệp có thể cắt giảm chi phí hoạt động, giảm nhu cầu lao động thủ công và tập trung vào các hoạt động có giá trị gia tăng hơn.
* Những thách thức trong việc trích xuất dữ liệu hóa đơn:
Mặc dù trích xuất dữ liệu hóa đơn là một công cụ mạnh mẽ nhưng nó cũng có những thách thức:
- Sự thay đổi trong định dạng hóa đơn: Hóa đơn có nhiều định dạng khác nhau, gây khó khăn cho các phương pháp truyền thống phần mềm để trích xuất chính xác dữ liệu từ mỗi dữ liệu.
- Quét chất lượng kém: Hóa đơn có bản quét mờ hoặc hình ảnh chất lượng thấp có thể gây khó khăn cho hệ thống OCR, dẫn đến việc trích xuất dữ liệu không đầy đủ hoặc không chính xác.
- Sự khác biệt về ngôn ngữ và tiền tệ: Doanh nghiệp toàn cầu xử lý hóa đơn bằng nhiều ngôn ngữ và loại tiền tệ khác nhau, điều này có thể làm phức tạp quá trình trích xuất.
1.2 Mục tiêu đề tài, đối tượng và phạm vi nghiên cứu
Mục tiêu chính của đề tài là xây dựng một hệ thống phần mềm có khả năng tự động trích xuất thông tin từ hóa đơn bán hàng (số hóa đơn, ngày, danh sách sản phẩm, tổng tiền...) với độ chính xác cao, hỗ trợ doanh nghiệp trong việc số hóa và tối ưu quy trình xử lý hóa đơn.
Các mục tiêu cụ thể:
- Ứng dụng trí tuệ nhân tạo và các mô hình ngôn ngữ thị giác như Gemini để thực hiện trích xuất dữ liệu từ hóa đơn có định dạng đa dạng (ảnh chụp, scan, PDF).
- Thiết kế phần mềm desktop giao diện thân thiện bằng Qt Designer để người dùng có thể tải ảnh và xem kết quả trích xuất.
- Xây dựng cơ sở dữ liệu MySQL để lưu trữ, tìm kiếm và quản lý thông tin hóa đơn.
* Đối tượng phát triển:
- Người dùng doanh nghiệp, kế toán viên: những người thường xuyên xử lý hóa đơn giấy hoặc ảnh hóa đơn điện tử.
- Lập trình viên và kỹ sư hệ thống: cần một giải pháp AI trích xuất thông tin từ tài liệu nhanh chóng và có thể tích hợp vào hệ thống kế toán, ERP hiện có.
- Người dùng cá nhân / đại lý bán lẻ: cần công cụ di động hỗ trợ kiểm tra và gửi hóa đơn nhanh chóng từ thiết bị cá nhân.
* Phạm vi chức năng:
- Trích xuất các trường thông tin chính từ ảnh hóa đơn như số hóa đơn, ngày, tổng tiền, tên sản phẩm.
- Xử lý ảnh đa định dạng (JPG, PNG, PDF scan).
- Giao diện desktop cho việc upload, kiểm tra và lưu thông tin hóa đơn.
- Backend xử lý dữ liệu, giao tiếp với API Gemini.
* Giới hạn:
- Độ chính xác trích xuất có thể giảm nếu ảnh hóa đơn mờ hoặc bố cục quá phức tạp.
- App Android ở mức đơn giản, chưa hỗ trợ chụp ảnh trực tiếp hay đăng nhập người dùng.
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
2.1 Tổng quan về OCR
2.1.1 OCR (Nhận dạng ký tự quang học) là gì?
Nhận dạng ký tự quang học (OCR) là quá trình chuyển đổi hình ảnh chứa văn bản thành định dạng văn bản mà máy tính có thể đọc được. Ví dụ, nếu bạn quét một biểu mẫu hoặc hóa đơn, máy tính sẽ lưu bản quét đó dưới dạng tệp hình ảnh. Bạn sẽ không thể sử dụng trình soạn thảo văn bản để chỉnh sửa, tìm kiếm hoặc đếm từ trong tệp hình ảnh này. Tuy nhiên, bạn có thể sử dụng OCR để chuyển đổi hình ảnh đó thành tài liệu văn bản với nội dung được lưu trữ dưới dạng dữ liệu văn bản.
2.1.2 Tại sao OCR lại quan trọng?
Hầu hết các quy trình làm việc trong kinh doanh đều liên quan đến việc nhận thông tin từ các tài liệu in ấn. Các biểu mẫu giấy, hóa đơn, tài liệu pháp lý được quét và hợp đồng in đều là một phần của quy trình kinh doanh. Khối lượng lớn giấy tờ này tốn rất nhiều thời gian và không gian để lưu trữ và quản lý. Mặc dù quản lý tài liệu không dùng giấy là xu hướng tất yếu, nhưng việc quét tài liệu thành hình ảnh lại tạo ra những thách thức. Quá trình này đòi hỏi sự can thiệp thủ công, có thể tẻ nhạt và chậm chạp. Hơn nữa, việc số hóa nội dung tài liệu này tạo ra các tệp hình ảnh mà văn bản bị ẩn bên trong. Văn bản trong hình ảnh không thể được xử lý bởi phần mềm xử lý văn bản theo cách tương tự như các tài liệu văn bản thông thường.
2.1.3 OCR hoạt động như thế nào?
Công cụ OCR hoặc phần mềm OCR hoạt động theo các bước sau:
a. Thu thập hình ảnh
Máy quét đọc các tài liệu và chuyển đổi chúng thành dữ liệu nhị phân.
Phần mềm OCR phân tích hình ảnh đã quét và phân loại các vùng sáng là nền và các vùng tối là văn bản.
c. Nhận dạng văn bản
Hai loại thuật toán OCR hoặc quy trình phần mềm chính mà phần mềm OCR sử dụng để nhận dạng văn bản được gọi là khớp mẫu và trích xuất đặc trưng.
d. Khớp mẫu
Khớp mẫu hoạt động bằng cách cô lập một hình ảnh ký tự, được gọi là glyph, và so sánh nó với một glyph được lưu trữ tương tự. Nhận dạng mẫu chỉ hoạt động nếu glyph được lưu trữ có phông chữ và tỷ lệ tương tự với glyph đầu vào. Phương pháp này hoạt động tốt với các hình ảnh được quét từ tài liệu đã được gõ bằng một phông chữ đã biết.
f. Hậu xử lý
Sau khi phân tích, hệ thống chuyển đổi dữ liệu văn bản đã trích xuất thành một tệp máy tính. Một số hệ thống OCR có thể tạo các tệp PDF có chú thích, bao gồm cả phiên bản trước và sau của tài liệu đã quét.
2.2 Phương pháp OCR truyền thống
2.2.1 Text Detection với EAST
EAST - pipeline được giới thiệu trong bài báo EAST: An Efficient and Accurate Scene Text Detector vào năm 2017. Nó có thể phát hiện Text theo cả 2 cấp độ: Words và Line. Nó cũng không hạn chế quá nhiều điều kiện của ảnh đầu vào, ảnh có thể xoay, mờ, nhiễu (nói vậy không có nghĩa là ta có thể bỏ qua bước Pre-processing Image); Text trên ảnh có thể thuộc một trong 2 loại: Structure và Unstructure.
Kiến trúc tổng thể của EAST gồm 3 phần:
- Feature Extractor Stem: Phần này làm nhiệm vụ trích xuất đặc trưng từ ảnh đầu vào theo 4 cấp độ, từ f1 đến f4. Trong bài báo, tác giả sử dụng 2 Pre-trained model là VGG16 và PVANet cho thí nghiệm của mình.
- Feature Merging Branch: Các Features từ phần trên được cho đi qua các lớp Unpool, sau đó được tập hợp lại, cuối cùng là đi qua lần lượt các lớp 1x1 Conv, 3x3 Conv. Mục đích của việc làm này là để EAST có thể dự đoán được Text ở những khu vực nhỏ.
2.2.2 Text Recognition
- Feature Extractor (CNN): Ảnh đầu vào được cho đi qua các lớp Conv, sinh ra các Feature Maps. Các Feature Maps sau đó lại được chia ra thành một chuỗi của các Feature Vectors (các TimeSteps), gọi là Feature Sequence.
- Transcription Layers: Nhiệm vụ của phần này là xử lý đầu ra của Recurrent Layers, sắp xếp lại các ký tự, loại bỏ các lỗi tồn tại (alignment) để đưa ra kết quả cuối cùng. CTC ra đời từ năm 2006 để giải quyết vấn đề Alignment (chính là vấn đề ánh xạ từ Output của RNN ra kết quả cuối cùng) cho các bài toán OCR, Speech Recognition, … một cách hiệu quả.
* Encoding text:
Lý tưởng thì mỗi TimeStep sẽ tương ứng với một ký tự. Nhưng nếu không phải vậy thì sao, nếu một ký tự tồn tại trong cả 2 TimeSteps thì sao? Khi đó, kết quả sẽ xuất hiện các ký tự trùng nhau. CTC giải quyết vấn đề này bằng cách gộp tất cả các ký tự trùng nhau thành một. Ví dụ: ttiien ssuu -> tien su.
* Loss Calculate:
Loss được tính toán cho mỗi Training Sample (một cặp ảnh và GT Text tương ứng). Nó là tổng tất cả các Scores của tất cả các khả năng Alignments của GT Text. Giả sử chúng ta có một ma trận Score là Output của CRNN như sau:
Các khả năng Alignment của ký tự a là: aaa, a–, a-, aa-, -aa, –a –> Score của a = 0.4x0.3x0.4 + 0.4x0.7x0.6 + 0.4x0.7 + 0.4x0.3x0.6 + 0.1x0.3x0.4 + 0.1x0.7x0.4 = 0.608. –> Loss = -𝑙𝑜𝑔100.6084 = 0.216
Các khả năng Alignment của ký tự b là: bbb, b–, b-, bb-, -bb, –b –> Score của b = 0.5x0.0x0.0 + 0.5x0.7x0.6 + 0.5x0.7 + 0.5x0.0x0.6 + 0.1x0.0x0.0 + 0.1x0.7x0.0 = 0.56 –> Loss = -𝑙𝑜𝑔100.56 = 0.25
2.2.4 EasyOCR
EasyOCR là một thư viện Python mã nguồn mở được thiết kế dành riêng cho nhận dạng ký tự quang học (OCR). EasyOCR có thể rất hữu ích trong nhiều tác vụ khác nhau, bao gồm phân tích hình ảnh và nhập dữ liệu tự động với nhiều ngôn ngữ. Trong lĩnh vực bán lẻ - EasyOCR có thể được sử dụng để tự động hóa các công việc như tạo thẻ giá và theo dõi hàng tồn kho bằng cách đọc mã vạch và nhãn sản phẩm tại các cửa hàng bán lẻ. Trong lĩnh vực giáo dục, EasyOCR có thể số hóa sách giáo khoa và các bài nghiên cứu để cải thiện khả năng tiếp cận và phân tích. Tương tự, ngành sản xuất cũng có thể tận dụng EasyOCR cho nhiều tác vụ khác nhau. Được phát triển bởi Jaided AI, thư viện này tận dụng các mô hình học sâu được xây dựng trên nền tảng PyTorch để mang lại khả năng nhận dạng văn bản chính xác và hiệu quả.
Dưới đây là các tính năng nổi bật của EasyOCR:
- Hỗ trợ đa ngôn ngữ: EasyOCR hỗ trợ hơn 80 ngôn ngữ, bao gồm các ngôn ngữ có hệ thống chữ viết phức tạp như tiếng Trung, tiếng Nhật, tiếng Ả Rập và tiếng Devanagari, giúp nó trở nên linh hoạt cho các ứng dụng toàn cầu.
- Dễ sử dụng: Thư viện cung cấp một API cho phép người dùng thực hiện OCR chỉ với một lượng mã tối thiểu. Sự đơn giản này giúp EasyOCR dễ tiếp cận với cả những người mới bắt đầu lẫn các nhà phát triển có kinh nghiệm.
- Mô hình được đào tạo sẵn: EasyOCR đi kèm với các mô hình đã được đào tạo sẵn, có thể sử dụng ngay lập tức mà không cần phải thực hiện quá trình huấn luyện phức tạp.
2.3 VLMs(Vision language Models)
Các mô hình ngôn ngữ thị giác (Vision Language Models – VLMs) là các hệ thống AI đa phương thức (multimodal AI systems) được xây dựng bằng cách kết hợp một mô hình ngôn ngữ lớn (Large Language Model – LLM) với một bộ mã hóa hình ảnh (vision encoder), giúp LLM có khả năng “nhìn thấy”
Các mô hình kết hợp Thị giác và Ngôn ngữ (Vision-Language Models - VLMs) nâng cao khả năng nhận dạng ký tự quang học (OCR) bằng cách tích hợp dữ liệu hình ảnh với khả năng hiểu ngữ cảnh, từ đó cho phép trích xuất văn bản chính xác và có ý nghĩa hơn.
Không giống như các hệ thống OCR truyền thống chỉ tập trung vào việc chép lại văn bản từ hình ảnh, các mô hình VLMs như GPT-4o kết hợp khả năng nhận diện văn bản với việc hiểu ngữ cảnh. Sự tích hợp này cho phép:
- Diễn giải chính xác các từ viết tắt theo ngữ cảnh: VLMs có thể hiểu đúng các từ viết tắt dựa trên văn cảnh xung quanh. Ví dụ, chúng có thể xác định rằng “sat.” là viết tắt của “saturated” (béo bão hòa) và “cholest.” là “cholesterol” bằng cách phân tích nội dung và cấu trúc tài liệu.
- Dự đoán thông tin bị thiếu: Thông qua việc nhận biết các mẫu trong dữ liệu, VLM có thể suy luận ra các chi tiết còn thiếu. Ví dụ, chúng có thể xác định một món ăn dựa trên thành phần dinh dưỡng của nó, ngay cả khi tên món ăn không được ghi rõ, bằng cách đối chiếu thông tin dinh dưỡng với các hồ sơ thực phẩm phổ biến.
* Những thách thức khi triển khai Vision Language Models:
Vision Language Models (VLMs) đang ngày càng phát triển mạnh mẽ và trở thành công cụ linh hoạt cho nhiều tác vụ liên quan đến thị giác. Tuy nhiên, bên cạnh những khả năng ấn tượng, VLMs vẫn phải đối mặt với nhiều thách thức đáng kể mà các doanh nghiệp và nhà phát triển cần lưu ý khi triển khai các giải pháp này. Dưới đây là những thách thức chính của Vision Language Models:
- Giới hạn về độ phân giải đầu vào: Phần lớn VLMs hiện nay sử dụng các mô hình dựa trên CLIP làm vision encoder, chỉ cho phép kích thước đầu vào giới hạn ở mức 224×224 hoặc 336×336 pixel. Điều này gây khó khăn trong việc nhận diện các chi tiết nhỏ. Ví dụ, một khung hình HD 1080×1920 từ video phải được thu nhỏ hoặc cắt thành độ phân giải đầu vào nhỏ, khiến việc giữ lại chi tiết cho các chi tiết nhỏ trở nên khó khăn. Phương pháp tiling (chia nhỏ hình ảnh) và nghiên cứu các vision encoder có độ phân giải cao hơn vẫn chưa thể giải quyết vấn đề này hoàn toàn.
- Khó khăn trong hiểu không gian và định vị đối tượng: VLMs thường gặp hạn chế trong việc xác định chính xác vị trí của đối tượng trong không gian. Nguyên nhân chủ yếu là do dữ liệu huấn luyện cho các vision encoders dựa trên CLIP thường chỉ gồm các mô tả ngắn gọn về hình ảnh mà không chứa thông tin chi tiết về vị trí của đối tượng.
- Vấn đề định kiến (bias): VLMs có thể thừa hưởng các định kiến từ dữ liệu huấn luyện thế giới thực hoặc từ các mô hình pretrained mà chúng được xây dựng. Để giảm thiểu vấn đề này, cần đa dạng hóa nguồn dữ liệu và tích hợp sự giám sát của con người trong suốt quá trình phát triển.
2.3.1 Gemini
Gemini là dòng mô hình ngôn ngữ lớn (LLM) đa phương thức do Google DeepMind phát triển. Khác với các mô hình trước đây chỉ xử lý văn bản(như GPT-3, BERT), Gemini được thiết kế ngay từ đầu để xử lý đồng bộ nhiều loại dữ liệu:
- Văn bản (text)
- Hình ảnh (image)
- Âm thanh (audio)
- Mã nguồn (code)
* Kết quả benchmark thực nghiệm trên hóa đơn: Trên tập dữ liệu HuggingFace Invoice Dataset, Gemini Pro đạt:
- Accuracy > 95% cho các trường chính (invoice_number, date, amount)
- CER (Character Error Rate) < 2%
- Trích xuất nhanh, xuất ra JSON dễ tích hợp
2.3.2 ChatGPT
GPT-4o (“o” = omni) được OpenAI giới thiệu như một mô hình tích hợp đa phương thức - văn bản, hình ảnh, âm thanh và video - trong cùng một kiến trúc neural network. Điểm nổi bật:
- Xử lý đầu vào/giao diện đa phương thức mà không cần chia rẽ thành nhiều mô hình con.
- Tốc độ cao (phản hồi ~320 ms ở audio, nhanh gấp 2 so với GPT-4 Turbo) và chi phí thấp hơn khoảng 50% so với GPT-4 Turbo
- Context window lên đến 128 k token, hỗ trợ tốt cho các tài liệu dài
- Hiệu suất vượt trội trên benchmark MMLU (88.7 so với 86.5 của GPT-4)
* Một số thực nghiệm và benchmark:
- Accuracy trung bình ~94%, cao hơn GPT-4V khoảng 10 điểm, thời gian inference ~1.45.
- OCR với chữ viết tay, văn bản lịch sử: GPT-4o dẫn đầu so với GPT-3.5, EasyOCR, TrOCR ở mức hai-shot setting, với CER và BLEU cao hơn
- Khả năng đọc text chất lượng cao (≥300 ppi) sánh ngang OCR truyền thống; giảm nhanh nếu <150 ppi
CHƯƠNG 3. THIẾT KẾ HỆ THỐNG
3.1Tổng quan hệ thống
3.1.1 Yêu cầu hệ thống
Hệ thống trích xuất và quản lý hóa đơn được thiết kế nhằm tự động hóa quy trình thu thập, xử lý và lưu trữ dữ liệu từ hóa đơn điện tử và hóa đơn giấy. Hệ thống bao gồm các thành phần chính như sau:
* API Gemini (Trí tuệ nhân tạo): Sử dụng API Gemini của Google để xử lý hình ảnh hóa đơn, trích xuất thông tin quan trọng như: mã số thuế, tên công ty, ngày lập hóa đơn, tổng tiền, mã số hóa đơn, chi tiết sản phẩm... Nhờ công nghệ AI, hệ thống có thể hiểu và phân tích hóa đơn có định dạng khác nhau một cách chính xác và nhanh chóng.
* Ứng dụng Android: Được xây dựng nhằm hỗ trợ người dùng kiểm tra lại các hóa đơn đã xử lý có thể sửa hóa đơn hoặc đánh dấu đã xử lý.
* Giao diện người dùng trên Desktop (Qt Designer): Một ứng dụng máy tính được phát triển bằng Python và Qt Designer cho phép người dùng thao tác với dữ liệu: Upload file hóa đơn, trích xuất hóa đơn, lưu thông tin được trích xuất.
3.1.2 Luồng hoạt động tổng quan của hệ thống
- Người dùng sử dụng ứng dụng máy tính viết bằng Qt Designer tải lên hóa đơn có sẵn.
- Hình ảnh được gửi đến API Gemini tiến hành trích xuất dữ liệu quan trọng.
- Dữ liệu được lưu trữ vào MySQL để phục vụ mục đích tìm kiếm, thống kê và báo cáo.
- Thông tin trích xuất được kiểm tra và hiển thị trên ứng dụng Web để xác minh hoặc chỉnh sửa.
3.2 Thiết kế các thành phần
3.2.1 Phần mềm trích xuất thông tin
a. Mục tiêu thiết kế:
Mục tiêu của quá trình thiết kế phần mềm là xây dựng một hệ thống trích xuất thông tin hóa đơn tự động, chính xác và dễ sử dụng, bao gồm các chức năng:
- Giao diện thân thiện trên desktop (dùng Qt Designer).
- Gửi hình ảnh hóa đơn đến API Gemini để trích xuất dữ liệu.
- Hiển thị thông tin đã trích xuất.
c. Module xử lý ảnh & kết nối API Gemini
- Nhận ảnh từ giao diện Qt
- Gửi ảnh đến API Gemini Vision qua HTTP
- Nhận phản hồi từ API: dữ liệu JSON chứa các trường thông tin
- Trích xuất các trường cụ thể từ phản hồi: số hóa đơn, ngày lập hóa đơn, tổng tiền, v.v.
3.2.2 Cơ sở dữ liệu
Dựa trên yêu cầu bài toán, hệ thống cần quản lý các đối tượng sau:
- Thông tin hóa đơn (Invoice)
- Thông tin sản phẩm (Invoice Item)
- Trạng thái hóa đơn
Các công cụ sử dụng:
- Xampp
- HeidiSQL
3.2.3 Ứng dụng Web và App điện thoại
a. Ứng dụng Web
- Chức năng chính của ứng dụng:
+ Nhận kết quả trích xuất: Web hiển thị thông tin rõ ràng giúp người dùng kiểm tra lại.
+ Tìm kiếm hóa đơn: Có thể tìm kiếm theo mã số đơn
+ Chỉnh sửa hóa đơn và đánh dấu hóa đơn đã xử lý
c. Ngôn ngữ và công nghệ sử dụng:
- Ngôn ngữ lập trình: Java (Android SDK)
- Công cụ phát triển (IDE): Android Studio
- Thành phần hiển thị: WebView - dùng để hiển thị giao diện web của hệ thống.
e. Ưu điểm của kiến trúc WebView-based :
- Thời gian phát triển ngắn: không cần xây dựng lại toàn bộ giao diện app native vì tận dụng hệ thống web đã có.
- Chi phí bảo trì thấp: cập nhật hệ thống chỉ cần sửa backend/web, không cần cập nhật app trên CH Play.
- Tương thích cao: do không sử dụng các API đặc biệt nên dễ cài đặt trên nhiều thiết bị Android khác nhau.
CHƯƠNG 4. KẾT QUẢ ĐẠT ĐƯỢC
4.1 Xây dựng thành công hệ thống trích xuất hóa đơn đa nền tảng
- Phần mềm đã hỗ trợ trích xuất thông tin từ ảnh hóa đơn một cách tự động và chính xác, sử dụng API Gemini để xử lý hình ảnh, nhận diện văn bản và phân tích ngữ nghĩa.
- Hệ thống có khả năng xử lý các loại hóa đơn khác nhau như: hóa đơn giấy, hóa đơn điện tử dạng ảnh chụp hoặc scan, hóa đơn có nhiều bố cục khác nhau.
- Giao diện người dùng được xây dựng trên nền tảng Qt Designer, dễ sử dụng, trực quan và thân thiện với người dùng.
4.1.1 Mẫu hóa đơn 1
Mẫu hóa đơn 1 như hình 4.1.
Kết quả trích xuất:
Kết quả trích xuất từ hình ảnh hóa đơn số AL250204-01 với độ chính xác cao. Các trường thông tin quan trọng được mô hình nhận diện đầy đủ và chính xác, cụ thể:
- Mã số hóa đơn: Chuỗi ký tự “AL250204-01” được trích xuất nguyên vẹn, chứng tỏ khả năng nhận diện tốt đối với các định danh dạng chữ-số.
- Ngày bán hàng: “04/02/2025” được trích xuất chính xác, tuân theo đúng định dạng ngày-tháng-năm phổ biến trong hóa đơn thương mại.
- Tổng số tiền hóa đơn: “24.000.000 VND” được nhận dạng đầy đủ, với định dạng số và đơn vị tiền tệ rõ ràng.
4.1.3 Mẫu hóa đơn 3
Mẫu hóa đơn 3 như hình 4.5.
Kết quả trích xuất:
- Số hóa đơn: EP1677985
- Ngày bán hàng: 11/02/2025
- Tổng số tiền hóa đơn: 61.080.000 VND
- Thông tin sản phẩm:
+ ESD metaldizeid film.
Số lượng: 5000.
Giá 10.890 VND/1 sản phẩm.
Tổng tiền: 54.450.000 VND
+ Ink Resin B110CR KT
Số lượng: 10
Giá: 413.000 VND
Tổng tiền 4.130.000 VND
4.3 So sánh với các giải pháp khác
OCRBench là một bộ đánh giá toàn diện được thiết kế nhằm kiểm tra năng lực OCR (nhận dạng ký tự quang học) của các mô hình đa phương thức lớn (Large Multimodal Models).
Bộ đánh giá này bao gồm 5 thành phần chính:
- Nhận dạng văn bản (Text Recognition),
- Trả lời câu hỏi tập trung vào văn bản trong cảnh (Scene Text-Centric VQA),
- Trả lời câu hỏi liên quan đến tài liệu (Document-Oriented VQA),
- Trích xuất thông tin chính (Key Information Extraction),
- Nhận dạng biểu thức toán học viết tay (Handwritten Mathematical Expression Recognition).
- Text Recognition : Phản ánh độ chính xác của mô hình khi nhận dạng ký tự
- Document-Oriented VQA : Cho thấy mô hình hiểu tốt tình huống đọc - trả lời liên quan đến tài liệu
- Key Information Extraction - KIE : Phản ánh độ chính xác của trích xuất đúng cấu trúc (ví dụ form, hóa đơn).
CHƯƠNG 5. KẾT LUẬN
5.1 Kết luận
Trong xu hướng chuyển đổi số mạnh mẽ hiện nay, việc tự động hóa các quy trình xử lý văn bản, đặc biệt là hóa đơn, đóng vai trò quan trọng trong việc nâng cao hiệu quả làm việc, giảm chi phí nhân lực và tăng tính chính xác. Đề tài đã xây dựng thành công một hệ thống phần mềm có khả năng trích xuất thông tin từ hóa đơn thông qua ảnh chụp, ứng dụng trí tuệ nhân tạo (AI), kết hợp giữa các nền tảng công nghệ hiện đại như:
- API Gemini: dùng để xử lý và phân tích nội dung hóa đơn, trích xuất các trường thông tin quan trọng một cách tự động, nhanh chóng và chính xác.
- Qt Designer và Python: xây dựng phần mềm giao diện người dùng trên desktop thân thiện, dễ thao tác và kiểm tra kết quả trích xuất.
- MySQL: lưu trữ dữ liệu hóa đơn đã xử lý, phục vụ cho việc tra cứu, quản lý và thống kê.
5.2 Hạn chế
Mặc dù hệ thống đã hoàn thiện ở mức cơ bản và đáp ứng yêu cầu đề ra, nhưng vẫn còn một số hạn chế cần lưu ý:
- Kết quả trích xuất đôi khi có sai lệch nếu ảnh hóa đơn bị nhòe, mờ hoặc mất góc.
- Chưa có cơ chế xác minh tính hợp lệ của hóa đơn
- Giao diện Android mới chỉ ở mức cơ bản, chưa tích hợp các tính năng nâng cao như đồng bộ đa người dùng.
5.3 Hướng phát triển:
Trong tương lai, hệ thống có thể được nâng cấp theo các hướng sau:
- Phát triển hệ thống đăng nhập và phân quyền người dùng, hỗ trợ quản trị viên và người dùng thường.
- Kết nối với hệ thống kế toán, giúp tự động nhập liệu vào phần mềm kế toán.
- Tối ưu giao diện Android để phù hợp hơn với người dùng doanh nghiệp (có chức năng quét hàng loạt, thống kê, lọc theo thời gian…).
- Tùy biến AI theo mẫu hóa đơn Việt Nam nếu cần độ chính xác cao hơn, bằng cách kết hợp Gemini với dữ liệu gán nhãn riêng.
PHỤ LỤC
Code trích xuất hóa đơn với API của Gemini 2.0
Code giao diện người dùng
Code Web
Backend
Code App:
"TẢI VỀ ĐỂ XEM ĐẦY ĐỦ ĐỒ ÁN"