CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI 1.1 Tổng quan về lĩnh vực nhận dạng chữ số Tổng quan về lĩnh vực nhận dạng chữ số: Ngày nay, khái niệm ảnh số đã trở nên thông dụng với hầu hết mọi người trong xã hội và việc thu nhận ảnh số để đưa vào, lưu trữ trên các thiết bị điện tử như máy tính, điện thoại, smart TV đã trở nên rất đơn giản. Các lĩnh vực liên quan đến xử lý ảnh số rất phổ biến, sôi nổi, được phát triển rộng rãi, trong đó có lĩnh vực nhận dạng chữ số. Nhận dạng chữ số là một lĩnh vực đã được quan tâm nghiên cứu và đã có những ứng dụng thưc tiễn trong những năm gần đây.
Chúng ta có thể dễ dàng nhận thấy lợi ích của nhận dạng chữ số như số hóa tài liệu giấy, tính toán dựa vào tài liệu giấy, truy vấn bằng hình ảnh (image based information retrieval. Ở Việt Nam cũng như trên thế giới, các ứng dụng về xử lý và nhận dạng ảnh đã bước đầu được triển khai trên một số lĩnh vực, mang lại hiệu quả như ứng dụng nạp thẻ điện thoại thông minh, ứng dụng chuyển đổi hình ảnh văn bản thành text. Tuy nhiên số lượng các ứng dụng được triển khai trên thực tế còn ít, lĩnh vực này sẽ phát triển mạnh mẽ trong tương lai nếu như được quan tâm một cách nghiêm túc. Ý tưởng đề tài nhận dạng và tính tiền trên hóa đơn: Trong cuộc sống hiện nay, khi chúng ta đi ăn nhà hàng, khi đi chơi hay khi mua sắm, chúng ta nhận được một phiếu hóa đơn thanh toán rất dài chứa danh sách các món ăn, dịch vụ hay những món đồ đã mua.
Trước khi thanh toán, ta 2 thắc mắc về tổng số tiền trên hóa đơn đã đúng chưa nhưng lại ngại tính toán lại danh sách dài như vậy? Hệ thống nhận dạng và tính tiền trên hóa đơn được phát triển để phục vụ cho những nhu cầu như vậy. Hệ thống sẽ nhận dạng lại danh sách số tiền dựa vào hình ảnh ta cung cấp và sẽ đưa ra tổng số tiền trên hóa đơn.2 Giới thiệu các công nghệ sử dụng 1.NET Từ khoảng cuối thập niên 90, ASP (Active Server Page) đã được nhiều lập trình viên lựa chọn để xây dựng và phát triển ứng dụng web động trên máy chủ sử dụng hệ điều hành Windows. ASP đã thể hiện được những ưu điểm của mình với mô hình lập trình thủ tục đơn giản , sử dụng hiệu quả đối tượng COM: ADO (ActiveX Data Object) – xử lý dữ liệu, FSO (File System Object) – làm việc với hệ thống tập tin, … đồng thời, ASP cũng hỗ trợ nhiều loại ngôn ngữ: VBScript, Java Script. Chính những ưu điểm đó, ASP đã được yêu thích trong một thời gian dài.
Tuy nhiên ASP vẫn còn tồn động môt số khó khăn như mã ASP và HTML lẫn lộn, điều này làm cho quá trình viết mã khó khăn, thể hiện và trình bày mã không trong sáng, hạn chế khả năng sử dụng lại mã. Bên cạnh đó, khi triển khai cài đặt, do không được biên dịch trước nên dễ bị mất mã nguồn và phần nào hạn chế về mặt tốc độ thực hiện. Đầu năm 2002, Microsoft giới thiệu một số kĩ thuật lập trình Web khá mới mẻ với tên gọi ban đầu ASP+, tên chính thức sau này là ASP.Net, không những không cần đòi hỏi bạn phải biết các tag HTML, thiết kế web, mà nó còn hỗ trợ mạnh lập trình hướng đối tượng trong quá trình xây dựng và phát triển ứng dụng Web.Net là kĩ thuật lập trình và phát triển ứng dụng web ở phía Server (Server - side) dựa trên nền tảng Microsoft. Hầu hết, những người mới đến với lập trình web đều bắt đầu tìm hiểu những kĩ thuật phía Client (Client - side) như: HTML, JavaScript, CSS (Cascading Style Sheets).
Khi Web Browser yêu cầu một trang web (trang web sử dụng kĩ thuật Client - side), Web server tìm trang web mà client yêu cầu, sau đó gửi về cho client. Client nhận kết quả trả về từ server và hiển thị lên màn hình.Net sử dụng kĩ thuật lập trình phía server thì hoàn toàn khác, mã lệnh ở phía server (ví dụ: mã lệnh trong trang ASP) sẽ được biên dịch và thi hành tại Web Server. Sau khi được Server đọc, biên dịch và thi hành, kết quả tự động được chuyển sang HTML/JavaScirpt/CSS và trả về cho client. Tất cả các xử lý lệnh ASP.Net đều được thực hiện tại server và do đó, gọi là kĩ thuật lập trình ở phía server.
Những ưu điểm của ASP.Net cho phép bạn lựa chọn một trong các ngôn ngữ lập trình mà bạn yêu thích: Visual Basic.Net, C#, … - Trang ASP.Net được yêu cầu biên dịch trước. Thay vì phải đọc và thông dịch mỗi trang khi trang Web được yêu cầu, ASP.Net biên dịch những trang web động thành những tập tin DLL mà server có thể thi hành nhanh chóng và hiệu quả. Yếu tố này là một bước nhảy vọt đáng kể so với thông dịch của ASP.Net hỗ trợ mạnh về bộ thư viện phong phú và đa dạng của .Net Framework, làm việc với XML, Web Service truy cập dữ liệu qua ADO.Net, … - ASPX và ASP có thể cùng hoạt động trong 1 ứng dụng. 4 - Kiến trúc lập trình giống ứng dụng trên Windows.
- Hỗ trợ quản lý trạng thái của các điều khiển. - Tự động phát sinh mã HTML cho các server control tương ứng với từng loại browser. - Hỗ trợ nhiều cơ chế ghi vào bộ đệm. - Triển khai cài đặt không cần lock, không cần đăng ký DLL và cho phép nhiều hình thức cấu hình ứng dụng khác nhau.2 Mô hình kiến trúc N-tier 1.1 Theo đề xuất của Microsoft Microsoft sau khi nghiên cứu và tổng hợp từ các giải pháp ứng dụng thương mại lớn đã đưa ra bản đề xuất mô hình N-tier gồm các thành phần như sau: 5 Hình 1.1 Mô hình kiến trúc N-tier User Interface (UI) Components Đa phần giải pháp cần phải cung cấp một số cách thức nào đó để người dùng có thể tương tác với ứng dụng.
Ví dụ một website cho phép khách hàng xem các sản phẩm và gửi đơn hàng hay một ứng dụng trên nền hệ điều hành Microsoft Windows cho phép người bán hàng nhập thông tin đơn hàng cho khách hàng đã gọi điện đến công ty để đặt hàng. Giao diện người dùng có thể sử dụng Windows Form, các trang web hoặc điều khiển ASP.Net, hay bất kì công nghệ nào khác mà muốn sử dụng định dạng dữ liệu hiển thị cho người dùng và nhận, kiểm định dữ liệu do người dùng nhập vào. User Interface Process Components Trong nhiều trường hợp, một người dùng tương tác với hệ thống theo một quy trình có thể đoán trước. Ví dụ như: trong ứng dụng bán hàng, bạn có thể thi hành một thủ tục cho phép xem dữ liệu về hàng hóa mà ở đó người dùng chọn một nhóm hàng từ một danh sách các nhóm hàng hiện có rồi sau đó lựa chọn để xem chi tiết của hàng hóa.
Tương tự như vậy, khi người dùng tiến hành đặt hàng, các hành động sẽ theo một quy trình đoán trước như sau: thu nhập dữ liệu từ người dùng, trong đó đầu tiên người dùng sẽ phải cung cấp thông tin về các sản phẩm/hàng hóa mà người đó muốn đặt, sau đó cung cấp các thông tin thanh toán, rồi đến các thông tin về giai nhận hàng. Để giúp đồng bộ và sắp xếp các hành động này, nó sẽ hữu dụng để điều khiển quá trình sử dụng các thành phần xử lý tiến trình khác nhau. Theo cách này, dòng xử lý tiến trình và quản lý trạng thái logic không được code cứng trong các 6 thành phần giao diện và “bộ máy” tương tác người dùng cơ bản sẽ có thể tái sử dụng cho nhiều giao diện người dùng khác nhau. Bussiness workflows Sau khi nhận được dữ liệu tổng hợp bởi tiến trình xử lý của người dùng, những dữ liệu đó có thể được dùng để xử lý nghiệp vụ.
Ví dụ: sau khi thông tin về hàng hóa, phương thức thanh toán, giao nhận hàng được gửi tới ứng dụng thì tiến trình thực hiện thanh toán và bố trí giao nhận hàng sẽ được khởi động. Nhiều tiến trình xử lý nghiệp vụ phải thực hiện nhiều bước theo một trật tự được sắp đặt chính xác. Ví dụ như hệ thống bán hàng sẽ cần phải tính toán tổng giá trị của đơn hàng, kiểm tra thông tin của thẻ tín dụng, xử lý thanh toán qua thẻ tín dụng rồi sắp xếp giao hàng. Quá trình này cần phải có thời gian gian để được hoàn thành do đó các tác vụ cần thiết cùng với dữ liệu để xử lý cần phải được quản lý.
Dòng xử lý nghiệp vụ định nghĩa và điều hành các tiến trình nghiệp vụ dài, nhiều bước. Chúng có thể được thi hành nhờ các công cụ quản lý tiến trình nghiệp vụ như BizTalk Server Orchstrantion (cũng là một sản phẩm của Microsoft). Business components Cho dù tiến trình nghiệp vụ là một bước thực hiện đơn hay một dòng các công việc được sắp xếp thì ứng dụng của bạn có thể cần đến các thành phần để thực thi các luật nghiệp vụ (business rules) và thi hành các nhiệm vụ của chúng. Ví dụ, bạn có thể cần phải thi hành các chức năng tính tổng giá trị của hàng hóa được đặt thêm vào đó phí vận chuyển cần thiết.
Các thành phần 7 business (business components) thực hiện xử lý logic các nhiệm vụ của ứng dụng. Service Agents Khi thành phần nghiệp vụ cần phải sử dụng các chức năng được cung cấp trong các dịch vụ ở bên ngoài, bạn có thể cần phải lập trình để quản lý việc kết nối tới các dịch vụ riêng lẻ đó. Ví dụ, thành phần xử lý nghiệp vụ của ứng dụng bán hàng có thể sử dụng một Service Agent (tạm dịch là “một phần tử cung cấp dịch vụ”) để quản lý việc kết nối tới dịch vụ chứng thực thẻ thanh toán rồi sử dụng service agent khác để xử lý việc trao đổi thông tin với dịch vụ vận chuyển. Các service agent tách việc gọi dịch vụ bên ngoài ra khỏi ứng dụng của bạn và có thể hỗ trợ thêm vài dịch vụ như chuyển đổi cơ bản định dạng của dữ liệu do dịch vụ bên ngoài cung cấp và định dạng mà ứng dụng của bạn cần.
Service interfaces Để đưa các logic nghiệp vụ ra thành một dịch vụ (để ứng dụng cho bên ngoài có thể sử dụng), ta phải tạo ra các giao diện dịch vụ hỗ trợ các thỏa thuận trao đổi thông tin (trao đổi thông điệp, định dạng, giao thức, bảo mật, ngoại lệ, …). Ví dụ: dịch vụ chứng thực thẻ thanh toán phải cung cấp một giao diện dịch vụ để mô tả các chức năng mà nó cung cấp và các cách thức cần thiết để gọi nó.