Công nghệ nhận dạng là một trong các công nghệ đã và đang được áp dụng cho các thiết bị di động hiện nay.. Trên thế giới có rất nhiều tập đoàn đa Quốc gia, các doanh nghiệp có nhiều nhà
DANH MUC TU VIET TATAl Artificial Intelligence OpenCV Open Source Computer Vision Library QR Code Quick response code
PHAN MO DAUĐặt vấn đềHàng hóa là những sản phẩm lao động, thông qua trao đôi, mua bán có thê thỏa mãn một số nhu cầu nhất định của con người Hàng hóa có thê đáp ứng nhu cầu cá nhân hoặc nhu cầu sản xuất Việc phân loại hàng hóa là yếu tố quan trọng để xác định đặc điểm, thành phân, cầu tạo, quy cách đóng gói nhằm phân loại tên gọi, mã số của hàng hóa theo quy trình sản xuất và tô chức sắp xếp 1 cách thông minh
Trên thế giới có rất nhiều tập đoàn đa Quốc gia, các doanh nghiệp có nhiều nhà máy phân loại thông minh sử dụng những công nghệ, phần mềm và các thiết bị máy móc hiện đại dé sắp xếp và cũng như phân loại hàng hóa theo từng danh mục khác nhau Điều này đễ dàng trong việc quản lý các hàng hóa lớn nhỏ I cách nhanh chóng Tại Việt Nam có nhiều công ty thiết kế hệ thong dây chuyền phân loại hàng hóa cho các doanh nghiệp lớn, đặc biệt trong chuỗi cung ứng Logistics tăng hiệu suất công việc lên đến 80% Qua đó giúp nâng cao chất lượng, hiệu quả dịch vụ và chuỗi cung ứng, giảm chi phí, nâng cao năng lực cạnh tranh
Những năm trở lại gần đây, trí thông minh nhân tạo AI, cụ thê hơn là Machine Learning va Deep Learning dang ndi lên là bằng chứng cho cuộc công nghệ cách mạng công nghiệp 4.0 Vận dụng từ những gì chủng em đã được học Trí tuệ nhân tạo và Xử lý ánh cho đề tài này là phân loại hàng hóa bằng quét mã
Giảm thiểu sai sót > Tự độnghóa }
Phân loại tự động làm giảm sai Chuyén dich dan cơ cầu sdt do nhân từ con người nhắn lực tử thủ công sang
= phan loại bảng máy móc
, — , Rut ngan thời gian Team) phản loại dẫn đền day nhanh quả trinh giao hang
Thiết kế modul, dễ dàng tháo lắp, sửa chữa và thay thế
“km Kết nếi e ° `“ \ ‹ Giao diện vận hành
Các dữ liệu đượe gửi nên hệ thông 5 = đơn giản máy chủ giúp việc quản lý dữ liệu có thể thực hiện ở bắt ky noi đâu có kết nối Internet
Năng suất › Ứng dụng công nghệ hiện đại giúp nâng cao nắng suất
Nguồn tham khao: https://intech-group.vn/he-thong-phan-loai.htm
Nghiên cứu và tìm hiểu các phương pháp nhận diện, áp dụng vào quét mã vạch, xây dựng chương trình
Chương trình xây dựng giúp cho việc tô chức quán lý 1 cách tiện lợi đem lại năng suât cao cho chuỗi cung ứng LogIstics nói riêng và các lĩnh vực quản lý tự động hóa nói chung
3 Phương pháp nghiên cứu Phương pháp tài liệu: e _ Tìm hiểu lập trình Python và cơ sở lý thuyết về thuật toán CNN e_ Tìm hiểu các phương pháp nhận dạng biển báo giao thông e_ Tìm hiệu và lựa chọn công cụ hô trợ
Phương pháp thực nghiệm: e_ Xây dựng chương trình thực nghiệm 4 Phạm vỉ nghiên cứu
Dữ liệu xử lý là thu thap cdc ma Barcode, QReode bang cach tao ra tir Python
5 Nội dung nghiên cứu e©_ Tìm hiểu các kĩ thuật xử lý ảnh trong nhận diện hình học e_ Xây dựng hệ thông nhận diện các biển báo khác nhau e Céng cụ thực hiện: Pycharm e Ngôn ngữ: Python 6 Cấu trúc báo cáo
Báo cáo “ Phân loại hàng hóa bằng quét mã vạch ” bao gồm tất cả 3 phần
Chương I— Tổng quan: Giới thiệu về các kiến thức nền tảng cũng như công nghệ và phần mềm được sử dụng trong để tài bao gồm kiến thức về xử lý ảnh, thư viện xử lý ảnh OpenCV
Chương II — Triền khai thuật toán và tạo giao diện Tkinter: Trinh bay tong quan về mã vạch , phương pháp đề xuất và từ đó triển khai thuật toán xây dựng đề giái quyết bài toán nhận diện mã vạch
Chương III — Chạy chương trình: Từ phương pháp và thuật toán đã tìm hiểu, xây dựng một chương trình để nhận dạng đưa ra đầu ra cho bài toán cần giải quyết
> Phần Kết luận — Dánh giá kết quả và kết luận: Tông kết quá trình thực hiện và rút ra hướng phát triển sau này
Chuong 1: Tong Quan1.1 Một số khái niệm cơ bản 1.1.1 Trí tuệ nhân tạo
Trí tuệ nhân tạo AT là trí thông minh của máy do con người tạo ra Ngay từ khi chiếc máy tính điện tử đầu tiên ra đời, các nhà khoa học máy tính đã hướng đến phát hiên hệ thống máy tính (gồm cả phần cứng và phần mềm) sao cho nó có khả năng thông minh như loài người
Mặc dù cho đến nay, theo quan niệm của người viết, ước mơ nay van còn xa mới thành hiện thực, tuy vậy những thành tựu đạt được cũng không hề nhỏ: chúng ta đã làm được các hệ thông (phần mềm chơi cờ vua chạy trên siêu máy tỉnh GeneBlue) có thê thắng được vua cờ thế giới; chúng ta đã làm được các phần mềm có thể chứng minh được các bài toán hình học; v.v Hay nói cách khác, trong một số lĩnh vực, máy tính có thê thực hiện tốt hơn hoặc tương đương con người (tất nhiên không phải tất cả các lĩnh vực)
Xử lý ánh là một trong những máng quan trọng nhất trong kỹ thuật thị giác máy tính, là tiền đề cho nhiều nghiên cứu thuộc lĩnh vực này Hai nhiệm vụ cơ bán của quá trình xử lý ánh là nâng cao chất lượng thông tin hình ánh và xử lý sô liệu cung cấp cho các quá trình khác trong đó có việc ứng dụng thị giác vào điều khién
Quá trình bắt đầu từ việc thu nhận ảnh nguồn (từ các thiết bị thu nhận ảnh dạng số hoặc tương tự) gửi đến máy tính Dữ liệu ánh được lưu trữ ở định dạng phù hợp với quá trình xử lý Người lập trình sẽ tác động các thuật toán tương ứng lên dữ liệu ảnh nhằm thay đôi cầu trúc ảnh phù hơp với các ứng dụng khác nhau
Quá trình xử lý nhận dạng ảnh được xem như là quá trình thao tác ảnh đầu vào nhằm cho ra kết quá mong muốn Kết quả đầu ra của một quá trình xử lý ảnh có thê là một ảnh “đã được xử lý” hoặc một kết luận Ảnh có thể xem là tập hợp các điểm ánh và mỗi điểm ảnh được xem như là đặc trưng cường độ sáng hay một dấu hiệu nào đó tại một vị trí nào đó của đối tượng trong không gian và nó có thể xem như một hàm n biến P(c,c1,c2 ).Do đó,ánh trong xử lý ảnh có thể xem như ảnh n chiều
OpenCV (Open Computer Vision) la mét thu vién ma nguén mo hang dau cho xtr ly vé thi giác máy tính, machine learning, xu ly anh OpenCV duoc viet bang C/C++, vi vậy có tốc độ tính toán rất nhanh, có thể sử dụng với các ứng dụng liên quan đến thời gian thực Opencv có các interface cho C/C++, Python Java vi vay hé tro duoc cho Window, Linux, MacOs lẫn Android, iOS OpenCV có cộng đồng hơn 47 nghìn người dùng và số lượng download vượt quá 6 triệu lần
Chức năng có trong thu vién OpenCV:
Thư viện OpenCV bao gồm một số tính năng nổi bật như: e© Bộ công cụ hỗ trợ 2D và 3D e _ Nhận diện khuôn mặt e Nhận diện cử chỉ e_ Nhận dạng chuyên động, đối tượng, hành vi, e Tuong tac gitta con nguoi va may tinh e_ Diều khiến Robot e H6 tro thực tế tăng cường 1.1.4 Tkinter
Là một gói trong Python có chứa module 7k hỗ trợ cho việc lập trình giao diện (GUI) 7k ban đầu được viết bằng ngôn ngữ Tel Sau đó Tkinter được viết ra để sử dụng Tk bằng trình thông địch Tel trên nền Python Ngoài Tkinter ra còn có một số công cụ khác giúp tạo một ứng dụng GUI viết bằng Python như wxPython, PyQt, và PyGTk
1.1.5 Zbar Đề giai ma Barcode va QR code ta sử dung thư viện Zbar là | thư viện da nền tảng, gọn nhẹ và cho kết quả nhận dạng tốt Thư viện được xây dựng trên mã nguồn C/C++ nên dễ đàng chạy trên nên tảng IOS, Android và Linux Zbar có thé nhận dữ liệu trực tiếp từ Camera hoặc file ảnh, video sau đấy đưa vào bộ giải mã decoder đề xử lý và nhận dạng
Cách cai thu viện Zbar trong python: pip install pyzbar video scur= stoic nage source "duet" vere sẵe:re:e zil| oc
+, (pont nes icon] [anit ee "| mage tear “gi imeraly sas ale etree
Attps://sites google.com/site/embedded247/npcourse/impcourse/barcode_qrcode
Hình 1.1 Mô hình hệ thống của Zbar
Numpy là một thư viện lõi phục vụ cho khoa học máy tính của Python, hỗ trợ cho việc tính toán các máng nhiêu chiều, có kích thước lớn với các hàm đã được tối ưu áp dụng lên các máng nhiều chiều đó Numpy đặc biệt hữu ích khi thực hiện các hàm liên quan tới Đại
Số Tuyến Tính a (4x3 be resull (4x 3) ololo 011.2 EIERRE
1.1.7 pyttsx3 la thư viện chuyển đổi văn bản thành giọng nói 1.1.8 Date time
Thư viện datetime trong python được chia làm 4 lớp chính:
- Date —- Chỉ ngày, tháng, năm - Time — Chi thoi gian trong ngày (Giờ, phút, giây, micro giây) - Datetime — Két hop thoi gian va ngày (Ngày, tháng, năm, giờ, phút, giây, micro giay)
- Timedelta — Ding dé tinh todn thoi gian trong quá khứ và tương lai 1.1.9 Thread
Là thư viện chạy chương trình đa luồng dùng để chạy song song các chương trình trong cùng 1 thời điểm
1.1.10 webbrowser là thư viện mở đường link trang web trong python 1.1.11 pandas
Là một thư viện Python cung cấp các dữ liệu nhanh, mạnh mẽ, linh hoạt Pandas được thiết kế để làm việc đễ đàng và trực quan với dữ liệu có cấu trúc (dạng bảng, đa chiều, không đồng nhất) và dữ liệu chuỗi thời gian, dùng hiên thị cầu trúc đữ liệu trong file excel dưới dạng cột và dòng
1.1.12 speech_recognidion là thư viện nhận dạng giọng nói trong Python 1.1.13 pathlib là thư viện đường dẫn liên kết đến thư mục mà ta khai báo trong chương trình 1.1.14 Workbook là thư viện đọc toàn bộ fle Excel
1.2 Tổng quan về Barcode và QR code 1.2.1 Giới thiệu về barcode:
Barcode (hay còn được gọi là mã vạch) là phương pháp lưu trữ và truyền tải thông tin bằng một lọai ký hiệu gọi la ky ma vach (Barcode symbology) Ky ma vach hay gọi tắt cũng là mã vạch, là 1 ký hiệu tổ hợp các khoảng trắng và vạch thắng để biêu diễn các mẫu tự, ký hiệu và các con SỐ Sự thay đôi trong độ rộng của vạch và khoảng trắng biểu diễn thông tin số hay chữ số dưới dạng mà máy có thể đọc được
Là một công nghệ nhận dạng tự động, cho phép thu thập dữ liệu một cách nhanh chóng và chính xác Một sé loại phé bién: UPC, Code 39, Code 128, EAN-8, EAN-13
1.2.2 Giới thiệu về QR code
GIAO DIEN TKINTERCHUONG 3: CHAY CHUONG TRINH3.1 Mô tả bài toán Đọc mã vạch từng thông tin sản phẩm :
- Nếu thông tin mã vạch được lưu thì đèn led màu xanh và máy tính xuất giọng “Xác nhận”
- Nếu chưa có thông tin thì đèn led màu đỏ và máy tính xuất giọng “Chưa xác nhận”
3.2 Yêu cầu - Thụng tin sản phẩm mó vạch phải được lưu trong ủle excel
- Nếu thêm hay xóa mã vạch trên giao diện Tkinter thì đữ liệu trong excel phải đồng bộ với thông tin trên giao diện
3.3 Chạy chương trình 3.3.1 Code nhận điện mã Barcode và QR code while True:
NTN = date.todayQ #ngay thang HTNTN = NTN strftime("%d %B %Y") t = time.localtime(Q) #phút giây t = time.strftime("%H:%M:%S", t) img = Hinh.-readO[1] img = cv2.cvtColor(img, cv2.- COLOR_BGR2RGB) for barcode in decode(img): #nhan diện mã vạch print(barcode.data) MV = barcode.data.decode(‘utf-8') print(Mv) if MV in Ghi:
XN ='Xac Nhan' MXN=Label(Nam, text=" ", bg=”green”, padx=l, pady=1 ,relief='solid’) MXN.place(xw5, y=l84) else:
XN= 'Chua Xac Nhan' MXN = Label(Nam, text=""_", bg="red", padx=1, pady=1 ,relief='solid’)
MXN place(xw5, y4) pts = np.array([barcode.polygon], np.int32) pts = pts.reshape((-1, 1, 2)) cv2.polylines(img, [pts], True, (255, 0, 255), 5) pts2 = barcode.rect cv2.putText(img, XN,(pts2[0],pts2[1]),cv2.FONT_HERSHEY_SIMPLEX,0.9,(255,0,255),2)
HienMV.configure(text=MV) def XNCQ: time.sleep(0.5) if MV in Ghi:
GN.say("Ma San Pham La:” + MV) else:
GN.say("San Phâm Chưa Được Thêm") Xne = Thread(target=XNC)
8 Phân Loại Hàng Hóa Tự Động Bằng Quét Mã
1 Huỳnh Hoài Nam 1900005832 2 Nguyén Van Béng 1900006916 3 Tran Quéc Bao 1900006121 Giáo Viên Hướng Dẫn: T.s Trần Quang Huy
[Maãvac — oAw4rreL Bl sit Mã Vạch Tên Sản Phim Khu Vực
Thém San Phẩm] Số Dông| ] Cập Nhật
| 23:01:55 17 October 2022 iD Mã Sản Phẩm Tên Sản Phẩm Khu Vực
1 GAW4LTGL Huynh Hoai Nam HCM
Hinh 3.1 Hình đọc mã vạch đã lưu
3.3.2 Code Trợ lý ảo def TQ: #khoi chay tro ly ao robot = "" while True:
Noi = speech_recognition.Recognizer() with speech_recognition.Microphone() as mic: printc" ") Tieng = Noi.listen(mic)#thu giong noi try:
Ban = Noi.recognize_google(Tieng, language="vi") #lang nghe bang tiéng viét except:
Ban="" if Ban ==": robot = "” elif "Xin chao" in Ban: robot = "Xin Chao Bạn” elif "hôm nay" in Ban: homnay = date.todayQ robot = homnay.strftime('%d %B %Y") elif “gian" in Ban:
ThoiGian = datetime.now() robot = ThoiGian.strftime("%H : %M : %S") elif "Google" in Ban: wb.open(‘“https://www.google.com.vn/?hl=vi" robot = ("dang mo Google") elif "dong" in Ban: robot = ("dang dong lai") print("Tro Ly: " + robot) GN.say('Đã đóng”) break elif "YouTube" in Ban: robot="Dang mo" wb.open(‘“https://www.youtube.com/") elif "ban la ai" in Ban: robot =”Tôi tên là kim giang là trợ lý ảo của bạn” elif "xoá dữ liệu” in Ban: robot ="Bạn muốn xóa dòng nào” prIinf( “Bạn: ” + Ban) prin((C “Trợ Lý: ” + robot) GN.say(robot) GN.runAndWait()
TroLy=Button(Nam,text="Tro Ly" ,command=TL,font=("' Arial" ,10),relief='solid',fg='red' ,bg=" white") TroLy.place(xt5,y33)
1 Phan Loai Hang Hoa Ty Bong Bang Quet Ma
Thành Viên Nhóm: ÿnh Hoài Nam — 1900005832 2 Nguyễn Văn Đẳng — 1900006916 3 Trằn Quốc Bảo 1909006121 Giáo Viên Hướng Dẫn T.s Trần Quang Huy
Hình 3.2 Hình ảnh trợ lý giọng nói
3.3.3 File Excel lưu trữ thông tin code
HU dat Page Layout Formulas Data
Deer View x lui Conditional Formatting ~
8 (Glibri “100 +) = = Se General inet ~ LD ~ ore Fa- BIU-~ AK ===E\- $ -% * G®Formatas Tabley ®XDelete ~ [¥]~ Ð~
Paste ~ © ` ữj- h- A- rn 2 8 [4 Cell styles ~ tos {ElFormaty @#~
Clipboard ta Font ti Alignment =) Number œ styles Cells Editing ^
1 ID Mã Sản Phẩm Tên Sản Phẩm Khu Vực
Hình 3.3 Hình ảnh file Excel 3.3.4 Kết quả tông quan chương trình
- Đầu tiên ta đưa mã QR hoặc Barcode lên cho camera quét:
+ Nếu chưa có mã vạch được lưu thì sẽ hiện “Chưa xác nhận” và laptop xuất giọng nói “Chưa thêm sản phâm”
@ Phân Loại Hàng Hóa Tự Động Bằng Quét Mã
1 Huỳnh HoaiNam 1900006832 2 Nguyễn Văn Đổng 1900006915 3 Trằn Quốc Bảo 1900006121 Giáo Viên Hướng Dẫn: T.s Trần Quang Huy
[Mã vạch GAW4LTGL BỊ
STT Mã Vạch Tén San Phim Khu Vue
ID Mã Sản Phẩm Tên Sản Phẩm
Hình 3.4 Hình ảnh đọc mã QR code mới Khu Vực Sau đó ta nhập thông tin mã CODE hiển thị trên label:
@ Phân Loại Hàng Hóa Tự Động Bằng Quét Mã
== | Thành Viên Nhóm: r) | 41 Huynh Hoai Nam 1900005832
3 Tran Quốc Bão 1900006121 Giáo Viên Hướng Dẫn: T s Trần Quang Huy
STT Mã Vạch Tên Sản Phẩm Khu Vực
Thêm Sản Phẩm Số Dàng [_——]
ID Mã Sản Phẩm Ten San Pham Khu Vực
Hình 3.5 Hình ảnh nhập thông tin mã vạch
Sau khi nhan “Thém san pham” théng tin được lưu vào Eile Excel: Nếu đã lưu mã vạch thì khi đưa qua camera đề quét thì hiện” Đã xác nhận” và laptop xuất giọng noi “Ma san pham 1a + Thông tin mã” nth
1 Huỳnh Hoài Nam 1900005832 2 Nguyễn VănĐổng 1900006916 3 Trần Quốc Bão 1900006121 Giáo Viên Hướng Dẫn: T.s Trần Quang Huy
[Mã vạch: GAW4LTGL BỊ
STT Mã Vạch Tên Sản Phẩm Khu Vực
6 Phân Loại Hàng Hóa Tự Động Bằng Quét Mã
Mã Sản Phẩm Tên Sản Phẩm
GAW4LTGL Huynh Hoai Nam
Hình 3.6 Hình ảnh đọc lại mã vạch đã lưu
- _ Nếu chưa có nhập thông tin sán phâm mà bắm nút thêm sản phẩm thì sẽ hiện lên cảnh báo MessengerBox “Bạn chưa nhập đủ dữ liệu”
1 Huỳnh Hoài Nam 1900005832 2 Nguyễn VănĐổng 1900006916 3 Trằn Quốc Bão 1900006121 Giáo Viên Hướng Dẫn: T.s Trần Quang Huy
STT Mã Vạch Tên Sản Phẩm Khu Vực
II wv Ban Chưa Nhập Đủ Dữ Liệu 23 October 2022 Iœm J
ID Ma Sant Khu Vực
Hình 3.7 Hình ảnh cảnh báo chưa nhập Nếu ta nhắn nút xóa đòng 1 thì sẽ hiện lên Box cánh báo, bởi vì đây là dòng hiển thị ID, mã vạch, tên sản phâm và khu vực Đề xóa được ta phái nhập số dòng tương ứng nếu không nhập thì sẽ không có gì xay ra
@ Phan Loai Hàng Hóa Tự Động Bằng Quét Mã
1 Huỳnh Hoài Nam — 1900005832 2 Nguyễn Văn Đổng 1900006916
3 Trằn Quốc Bão 1900006121 Giáo Viên Hướng Dẫn: T.s Trần Quang Huy
| STT Mã Vạch Tên Săn Phẩm Khu Vực
Số Dòng [_—][22] [cap nat oa Ban không thể xóa dong số 1
17 October 2022 lần Phẩm Khu Vực
Hình 3.8 Hình ánh cảnh báo xóa dòng thông tin sản phẩm
KET LUANTrong quá trình tim hiểu nhóm đã gặp phái một sô khó khăn nhất định Nhưng với sự đam mê và sự hướng dẫn nhiệt tình của thầy giáo cộng thêm nỗ lực tìm tòi, đam mê khám phá cái mới đã giúp nhóm đạt được một số kết quả sau:
- _ Tổng quan về thư viện cần thiết cho đề tài
- _ Đã tạo được giao diện TkInter
- _ Tiên hành chạy thực tế và đạt được kết quả
- - Chưa truy xuất được đữ liệu từ mã vạch 1 cách trực tiếp - _ Trợ lý giọng nói chưa truy cập vào trong file excel và còn bị hạn chế chưa can thiệp vào hệ thông Hướng phát triển:
- Phát triển phần mềm đọc mã vạch mà bất cứ ai cũng có thê sử dụng được, chỉ cần tái về và đăng nhập
- _ Quét mã vạch hiên thị đầy đủ các thông tin sản phẩm lên phần mềm, sau đó tự động lưu vào thư mục do chính phần mềm đó tạo ra không bị phụ thuộc vào Excel, người dựng cú thờ chớnh sửa trực tiếp trong ủle đú
- _ Sử dụng trợ lý giọng nói có thể điều khiển thêm hoặc xóa các mã vạch sản phâm và đồng bộ với thư mục đề lưu thông tin
TAI LIEU THAM KHAO1 www.google.com 2 www.youtube.com
PHU LUC CODE HOAT DONGfrom tkinter import * # Thu tao giao dién import cv2 # Thu vién su ly anh import numpy as np # Thu vién khai bao mang from PIL import Image,ImageTk # Thu vién lay hinh anh from pyzbar.pyzbar import decode #Thu vién dé doc ma QR va Barcode import pyttsx3 # Thu vién giong nói from datetime import date ,datetime #Thu vién dé lay thoi gian import time # Thu vién thoi gian from tkinter import ttk # Thu viện tạo giao diện import speech_recognition # ‘Thu vién thu giong noi from threading import Thread #Thu vién phan luong import webbrowser as wb #Thu vién mo dudng link import pandas as pd # Thu vién cau tric bang đa chiều import pathlib # Thư viện đường dẫn from openpyxl import Workbook # mo excel import openpyxI,xlrd # mở excel from openpyxl import load_workbook #mo excel from tkinter import messagebox
Nam = TkQ #code gọi tkimfer Nam.tifle(Đô An Trí Tuệ Nhân Tạo) #đặt tên cho khung giao diện Nam.geometry( 800x610”) # kích thước khung
Nam.resizable(widthse, heiphtse) #khóa khung Nam.iconbitmap("D:\\GiaoDien\\education.ico") #icon cho giao diện thứ TLN = speech_recognition.RecognizerQ#khoi dong giong noi
Hinh=cv2.VideoCapture(0) Hinh.set(3,200)
GN =pyttsx3.initQ) #khởi tạo tiếng nói của máy tính voices = ỚN.getProperty(voIces”)
GN.setProperty("voice” voices[1].id) #setup giong cho may tinh TocDoDoc=GN getProperty(‘rate’) # t6c độ đọc của máy tính chậm GN.setProperty(rate',TocDoDoc - 80) #giám tốc độ đọc của giộng nói xuống 80 N1 = Label(Nam, text="",bg="white" padx=2 1 0,pady=5,relief='solid’) #khung chữ thứ nhat
N1.place(x75,y0) # vi trí của khung chữ thứ nhất
N2 = Label(Nam, text="",bg="white" padx=2 | 0,pady=8 ,relief='solid’) #khung chữ thứ hai
N2.place(x75,y30) # vị trí của khung chữ thứ hai
N3 = Label(Nam, text="",bg="white" padx=2 | 0,padyE,relief='solid))#khung chtr thir Ba
N3.place(x75,y!5) # vi tri cua khung chữ thứ Ba
N4 = Label(Nam, text="",bg="white" padx@0,pady6,relief='solid’) #khung chữ thir hai
N4.place(x=6, y70) # vi tri cua khung chtr thir hai
NTT = ImageTk.PhotoImage(Image.open("D:\\GiaoDien\\_LG80.jpg")) #khung anh Nguyễn Tắt Thành
TNTT = LabelGimage=NTT) TNTT.place(xP,y=0) # vi tri cua khung anh TieuDe = Label(Nam, text="Phan Loại Hàng Hóa Tự Động Bang Quét Mã",font=( bold”,20),fg=red #khung chữ tiêu đề
TieuDe.place(x0, y) #vi tri khung chữ tiêu đề
TVN=Label(Nam, text="Thanh Vién Nhom:",font=(" Arial" ,12),fg='red’) TVN.place(x80, yp)
TV1=Label(Nam, text="1 Huynh Hoai Nam 1900005832", font=(" Arial", 10)) TV 1.place(x90, y)
TV2=Label(Nam, text="2 Nguyễn Văn Đồng 1900006916”,font=('Arial",10)) TV2.place(x90, y0)
TV3=Label(Nam, text="3 Trần Quốc Bảo 1900006121”,font=('Arial",10)) TV3.place(x90, y0)
GVHD=Label(Nam, text="Giao Vién Huong Dan:",font=(" Arial", 12),fg='red’) GVHD.place(x80, y5)
GVHD 1=Label(Nam, text="T.s Tran Quang Huy",font=(" Arial",12)) GVHDI.place(xU0, y=l55)
MaVach = Label(Nam, text="Ma Vach:",font=(’ Arial", 12),bg="white") #khung chit ma vach
MaVach.place(x80, y2)#vi tri cua khung ma vach
HienMV = Label(Nam, text="",fg= "red" ,font=("Arial",12),bg="white") #Khung hiện ma vach
HienMV place(xP0, y2)#vi tri cua khung hiện mã vạch
HNT = Label(Nam, text="",font=("Arial" ,12),bg="white") HNT.place(x`0,y35)
TG = Label(Nam, text="",font=(" Arial", 12),bg="white") TG.place(x80,y35)
L1 = Label(Nam,relief='solid’) LI.place(x=7,yp)
STT = Label(Nam,text="STT" ,font=(" Arial", 10),bg="Wwhite") STT-place(x = 382, y"0)
SoMV = Label(Nam,text="Ma Vach",font=(" Arial", 10),bg="white") SoMV.place(x = 450, y"0)
TenSP = Label(Nam,text="Tén San Phẩm",font=('Arial",10),bg="white") TenSP.place(x = 560, y"0)
KhuVuc = Label(Nam,text="Khu Vyc",font=("Arial" ,10),bg="white") KhuVuc.place(x = 700, y"0)
KhungSTT = Entry(Nam, width=5,relief='solid’) KhungSTT.place(x80,y$0)
KhungSoMV = Entry(Nam, width ,relief='solid’) KhungSoMV.place(xB0, y$0)
KhungTenSP = Entry(Nam, width ,relief='solid’) KhungTenSP.place(xU0,y$0)
KhungKhuVuc = Entry(Nam, width ,relief='solid’) KhungKhu Vuc.place(xh0, y$0)
MXN = Label(Nam, text=" ", bg="white", padx=1, pady=1, relief='solid’)
MXN place(xw5, y4) file = pathlib.Path(”Lri TueNhanTao.xlsx”) if file.existsQ: pass else: file=WorkbookQ) sheet=file.active sheet["A1"]="ID" sheet["B1"]="Ma San Pham" sheet["C1"]="Tên Sản Phẩm" sheet["D1"]="Khu Vuc" file.save("TriTueNhanTao.xlsx") def submit(): y=KhungSTT.getQ) z=KhungSoMV.get() z1=KhungTenSP getQ) yl=KhungKhuVuc.getQ if y=="" or z=="" or z1=="" or yl= messagebox.showinfo("Canh Bao","Ban Chua Nhap Du Dtr Liéu") else: fie=openpyxLload_ workbook( "Trí TueNhan Tao.xlsx") sheet=file.active sheet.cell(column=Í,row=sheet.max_row+ẽ ,value=y) sheet.cell(column=2,row=sheet.max_row,value=z) sheet.cell(column=3,row=sheet.max_row,value=zl) sheet.cell(column=4,row=sheet.max_row, value=y 1) file.save("TriTueNhanTao.xIsx") we HH, file_openQ KhungSTT.delete(O, END) KhungSoMV.delete(O, END) KhungTenSP.delete(O, END) KhungKhuVuc.delete(0, END) my_frame =Frame(Nam) my_frame.place(x=7, y72)
M =ttk.Treeview(my_frame) def file_openQ: filename= pathlib.Path('TriTueNhanTao.xlsx") if filename: try: filename=r" { }" format(filename) df=pd.read_excel(filename) except ValueError: my_label.config(text="File Couldn't Be Open") except FileNotFoundError: my_label.config(text="File Couldn't Be Found") clear_tree()
M["column"] =list(df.columns) M["show"] ="headings" for column in M["column"]:
M.heading(column,text=column) df_rows = df.to_numpy().tolistO for row in df_rows:
M.insert(”","end”,values=row) M.packQ wb=load_workbook("TriTueNhanTao.xIsx") ws=wb.active column_b = ws["B"] for cell in column_b: global Ghi Ghi = cell value def clear_treeQ:
M.delete(*M.get_childrenQ) my_label=Label(Nam,text=""") my_label.place(x=1,y=1)
# def chonQ: selected = M.s for item in selected:
Na = M.item(item) Nal = Na.get("values") print(Nal[1], Nal[2]) se oH tk He HE def XoaDLOQ: filel = openpyxl.load_workbook("TriTueNhanTao.xlsx") sheet] = filel.active s = int(KhungXoa.getQ) ifs !=1: sheet1.delete_rows(idx=s,amount=1) filel.save("TriTueNhanTao.xlsx") file_openQ elif s == 1: messagebox.showinfo("Cảnh Báo","Bạn không thê xóa dòng số 1") KhungXoa.delete(0, END)
Them=Button(Nam, text=""Them San Pham" ,command=submit,font=("Arial" ,10),relief='solid',fg='green',bg=" white") Them.place(x80,y)0)
TenXoa = Label(Nam,text="S6 Dong:" font=("Arial",10),bg=" white") TenXoa.place(x = 520, y)3)
KhungXoa = Entry(Nam, width=5,relief='solid’,) KhungXoa.place(x=5 80, y)5)
Xoa=Button(Nam,text="X6a" ,ommand=XoaDL,font=("Arial", 10),relief='solid',fg='gre en',bg="white")
Upload=Button(Nam,text="Cap Nhat",command=file_open,font=("'Arial", 1 0),relief='solid’,fg='green',bg=" white") Upload.place(xs0, y)0) file_openO def TLQ: #khoi chay tro ly ao robot = "" while True:
Noi = speech_recognition.Recognizer() with speech_recognition.Microphone() as mic: printc" ") Tieng = Noi.listen(mic)#thu giong nói try:
Ban = Noi.recognize_google(Tieng, language="vi") #lăng nghe bằng tiếng việt except:
Ban="" if Ban ==": robot = "” elif "Xin chao" in Ban: robot = "Xin Chao Ban” elif "hôm nay" in Ban: homnay = date.todayQ robot = homnay.strftime('%d %B %Y") elif "gian" in Ban:
ThoiGian = datetime.nowQ robot = ThoiGian.strftime("%H : %M : %S") elif "Google" in Ban: wb.open(“https://www.google.com.vn/?hl=vi" robot = ("dang mo Google") elif "dong" in Ban: robot = ("dang dong lai”) print('Tro Ly: " + robot) GN.say('Đã đóng”) break elif "YouTube" in Ban: robot="Dang mo" wb.open(“https://www.youtube.com/") elif "ban là ai" in Ban: robot =” Tôi tên là kim giang là trợ ly ảo của bạn” elif "xoá dữ liệu” in Ban: robot ="Bạn muốn xóa dòng nào” print("Ban: " + Ban) prin((C “Trợ Lý: ” + robot) GN.say(robot) GN.runAndWaitQ)
TroLy=Button(Nam,text="Tro Ly" ,command=TL,font=("' Arial" ,10),relief='solid',fg='red' ,bg=" white") TroLy.place(xt5,y33) while True:
NTN = date.todayQ #ngay thang HTNTN = NTN: strftime("%d %B %Y") t = time.localtimeQ #phút giây t = time.strftime("%H:%M:%S", t)
1mg = Hinh.readO|[ I | 1mg = cv2.cvtColor(mg, cv2.COLOR_BGR2RGB) for barcode in decode(img): #nhan dién ma vach print(barcode.data) MV = barcode.data.decode(‘utf-8') print(Mv) if MV in Ghi:
XN = 'Xac Nhan' MXN = Label(Nam, text=" ", bg=”green”, padx=l, pady=[l,relief= solid) MXN.place(xw5, y=l84) else:
XN = 'Chua Xac Nhan' MXN = Label(Nam, text=" _", bg="red", padx=1, pady=1 ,relief='solid’) MXN place(xw5, y4) pts = np.array([barcode.polygon], np.int32) pts = pts.reshape((-1, 1, 2)) cv2.polylines(img, [pts], True, (255, 0, 255), 5) pts2 = barcode.rect cv2.putText(img, XN,(pts2[0],pts2[1]),cv2.FONT_HERSHEY_SIMPLEX,0.9,(255,0,255),2)
HienMV.configure(text=MV) def XNCQ: time.sleep(0.5) if MV in Ghi:
GN.say( Mã Sản Phâm La:" + MV) else:
GN.say("San Phâm Chưa Được Thêm") Xne = Thread(target=XNC)
HNT.configure(text=HTNTN) TG.configure(text=t) img = ImageTk.PhotoImage(Image.fromarray(img)) L1[‘image'] = img