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

Xây dựng chương trình nhận dạng tên hàng hoá dựa trên việc nhận dạng ký tự

24 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Xây Dựng Chương Trình Nhận Dạng Tên Hàng Hoá Dựa Trên Việc Nhận Dạng Ký Tự
Tác giả Nguyễn Hoàng Anh
Người hướng dẫn TS. Nguyễn Hữu Tuân
Trường học Trường Đại Học Hàng Hải Việt Nam
Thể loại báo cáo bài tập lớn
Năm xuất bản 2024
Thành phố Hải Phòng
Định dạng
Số trang 24
Dung lượng 4,02 MB

Nội dung

CHƯƠNG 1: GIỚI THIỆU VỀ BÀI TOÁN1.1 Tìm hiểu về bài toán chương trình nhận dạng tên hàng hóa dựa trên việc nhận dạng ký tự: Bài toán chương trình nhận dạng tên hàng hóa dựa trên việc nhậ

Trang 1

TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM VIỆN ĐÀO TẠO CHẤT LƯỢNG CAO

BÁO CÁO BÀI TẬP LỚN NHẬN DẠNG VÀ XỬ LÝ ẢNH

XÂY DỰNG CHƯƠNG TRÌNH NHẬN DẠNG TÊN HÀNG HOÁ DỰA TRÊN VIỆC NHẬN DẠNG KÝ TỰ

Giảng viên hướng dẫn TS Nguyễn Hữu Tuân

HẢI PHÒNG - 2024

Trang 2

MỤC LỤC

CHƯƠNG 1: GIỚI THIỆU VỀ BÀI TOÁN 4

1.1 Tìm hiểu về bài toán 4

1.2 Khái quát về chương trình 5

1.3 Các bước thực hiện chương trình 6

1.4 Các ứng dụng của bài toán 8

CHƯƠNG 2: XÂY DỰNG CHƯƠNG TRÌNH 11

2.1 Ngôn ngữ Python 11

2.2 Thư viện Tkinter 11

2.3 Thư viện PIL 12

2.4 Thư viện Pickle 13

2.5 Thư viện EasyOCR 14

CHƯƠNG 3: QUÁ TRÌNH THỰC HIỆN VÀ KẾT QUẢ 16

3.1 Quá trình thực hiện 16

3.2 Kết quả 19

KẾT LUẬN 20 TÀI LIỆU SỬ DỤNG 22

Trang 3

DANH MỤC HÌNH ẢNH

Hình 1 Hình ảnh về ứng dụng nhận dạng hình ảnh 6

Hình 2 Hình ảnh kết quả của Easy OCR 7

Hình 3 Trang web cài đặt python 7

Hình 4 Cài đặt các thư viện 8

Hình 5 Cài đặt các thư viện 9

Hình 6 Cài đặt các thư viện 14

Hình 7 Cấu trúc chương trình 16

Hình 8 Khai báo các thư viện 17

Hình 9 Dùng hàm open_image 17

Hình 10 Dùng hàm recognize_text 18

Hình 11 Dùng hàm draw_box 19

Hình 12 Tạo cửa sổ giao diện 19

Trang 4

CHƯƠNG 1: GIỚI THIỆU VỀ BÀI TOÁN

1.1 Tìm hiểu về bài toán chương trình nhận dạng tên hàng hóa dựa trên việc nhận dạng ký tự:

Bài toán chương trình nhận dạng tên hàng hóa

dựa trên việc nhận dạng ký tự là một bài toán trong lĩnh

vực Trí tuệ nhân tạo và Xử lý ảnh, mục tiêu của nó là

phát triển các hệ thống có khả năng tự động nhận dạng

và phân loại tên của các sản phẩm từ hình ảnh sản phẩm

Cụ thể, khi có một hình ảnh chứa tên của một sản

phẩm (ví dụ: một hình ảnh chứa nhãn sản phẩm trên một

hộp hàng hoặc một hình ảnh chứa tên sản phẩm trong

một bức ảnh chụp của một cửa hàng), hệ thống sẽ thực

hiện các bước sau:

 Nhận dạng văn bản (OCR): Hệ thống sẽ sử dụng các thuật toánnhận dạng ký tự để trích xuất văn bản từ hình ảnh Các kỹ thuật này

có thể sử dụng các phương pháp truyền thống như Tesseract OCRhoặc các mô hình học sâu như CNNs và RNNs

 Phân loại sản phẩm: Sau khi nhận dạng được văn bản, hệ thống sẽ

so sánh thông tin văn bản với một cơ sở dữ liệu đã được xây dựngtrước, chứa các tên sản phẩm được xác định trước Quá trình nàygiúp hệ thống xác định tên chính xác của sản phẩm từ thông tin vănbản được trích xuất

 Trả về kết quả: Khi đã nhận dạng và phân loại được tên sản phẩm,

hệ thống sẽ trả về kết quả cho người dùng hoặc sử dụng trong cácquy trình tự động hóa khác, như quản lý tồn kho, đặt hàng, hoặcgiao hàng

Hnh 1 Hnh ảnh về nhận dạng hnh ảnh

Trang 5

Bài toán này có ứng dụng rộng rãi trong nhiều lĩnh vực như bán lẻ, quản

lý kho, giao hàng, và tự động hóa quy trình sản xuất, giúp tối ưu hóa quy trìnhkinh doanh và cải thiện trải nghiệm của người tiêu dùng

1.2 Khái quát về bài toán chương trình nhận dạng tên hàng hóa dựa trên việc nhận dạng ký tự:

Yêu cầu của bài toán:

 Nhận dạng chính xác: Hệ thống phải có khả năng nhận dạng chínhxác các ký tự từ hình ảnh sản phẩm Độ chính xác này cần đáp ứngyêu cầu của ứng dụng cụ thể, ví dụ như ít nhất 95% đúng cho cácứng dụng có yêu cầu cao về chính xác

 Tính nhanh và hiệu quả: Hệ thống cần xử lý nhanh chóng để cungcấp kết quả trong thời gian gần thời gian thực Thời gian xử lýkhông nên quá lâu đối với mỗi hình ảnh

 Hỗ trợ cho nhiều ngôn ngữ và font chữ: Hệ thống cần có khả năngnhận dạng các ký tự từ nhiều ngôn ngữ và font chữ khác nhau, đặcbiệt là khi hoạt động trong môi trường đa quốc gia

 Tương thích với các định dạng ảnh khác nhau: Hệ thống cần có khảnăng nhận dạng ký tự từ các định dạng ảnh phổ biến như JPEG,PNG, GIF, và có thể xử lý các biến thể như ảnh có nền động, ảnhnghiêng, hoặc có nhiễu

 Tính linh hoạt và mở rộng: Hệ thống cần được thiết kế để có thể

mở rộng và linh hoạt, cho phép thêm mới các danh mục hàng hóa

và cải thiện hiệu suất dự đoán khi có dữ liệu mới

 Bảo mật và quản lý dữ liệu: Hệ thống cần đảm bảo an toàn và bảomật cho dữ liệu hàng hóa và thông tin khách hàng, đồng thời tuânthủ các quy định về bảo vệ dữ liệu

Trang 6

 Giao diện người dùng thân thiện: Giao diện của hệ thống cần đơngiản và dễ sử dụng cho người dùng cuối, cho phép họ dễ dàngtương tác và nhận kết quả một cách hiệu quả.

 Tích hợp với hệ thống khác (nếu cần): Hệ thống cần có khả năngtích hợp với các hệ thống khác như hệ thống quản lý kho, hệ thốngthanh toán, hoặc các hệ thống CRM (Quản lý mối quan hệ kháchhàng) để cung cấp thông tin chi tiết về sản phẩm và đơn hàng

1.3 Các bước tiền xử lý bài toán:

Các bước cơ bản thực hiện bài toán:

 Thu thập dữ liệu: Thu thập một tập dữ liệu ảnh chứa các hình ảnhcủa các sản phẩm bạn muốn nhận dạng

 Tiền xử lý ảnh: Sử dụng các kỹ thuật tiền xử lý ảnh để cải thiệnchất lượng của ảnh và giảm nhiễu Điều này có thể bao gồm việcđiều chỉnh cường độ ánh sáng, cân bằng màu sắc, loại bỏ nền, vàcắt ảnh sao cho chỉ còn lại sản phẩm

 Nhận dạng ký tự: Sử dụng các thuật toán nhận dạng ký tự (OCR Optical Character Recognition) để trích xuất văn bản từ các hìnhảnh Có thể sử dụng các thư viện và công cụ như Tesseract OCRhoặc các mô hình học sâu như CNN và LSTM

- Phân loại sản phẩm: Sử dụng thông tin văn bản được nhận dạng từảnh để so khớp với các mẫu tên hàng hóa trong cơ sở dữ liệu củabạn Có thể sử dụng các phương pháp so khớp chuỗi (stringmatching) hoặc các mô hình học máy như máy vector hỗ trợ(SVM), mạng nơ-ron hồi quy (RNN), hoặc mạng nơ-ron biến thể

 Kiểm tra và tinh chỉnh: Kiểm tra hiệu suất của hệ thống nhận dạng

và tinh chỉnh các tham số của các thành phần trong quy trình như

kỹ thuật tiền xử lý, mô hình nhận dạng ký tự và phân loại sảnphẩm

Trang 7

 Triển khai: Triển khai hệ thống nhận dạng vào môi trường thực tế

và kiểm tra tính ổn định và độ chính xác của nó

1.4 Các ứng dụng của bài toán chương trình nhận dạng tên hàng hóa dựa trên việc nhận dạng ký tự:

 Tăng hiệu suất và tự động hóa: Hệ thống nhận dạng tên hàng hóagiúp tăng hiệu suất và tự động hóa quy trình xác định sản phẩmtrong các cửa hàng bán lẻ, kho hàng, hoặc trong quy trình sản xuất

 Tiết kiệm thời gian và nhân lực: Thay vì phải thực hiện thủ côngviệc đọc và xác định tên hàng hóa, hệ thống nhận dạng ký tự có thểthực hiện nhanh chóng và tự động, giúp tiết kiệm thời gian và nhânlực

 Minh bạch và chính xác: Bằng cách tự động ghi nhận thông tin vềhàng hóa, hệ thống nhận dạng ký tự giúp tăng cường minh bạch vàchính xác trong quản lý hàng hóa và dịch vụ

 Tối ưu hóa quy trình tồn kho: Việc nhận dạng tự động giúp cập nhậtthông tin về hàng hóa trong hệ thống quản lý tồn kho một cáchnhanh chóng và chính xác, từ đó giúp tối ưu hóa quy trình quản lýtồn kho và đặt hàng

 Nâng cao trải nghiệm khách hàng: Bằng cách cung cấp thông tinchính xác và nhanh chóng về sản phẩm, hệ thống nhận dạng tênhàng hóa giúp nâng cao trải nghiệm mua sắm và tương tác vớikhách hàng

 Phát hiện gian lận và quản lý rủi ro: Hệ thống nhận dạng tên hànghóa có thể được sử dụng để phát hiện gian lận hoặc kiểm tra tínhtrùng lặp trong quá trình đóng gói và giao hàng, từ đó giúp quản lýrủi ro và bảo vệ quyền lợi của người tiêu dùng

 Hỗ trợ ra quyết định: Dữ liệu được tự động nhận dạng và phân loại

có thể được sử dụng để hỗ trợ ra quyết định liên quan đến quản lýtồn kho, đặt hàng, và các chiến lược kinh doanh khác

Trang 8

CHƯƠNG 2: XÂY DỰNG CHƯƠNG TRÌNH

2.1 Ngôn ngữ Python

Python là một ngôn ngữ lập trình thông dịch, đa mục đích, và dễ học.Được phát triển bởi Guido van Rossum và được ra mắt lần đầu vào năm 1991,Python đã nhanh chóng trở thành một trong những ngôn ngữ lập trình phổ biếnnhất trên thế giới Dưới đây là một số đặc điểm chính và thông tin cơ bản vềPython:

Đặc Điểm:

 Dễ Học và Dễ Đọc: Python được thiết kế với cú pháp đơn giản và rõ ràng,giúp cho người mới học lập trình có thể nhanh chóng tiếp cận và làmquen

 Đa Mục Đích: Python hỗ trợ nhiều mục đích khác nhau, từ lập trình web,phát triển game, xử lý dữ liệu, đến trí tuệ nhân tạo và tính toán khoa học

 Hỗ Trợ Thư Viện Phong Phú: Python có một cộng đồng lớn và năng động,cung cấp hàng ngàn thư viện và module cho nhiều mục đích khác nhau

Ví dụ như NumPy, Pandas, TensorFlow, Django, Flask, và nhiều thư việnkhác

 Tính Mở và Miễn Phí: Python là một phần mềm mã nguồn mở và miễnphí, có nghĩa là mọi người có thể sử dụng, sửa đổi và phân phối lại mãnguồn mà không phải trả tiền

Python không chỉ là một ngôn ngữ lập trình mạnh mẽ mà còn là một cộngđồng lớn mạnh với hàng ngàn tài liệu, hướng dẫn và hỗ trợ Điều này khiếnPython trở thành một lựa chọn phổ biến cho người mới bắt đầu và những nhàphát triển kinh nghiệm

2.2 Thư viện Tkinter

Tkinter là một thư viện giao diện người dùng (GUI) mạnh mẽ và dễ sửdụng được tích hợp sẵn trong Python Với Tkinter, bạn có thể tạo ra các ứngdụng đồ họa tương tác trên nền tảng desktop một cách dễ dàng Dưới đây là một

số đặc điểm và chức năng chính của Tkinter:

Trang 9

 Đa Nền Tảng và Độ Di Động: Tkinter hỗ trợ trên nhiều hệ điều hành khácnhau như Windows, macOS, và Linux Điều này cho phép bạn phát triểnứng dụng một lần và chạy trên nhiều hệ điều hành mà không cần phải điềuchỉnh mã nguồn.

 Xử Lý Sự Kiện: Tkinter cho phép bạn gắn kết các hàm xử lý sự kiện vớicác widget Điều này giúp ứng dụng của bạn có thể phản ứng đúng khingười dùng tương tác với các phần tử trên giao diện

Tkinter là một lựa chọn tuyệt vời cho việc phát triển các ứng dụngdesktop đơn giản hoặc trung bình, với sự kết hợp giữa tính linh hoạt và sứcmạnh của Python

2.3 Thư viện PIL

PIL là viết tắt của Python Imaging Library, là một thư viện Python mạnh

mẽ để xử lý và chỉnh sửa hình ảnh PIL cung cấp nhiều chức năng cho việc tải,lưu, chỉnh sửa, biến đổi và thao tác với hình ảnh trong Python

Dưới đây là một số tính năng chính của thư viện PIL:

Đọc và ghi hình ảnh: PIL hỗ trợ nhiều định dạng hình ảnh như JPEG,PNG, GIF, BMP và TIFF Bạn có thể dễ dàng đọc và ghi hình ảnh từ và đến cáctệp tin định dạng này

Chỉnh sửa hình ảnh: PIL cho phép bạn thực hiện các phép biến đổi hìnhảnh như cắt, xoay, thu phóng, lật và xoay ngược Bạn có thể điều chỉnh kíchthước, màu sắc, độ sáng, độ tương phản và nhiều yếu tố khác của hình ảnh.Thao tác pixel: Bạn có thể truy cập và chỉnh sửa từng pixel trong hìnhảnh PIL cung cấp các phương thức để lấy giá trị màu sắc của pixel, đặt giá trịmàu sắc mới, tìm kiếm và thay thế màu sắc cụ thể, và thực hiện các phép tínhtoán pixel khác

2.4 Thư viện Pickle

Thư viện pickle trong Python là một công cụ mạnh mẽ cho việcserialization và deserialization của các đối tượng Python Trong ngữ cảnh này,serialization đề cập đến quá trình chuyển đổi một đối tượng Python thành một

Trang 10

định dạng có thể được lưu trữ hoặc truyền tải, trong khi deserialization là quátrình ngược lại, chuyển đổi dữ liệu đã được serialized thành một đối tượngPython.

Thư viện pickle cho phép bạn lưu trữ một loạt các đối tượng Python nhưdanh sách, từ điển, các đối tượng tùy chỉnh và nhiều hơn nữa dưới dạng các tệptin hoặc dữ liệu nhị phân Điều này rất hữu ích khi bạn muốn lưu trữ dữ liệu tạmthời hoặc truyền dữ liệu giữa các ứng dụng Python khác nhau

Với thư viện pickle, bạn có thể dễ dàng lưu trữ trạng thái của các đốitượng Python và khôi phục chúng sau này mà không mất đi cấu trúc hoặc dữliệu của chúng Điều này giúp cho việc làm việc với dữ liệu trở nên linh hoạt vàthuận tiện hơn trong các dự án Python của bạn

2.5 Thư viện EasyOCR

Hnh 2 Hnh ảnh kết quả của Easy OCR

Giới Thiệu: EasyOCR là một thư viện mã nguồn mở được thiết kế để dễ dàng sử dụng cho việc nhận dạng ký tự (OCR) từ hình ảnh bằng ngôn ngữ lập

Trang 11

trình Python EasyOCR hỗ trợ việc nhận dạng văn bản từ nhiều ngôn ngữ và font chữ khác nhau, và có thể được sử dụng trong nhiều ứng dụng khác nhau như nhận dạng biển số xe, giấy tờ cá nhân, hay nhãn sản phẩm.

Tính Năng Chính:

 Hỗ trợ nhiều ngôn ngữ: EasyOCR có khả năng nhận dạng văn bản

từ nhiều ngôn ngữ khác nhau, bao gồm cả các ngôn ngữ phổ biến

và ngôn ngữ ít được sử dụng

 Đơn giản và dễ sử dụng: Thư viện này được thiết kế để dễ dàng tíchhợp vào các ứng dụng và dịch vụ thông qua API hoặc gói cài đặtđơn giản

 Hỗ trợ nhiều nguồn dữ liệu: EasyOCR có khả năng nhận dạng vănbản từ ảnh chụp từ nhiều nguồn khác nhau, bao gồm cả văn bản in,chữ viết tay và chữ trên biển số xe

 Kiến Trúc và Hoạt Động: EasyOCR sử dụng các mô hình học máy

để nhận dạng ký tự từ hình ảnh Quá trình này bao gồm các bướcnhư tiền xử lý ảnh, trích xuất đặc trưng, và phân loại ký tự.EasyOCR cung cấp giao diện lập trình ứng dụng (API) để giao tiếpvới các ứng dụng khác và hỗ trợ tích hợp dễ dàng vào các dự án.Cách sử dụng:

 Để sử dụng thư viện EasyOCR trong Python, cần cài đặt nó thôngqua pip và sau đó import nó vào mã của mình Đây là các bước cơbản để sử dụng EasyOCR:

 Cài đặt EasyOCR: Mở terminal hoặc command prompt và chạylệnh sau để cài đặt EasyOCR:

 pip install easyocr

 Import EasyOCR: Trong mã Python, import EasyOCR như sau:

 import easyocr

Hiệu Suất và Độ Chính Xác: Hiệu suất và độ chính xác của EasyOCR phụthuộc vào nhiều yếu tố như chất lượng ảnh đầu vào, ngôn ngữ được nhận dạng,

Trang 12

và điều kiện ánh sáng Tuy nhiên, thư viện này đã được đánh giá là có hiệu suấttốt trong việc nhận dạng văn bản từ hình ảnh.

 EasyOCR là một công cụ mạnh mẽ và linh hoạt cho việc nhận dạngvăn bản từ hình ảnh Với khả năng tích hợp dễ dàng, hỗ trợ nhiềungôn ngữ và hiệu suất tốt, EasyOCR là lựa chọn phổ biến cho các

dự án cần tính năng OCR

Trang 13

CHƯƠNG 3: QUÁ TRÌNH THỰC HIỆN VÀ KẾT QUẢ

3.1 Quá trình thực hiện

Đầu tiên ta cần cài đặt môi trường cho việc xây dựng chương trình trênnền tảng ngôn ngữ python

Hnh 3 Trang web cài đặt python

Sau khi đã cài đặt xong ta sẽ cài đặt các thư viện được giới thiệu ở chương

2 bằng lệnh PIP

PIP là công cụ quản lý gói cho Python, cho phép bạn cài đặt và quản lýcác gói thư viện Python PIP được cài đặt sẵn khi cài đặt Python từ phiên bản2.7.9 và phiên bản 3.4 trở đi

Trước tiên bạn vào đường link https://bootstrap.pypa.io/pip.py -o pip.py để tải file get-pip.py Sau đó chạy lệnh python get-pip.py trên commander

get-để cài đặt PIP

Sau đó sử dụng các lệnh pip để cài đặt thư viện trên commander lần lượt nhưsau:

 pickle: pip install pickle-mixin

 PIL: pip install Pillow

 EasyOCR: pip install easyocr

Trang 14

Hnh 4 5 6 Cài đặt các thư viện

Thư viện tkinter đã được tích hợp sẵn trong gói ngôn ngữ python nên takhông cần tải nó

Đây là cấu trúc của chương trình

Trang 16

Hàm open_image() trong đoạn mã thực hiện các công việc sau:

 Mở file hình ảnh: Sử dụng hộp thoại filedialog.askopenfilename(),hàm này cho phép người dùng chọn một file hình ảnh từ hệ thốngtệp của họ và trả về đường dẫn của file được chọn

 Đọc ảnh: Sử dụng Image.open() từ thư viện PIL (Pillow) để mở vàđọc hình ảnh từ đường dẫn được chọn

 Chuyển đổi hình ảnh thành đối tượng Tkinter: Sau khi đọc hìnhảnh, hàm chuyển đổi nó thành một đối tượng PhotoImage từ thưviện PIL (Pillow), để có thể hiển thị trong giao diện người dùngTkinter

 Cập nhật hình ảnh trong giao diện người dùng: Sử dụng phươngthức configure() của đối tượng label để cập nhật hình ảnh hiển thịtrong giao diện người dùng

 Nhận dạng văn bản từ hình ảnh: Gọi hàm recognize_text(file_path)

để nhận dạng văn bản từ file hình ảnh được chọn Có thể giả sửrằng hàm recognize_text() đã được định nghĩa ở nơi khác trong mã

 Vẽ hộp giữa các từ được nhận dạng: Gọi hàm draw_box(result,image) để vẽ hộp giữa các từ đã được nhận dạng trên hình ảnh.Điều này giúp làm nổi bật văn bản được nhận dạng trong hình ảnh

Ngày đăng: 06/02/2025, 16:21

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN