1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng hệ thống số hóa hồ sơ doanh nghiệp

70 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC XÂY DỰNG HỆ THỐNG SỐ HÓA HỒ SƠ DOANH NGHIỆP Ngành: KHOA HỌC MÁY TÍNH HỘI ĐỒNG: KHOA HỌC MÁY TÍNH GVHD: ThS Nguyễn Thanh Tùng GVPB: ThS Bùi Tiến Đức SVTH1: Nguyễn Hoàng Khoa TP Hồ Chí Minh, 1/2023 1812658 LỜI CAM ĐOAN Tơi xin cam đoan cơng trình nghiên cứu thực đề tài Tất nội dung nghiên cứu nội dung trung thực, mã nguồn thân tơi thực giúp đỡ Giảng viên hướng dẫn Trong luận văn sử dụng nhiều số liệu dẫn chứng từ nhiều nguồn khác rõ phần trích dẫn tài liệu tham khảo Nếu phát gian lận nào, tơi xin chịu hồn tồn trách nhiệm với luận văn Trường Đại học Bách Khoa tập thể hướng dẫn không liên quan đến vi phạm tác quyền quyền tơi gây q trình thực đề tài luận văn Sinh viên thực đề tài Nguyễn Hoàng Khoa iv LỜI CẢM ƠN Lời đầu tiên, em xin bày tỏ lòng biết ơn cảm kích sâu sắc đến thầy Nguyễn Thanh Tùng Thầy người truyền cho em nhiều kiến thức bổ ích kĩ thuật lẫn đời sống Em cảm thầy dẫn tận tình đầy tâm huyết, bước đệm vững để em hoàn thành luận văn Con xin bày tỏ lịng biết ơn với gia đình Con cảm ơn gia đình ln u thương ủng hộ gặp khó khăn Cảm ơn gia đình bên che chở làm chỗ dựa tinh thần cho đủ sức mạnh để hoàn thiện đề tài luận văn hồn thiện người Sinh viên thực đề tài Nguyễn Hoàng Khoa v Tóm tắt luận văn Số hóa hồ sơ doanh nghiệp trình chuyển đổi hồ sơ doanh nghiệp dạng giấy thành thông tin điện tử, lưu trữ sỡ liệu Người sỡ hữu hồ sơ doanh nghiệp có khả lưu trữ, bảo quản, truy xuất hồ sơ lưu nơi có kết nối mạng Việc chuyển đổi số cần thiết tất yếu phát triển mạnh mẽ mạng internet lưu trữ liệu lớn nhu cầu khả lưu trữ truy xuất hồ sơ tăng cao Q trình số hóa hồ sơ doanh nghiệp dần thực hầu hết doanh nghiệp, quan nhà nước, trường học, Tuy nhiên, hầu hết trình thực thủ cơng, tức cần có người nhập liệu viên để chuyển đổi kí tự từ chữ viết, hình ảnh, giấy thành kí tự chữ điện tử Việc phải viết lại hồ sơ gây hao tổn nhiều tài nguyên nhân lực cho doanh nghiệp khơng chắn số hóa toàn hồ sơ Ngoài việc nhập liệu đáp ứng phần nhỏ việc số hóa chuyển đổi từ tài liệu vật lý sang tài liệu số không trả lời câu hỏi truy xuất lưu trữ Chính vậy, luận văn hướng tới việc hỗ trợ tự động số hóa hồ sơ doanh nghiệp cách tích hợp hai cơng nghệ Nhận dạng kí tự quang học (Optical Character Recognition, OCR) cơng cụ tìm kiếm (Search Engine) Elasticsearch Ngồi ra, Để xây dựng hệ thống có khả vận hành giao diện trực quan, luận văn cịn sử dụng số cơng nghệ khác ReactJS, RabbitMQ, Bố cục luận văn • Chương - Tổng quan đề tài Trình bày tổng quan vấn đề cần giải quyết, đặt mục tiêu phạm vi đề tài • Chương - Phân tích u cầu đề tài Trình bày tổng quan yêu cầu đề tài • Chương - Cơng nghệ sử dụng Trình bày kiến thức công nghệ tảng liên quan đến đề tài • Chương - Thiết kế hệ thống Trình bày cơng cụ hệ thống liên quan đến đề tài • Chương - Hiện thực hệ thống Trình bày cách thức nhóm thực hệ thống • Chương - Kiểm thử triển khai hệ thống Trình bày phương thức kiểm thử triển khai hệ thống • Chương - Kết luận hướng phát triển Tổng kết cơng việc hồn thành đưa định hướng cho giai đoạn luận văn vi Mục lục Tổng quan đề tài 1.1 Đặt vấn đề 1.2 Khó khăn, thử thách 1.3 Phạm vi đề tài 1.4 Mục tiêu đề tài 1.5 Ý nghĩa đề tài 1.5.1 Đối với người sở hữu tập tin/ nhập liệu viên 1.5.2 Đối với người truy suất tập tin/ quản lý Phân tích yêu cầu đề tài 2.1 Phân quyền người dùng hệ thống 2.2 Yêu cầu hệ thống số hóa hồ hồ sơ danh nghiệp 2.2.1 Mô tả chức tải liệu lên xuống 2.2.2 Mô tả chức đồng liệu với thư mục máy khách 2.2.3 Mô tả chức tải liệu scan từ máy in 2.2.4 Mô tả chức quản lý liệu 2.2.5 Mô tả chức truy xuất liệu 2.2.6 Các chức phụ trợ 2.3 Yêu cầu phi chức hệ thống 2.3.1 Yêu cầu giao diện, trải nghiệm người dùng 2.3.2 Yêu cầu tính đáp ứng 2.3.3 Yêu cầu tảng sử dụng 2.4 Kết luận Công nghệ sử dụng 3.1 Mẫu thiết kế 3.1.1 Mơ hình phát triển website 3.2 Framework thư viện 3.2.1 ReactJS 3.2.2 Redux vii Model View Controller 1 2 4 5 5 6 6 7 7 9 12 14 17 3.3 19 19 20 25 28 30 31 32 32 34 34 36 37 38 39 40 40 42 43 Hiện thực hệ thống 5.1 Client người nhập liệu 5.2 Hệ thống xử lí lưu trữ 45 45 46 Kiểm thử triển khai hệ thống 6.1 Tổng quan văn hóa CICD 6.1.1 CI - Continuous Integration 6.1.2 CD - Continuous Delivery 6.2 Ứng dụng CI/CD vào trình kiểm thử 6.2.1 Tổng quan pipeline 6.2.2 Chi tiết pipeline 48 48 48 49 50 50 50 55 55 55 56 56 3.4 Hệ thống xử lí tìm kiếm liệu 3.3.1 Ngơn ngữ thực 3.3.2 RabbitMQ 3.3.3 Elasticsearch 3.3.4 OCR 3.3.5 Redis 3.3.6 MongoDB Client dành cho người nhập liệu 3.4.1 Framework ExpressJS Thiết kế hệ thống 4.1 Mơ hình hoạt động hệ thống 4.2 Kiến trúc Client nhập liệu 4.2.1 Sơ đồ đóng gói (containerize) ứng dụng Client nhập liệu 4.2.2 Sơ đồ luồng hoạt động mã nguồn giao diện Client 4.2.3 Sơ đồ luồng hoạt động Client 4.2.4 Sơ đồ luồng hoạt động agent quan sát thư mục máy scan 4.3 Kiến trúc hệ thống xử lí trung tâm 4.3.1 Sơ đồ hoạt động hệ thống trung tâm 4.3.2 Luồng hoạt động hệ thống Kết 7.1 7.2 7.3 7.4 luận hướng phát triển Kết đạt Ưu điểm Nhược điểm Hướng phát triển viii triển khai Danh sách hình vẽ 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 Mơ hình MVC Công nghệ SPA RESTful API Logo ReactJS Sơ đồ mô sử dụng component Quá trình render DOM Cách react truyền thuộc tính Vòng đời components Quá trình họat động RabbitMQ RabbitMQ Thêm thư viện amqplib Hiện thực producer Hiện thực Consumer RabbitMQ Mô tả thức hoạt động Elasticsearch Kiến trúc Elasticsearch thường dùng Mô tả thức hoạt động OCR Quy trình hoạt động Redis 12 12 14 15 15 16 17 20 21 21 22 23 24 26 27 29 31 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 Sơ đồ yêu cầu hoạt động hệ thống Sơ đồ hoạt động hệ thống Đóng gói Client nhập liệu Luồng thực thi giao diện Client Luồng thực thi Client Luồng thực thi agent Sơ đồ hoạt động hệ thống trung tâm Luồng xử lí request hệ thống 34 35 37 38 39 40 42 43 5.1 5.2 5.3 5.4 Màn hình đăng nhập Giao diện Client Ánh xạ tập tin máy scan lên máy Kết tìm kiếm từ khóa chủ lưu trữ 45 46 46 47 ix – Giảm nhẹ chi phí OCR khống chế số lượng trang xử lí – Lưu trữ số trang cho việc tìm kiếm tải xuống sau • Sau tách trang, trang lưu lại thư mục khác với đường dẫn cấu hình Một message sinh để gửi vào RabbitMQ queue có tên ocr-queue Message bao gồm thông tin tập tin như: tên, đường dẫn tập tin gốc, đường dẫn trang tách tại, số trang, ngơn ngữ, ngày đăng tải • Consummer mô-đun OCR nhận việc từ ocr-queue có Consumer thiết lập với chế độ prefetch=2, tức tối đa xử lí trang lúc Consumer thiết lập bật chế độ Message durability Message acknowledgment giúp đảm bảo khơng có trang bị sót q trình Mơ-đun sau trực triếp thực trình OCR cách sinh số lượng process với số lượng message • Sau nhận diện kí tự quang học, tập tin đầu định dạng txt lưu lại thư mục khác với đường dẫn cấu hình Một message sinh để gửi vào RabbitMQ queue có tên elasticsearch-queue Message bao gồm thơng tin tập tin như: tên, đường dẫn tập tin gốc, đường dẫn trang tách tại, số trang, ngôn ngữ, ngày đăng tải • Consummer mơ-đun main-service nhận việc từ elasticsearch-queue có Thơng tin trích xuất từ message gồm đường dẫn tập tin đầu txt kèm theo thông tin message cũ Mô-đun đọc nội dung tập tin đầu ra, đánh mục lưu vào elasticsearch đồng thời lưu vào hệ sở liệu Tại đây, kết thúc trình luồng 44 Hiện thực hệ thống Ở chương này, sinh viên xin trình bày số hình ảnh chức thực theo trình thiết kế hệ thống chương trước 5.1 Client người nhập liệu Trong q trình luận văn, nhóm hoàn thiện giao diện người dùng cho Client Client có chức mơ tả bao gồm như: theo dõi thư mục tải tập tin lên, tạo thư mục, tải tập tin lên/xuống, xóa tập tin cách đồng với máy chủ Các thư mục có giao diện màu sắc khác tùy theo ngơn ngữ chúng Ngồi ra, định dạng tập tin có giao diện phù hợp với Hình 5.1: Màn hình đăng nhập 45 Hình 5.2: Giao diện Client Hình 5.3: Ánh xạ tập tin máy scan lên máy chủ lưu trữ 5.2 Hệ thống xử lí lưu trữ Về phía hệ thống lưu trữ xữ lí, sinh viên thực giao diện tìm kiếm chức phụ trợ khác Ở trang này, tiêu biểu chức chính: Tìm kiếm thêm worker cluster 46 Hình 5.4: Kết tìm kiếm từ khóa Hình 5.5: Trang quản lí cluster hệ thống 47 Kiểm thử triển khai hệ thống Chương trình bày trình kiểm thử triển khai hệ thống Q trình nhóm áp dụng phương pháp áp dụng rộng rãi CICD CICD bao gồm hai trình CI (Continuous Integration) - tích hợp liên tục CD (Continuous Delivery) - triển khai liên tục Ứng dụng cách tiếp cận giúp nhóm tiết kiệm thời gian cơng sức đảm bảo chất lượng tính "cập nhật nhanh nhất" ứng dụng Tiếp theo, tìm hiểu sơ lược CICD 6.1 6.1.1 Tổng quan văn hóa CICD CI - Continuous Integration CI nói riêng CICD nói chung biết đến văn hóa làm việc phương pháp kĩ thuật phát triển phần mềm Vệ nội lập trình viên, CI mang ý nghĩa lớn quan trọng trình làm việc Trong trình phát triển phần mềm nay, hầu hết tất quen với việc sử dụng GIT - dịch vụ quản lí phiên mã nguồn (Source Code Version Control) Việc phát triển phần mềm chia thành nhiều nhiệm vụ, chia cho ca nhân lập trình viên nhánh khác Tuy nhiên, bạn cảm thấy chức bạn cần phần nhỏ chức nhóm khác? Lúc này, việc cập nhật phiên nhóm khác đòi hỏi liên lạc thời gian để đồng Lúc này, văn hóa CI xuất để giải vấn đề CI khuyến khích người sử dụng (ở lập trình viên) thường xuyên commit mã nguồn họ để tạo tính sẵn sàng cho mã nguồn gốc Lúc này, tiếp tục đặt 48 câu hỏi liệu source code họ commit có gặp lỗi hay khơng CI giải vấn đề cách tích hợp cơng cụ kiểm thử xây dựng thử sau trình commit Chuỗi trình gọi Pipeline thực tự động phần mềm (Jenkins, Gitlab-CI ) công cụ mã nguồn mở khác Từng giai đoạn Pipeline gọi Stage Một stage có nhiều Job khác chạy song song stage Áp dụng văn hóa CI, người lập trình viên an tâm tiếp tục phát triển phần mềm Nếu source họ gặp lỗi, hệ thống thơng báo người lập trình viên sửa lỗi vẫ n đảm bảo source code họ Hình 6.1: Quá trình CICD 6.1.2 CD - Continuous Delivery Người anh em CI CD Giống CI, CD biết đến văn hóa phương pháp kĩ thuật Triển khai liên tục mang ý nghĩa lớn cho người dùng lập trình viên Trước đây, muốn triển khai phần mềm, đội phát triển phải chắn source code họ hoàn thiện (đầy đủ phần) tính năng, khơng chứa lỗi triển khai Với trình phát triển phần mềm nhanh ạt nhu cầu thị trường lớn nay, thời gian dành cho việc triển khai đánh giá lâu tốn nhiều chi phí Thực tế, đội phát triển phần mềm 25 người, đơi q trình phát triển phần mềm cịn nhanh nhiều q trình triể n khai phần mềm Điều dẫn đến chậm trễ việc "đưa" phần mềm đến tay người dùng nói riêng hiệu kinh tế cho doanh nghiệp nói chung Vì thế, 49 văn hóa triển khai liên tục cần thiết hữu ích CD đặt sau CI có chủ đích Như mơ tả trên, để triển khai phần mềm cần có số yếu tố kiểm thử phần mềm - việc làm trình CI Nếu ta gộp trình lại chung Pipeline từ điểm bắt đầu commit lập trình viên đến tay người tiêu dùng sử dụng tính nhanh Điều kéo theo lợi ích tuyệt vời người dùng đội phát triển người dùng sử dụng phần mềm đầy đủ tính nhất, cịn người phát triển bớt gánh nặng triển khai kiểm thử 6.2 Ứng dụng CI/CD vào trình kiểm thử triển khai 6.2.1 Tổng quan pipeline Trong q trình phát triển, nhóm thiết kế Pipeline CICD riêng để thuận tiện cho việc kiểm thử triển khai Pipeline tiếp cận với hình thức: dành cho lập trình viên dành cho triển khai/ người dùng Pipeline thực công cụ Gitlab-CI, gồm stage khác nhau: Build, Test, Release, Deploy, Alert Chuỗi trình khác với người tiếp cận, gồm phiên bản: • Pipline commit nhánh người phát triển Pipeline nhánh người phát triển gồm giai đoạn chính: Build, Test, Alert-Test, Release Vì người lập trình chưa cần phải triển khai hệ thống thực, nên việc tinh giảm stage giúp tiết kiệm thời gian tài nguyên Runner (đơn vị thực thi giai đoạn Gitlab-runner) • Pipline commit nhánh Pipeline nhánh giai đoạn chính: Build, Test, Release, Deploy, Alert-Deploy 6.2.2 Chi tiết pipeline Tiếp theo chi tiết stage xây dựng thử, kiểm thử, tích hợp, triển khai thơng báo 50 Hình 6.2: Q trình thực thi thành cơng pipline nhánh phát triển Hình 6.3: Q trình thực thi thành cơng pipline nhánh • Build (xây dựng) Q trình xây dựng phần mềm triển khai Container (một phương pháp ảo hóa mơi trường thực thi) Mơi trường giống hồn tồn với mơi trường triển khai hệ thống thực Nếu phần mềm gây lỗi hệ thống, khơng vượt q trình Ngay lập tức, hệ thống báo lỗi người lập trình viên • Test (Kiểm thử) Stage Test gồm jobs chính: kiểm tra Jest (Unit testing) kiểm tra Lint (test cú pháp) Jest thư viện kiểm thử tự động ngơn ngữ Javascript Jest ứng dụng để test chức năng, định tuyến Một ví dụ Jest kiểm thử định tuyến ứng dụng Lint thư viện kiểm thử tự động để kiểm tra cú pháp người lập trình Sử dụng Lint để chuẩn hóa mã nguồn đẹp, giúp hạn chế lỗi sau Hình bên 51 Hình 6.4: Đoạn mã mơ tả Jest testing Hình 6.5: Kết Jest testing mô tả trường hợp test lint lỗi Lúc này, job fail dẫn đến stage fail Sau đó, pipeline báo lỗi cho người lập trình • Release Sau trình xây dựng, kiểm thử hoàn tất, mã nguồn đánh giá an toàn Lúc này, mã nguồn lần xây dựng đóng gói Vì q trình sử dụng phương thức triển khai container image nên giai đoạn có ý nghĩa phiên sẵn sàng để sử dụng stage Có hai hình thức realease gồm: realease với tag commit code realease lasted Ở nhánh phát triển, realease tiến hành dạng gắn mã hash commit để đánh dấu image Image có ý nghĩa cho việc caching, góp phần làm giảm thời 52 Hình 6.6: Kết lint testing gặp lỗi gian build phiên Khi nhánh chính, q trình realease đánh dấu lasted với ý nghĩa là image thức với sẵn sàng cho triển khai • Alert Để giám sát pipeline, có nhiều phương thức áp dụng Trong đó, phổ biến gửi một message hook Ở đề tài này, nhóm sử dụng Bot Telegram message hook, thơng báo trạng thái pipeline Lập trình viên không cần phải ngồi chờ xem trạng thái mã nguồn mình, mà việc tiếp tục cơng việc họ Trạng thái thành công hay thất bại pipeline, gửi trực 53 tiếp bot nhóm mà họ tham gia Ví dụ hình bên Hình 6.7: Trạng thái pipeline gửi từ bot Telegram • Deploy Sau trải qua trình gian truân, cuối cùng, mã nguồn triển khai dạng image container lên sever Hình thức triển khai image container mang lại nhiều lợi ích thời gian, độ an tồn, khả tương thích hiệu Ví dụ thực tế, phần mềm lập trình hệ điều hành Windows11, Ubuntu 22.04 triển khai máy chủ hệ điều hành Centos7 không gây lỗi Tổng q trình deploy gây downtime khơng 15 giây 54 Kết luận hướng phát triển Cuối cùng, chương này, sinh viên trình bày kết luận sau thời gian phát tiển hệ thống số hóa hồ sơ doanh nghiệp 7.1 Kết đạt Tính để thời điểm tại, luận văn hoàn thành gần toàn chức đề sau: • Phát triển trang web cho phép người nhập liệu đăng tải, xóa, tải xuống tập tin thư mục • Phát triển mơ-đun agent để tự động nhận tập tin đăng tải lên hệ thống • Phát triển trang quản lí cho hệ thống tích hợp cơng cụ tìm kiếm 7.2 Ưu điểm Với tính trên, hệ thống có ưu điểm như: • Hệ thống triển khai hoạt động ổn định máy chủ • Trang client cho người nhập liệu thân thiện người dùng, tốc độ phản hồi nhanh • Cơng cụ tìm kiếm hệ thống hoạt động tốt hiệu quả, không bỏ sót tài liệu • Tài liệu lưu trữ qn, khơng bị mất, thiếu, sai liệu • Mã nguồn thực phần lõi có khả mở rộng sau 55 7.3 Nhược điểm Tuy nhiên, hệ thống số yếu điểm cần khắc phục như: • Q trình phát triển cịn khả chừa lại nhiều lỗi nhỏ khả kiểm thử chưa bao quát hết trường hợp • Hệ thống chưa tối ưu hoàn toàn, dẫn đến gây tiêu hao nhiều tài nguyên nhận diện kí tự quang học • Cá nhân sinh viên thực đề tài chưa tìm giải pháp tối ưu, giải pháp tạm thời hoạt động cho hệ thống 7.4 Hướng phát triển Vì phần lõi hệ thống hồn thiện tương đối, nên cịn lại tính phụ trợ, hỗ trợ người dùng cho trang web gồm: • Xây dựng trang quản lí tài liệu thị nhiều thơng tin • Xây dưng khả chỉnh sửa trực tiếp trang hiển thị • Khả lưu thiết lập cho thư mục • Cơng cụ tìm kiếm có chức gợi ý nâng cao 56 Tài liệu tham khảo [1] Elasticsearch gì? https://viblo.asia/p/elasticsearch-la-gi-1Je5E8RmlnL Truy cập lần cuối: Ngày 11/12/2022 [2] Expressjs gì? Tất tần tật Express.js https://topdev.vn/blog/expressjs-la-gi Truy cập lần cuối: Ngày 11/12/2022 [3] https://topdev.vn/blog/redis-la-gi/ https : / / topdev / blog / redis - la - gi/ Truy cập lần cuối: Ngày 11/12/2022 [4] Một số ghi RabbitMQ https : / / www dotnetcoban com / 2020 / 12 / rabbitmq-notes.html Truy cập lần cuối: Ngày 11/12/2022 [5] Nhận dạng ký tự quang học https://vi.wikipedia.org/wiki/Nh%E1%BA%ADn_d% E1%BA%A1ng_k%C%BD_t%E1%BB%B1_quang_h%E1%BB%8Dc Truy cập lần cuối: Ngày 11/12/2022 [6] Node.js https://vi.wikipedia.org/wiki/Node.js Truy cập lần cuối: Ngày 11/12/2022 [7] Node.js Tutorial: Phần - Giới thiệu cài đặt ứng dụng https : / / viblo.asia/p/nodejs-tutorial-phan-1-gioi-thieu-va-cai-dat-ung-dungdau-tien-gVQvlwdykZJ Truy cập lần cuối: Ngày 11/12/2022 [8] PaddleOCR https://github.com/PaddlePaddle/PaddleOCR Truy cập lần cuối: Ngày 12/11/2022 [9] RabbitMQ https://topdev.vn/blog/rabbitmq-la-gi/ Truy cập lần cuối: Ngày 11/12/2022 57 [10] What is MongoDB? https://www.mongodb.com/what-is-mongodb Truy cập lần cuối: Ngày 11/12/2022 58

Ngày đăng: 20/06/2023, 20:42

w