MỤC LỤC
- Ứng dụng di động hoạt động ổn định, có thể xử lý thông tin nhanh chóng.
Giai đoạn 2: Hoàn thiện các tính năng của ứng dụng, tích hợp mô hình đã xây dựng vào ứng dụng, triển khai và kiểm thử ứng dụng, viết báo cáo.
Do đó, đề tài tạo ra một ứng dụng chuyển đổi văn bản với chức năng sử dụng computer vision để xử lý hình ảnh thành text là một đề tài có tính cấp thiết, mới lạ và có ý nghĩa thực tiễn. Về mặt khoa học, đề tài sẽ nghiên cứu và áp dụng các kỹ thuật tiên tiến trong lĩnh vực computer vision và chuyển đổi định dạng văn bản, đóng góp vào bộ nguồn kiến thức và kinh nghiệm cho các nghiên cứu sau này. Về mặt thực tiễn, đề tài sẽ tạo ra một ứng dụng chuyển đổi văn bản hữu ích cho người dùng, giải quyết các vấn đề về lưu trữ, trao đổi và sử dụng các văn bản hiệu quả hơn.
Thông qua đề tài và sự dẫn dắt của giáo viên hướng dẫn để mở mang hiểu biết, nghiên cứu và có được một cái nhìn tổng quan hơn, chuyên sâu hơn về các công nghệ và vấn đề trên.
Dart không quá phổ biến vào thời điểm đó, nhưng nó đã trở nên phổ biến khi được sử dụng bởi Flutter. Nếu chúng ta biết bất kỳ ngôn ngữ lập trình nào trong số này, chúng ta có thể dễ dàng học ngôn ngữ lập trình Dart. Dart là một ngôn ngữ lập trình mã nguồn mở được sử dụng rộng rãi để phát triển ứng dụng di động, ứng dụng web hiện đại, ứng dụng máy tính để bàn và Internet of Things (IoT) bằng cách sử dụng khung Flutter.
- Ahead Of Time (AOT): Với AOT thì trình biên dịch chuyển ngôn ngữ Dart thẳng sang Native Code giúp hiệu năng tốt nhất có thể (tức là khi chạy chương trình, nó sẽ biên dịch từ đầu đến cuối). - Just In Time (JIT): Cho phép hot reloading hoạt động, giúp phát triển sản phẩm nhanh và tiện dụng hơn (được hiểu như việc debug trong ngôn ngữ khác là debug hàm nào chạy hàm đó thì ở đây nó sẽ viết đến đâu biên dịch ngay đến đấy). - Do Dart là ngô ngữ thuần OOP nên tất cả những thứ bạn gán cho biến đều là object, mọi object đều là instance (thể hiện) của một class.
- Type của 1 variable (biến) là optional bởi vì Dart có thể tự suy ra type dựa trên giá trị truyền vào cho biến. Khi bạn muốn khai báo 1 variable mà type của nó không được xác định và có thể thay đổi, hãy sử dụng type dynamic. - Như các ngôn ngữ khác, Dart hỗ trợ generic type, ví dụ như List (1 danh sách kiểu số nguyên) hoặc List (1 danh sách các object mà type không xác định, Dart có thể chấp nhận mọi loại type).
- Dart hỗ trợ top-level function (giống như main()), đồng nghĩa bạn có thể sử dụng hàm đó ở bất cứ đâu mà không cần thông qua tên class hay bất kì instance của class nào cả. Nếu như identifier (tên biến, hàm, ..) bắt đầu với dấu gạch dưới (_), thì nó private trong library của nó.
Nó được phát triển ban đầu bởi Hewlett-Packard vào những năm 1980 và sau đó được mở mã nguồn vào năm 2005. Tesseract OCR có khả năng nhận dạng nhiều ngôn ngữ và hỗ trợ nhiều định dạng tệp hình ảnh đầu vào. - Engine OCR Tesseract Gốc: Đây là động cơ OCR Tesseract gốc hoạt động bằng cách nhận dạng các mẫu ký tự.
- Engine OCR dựa trên LSTM: Được giới thiệu trong Tesseract 4, engine này sử dụng mạng Long Short-Term Memory (LSTM), một loại mạng nơ-ron hồi quy, và tập trung vào việc nhận dạng dòng.
- OCR thông thường: Loại phần mềm OCR này lưu trữ các mẫu hình ảnh văn bản và font chữ khác nhau dưới dạng mẫu. - OCR viết tay: Loại OCR này được thiết kế để nhận dạng và chuyển đổi ghi chú viết tay thành văn bản có thể đọc được bằng máy. - OCR thông minh: Loại OCR này sử dụng các kỹ thuật trí tuệ nhân tạo và học máy để cải thiện độ chính xác nhận dạng.
- OCR di động: OCR này được thiết kế cho các thiết bị di động, cho phép người dùng chụp hình ảnh bằng camera của thiết bị của họ để xử lý OCR. - OCR dựa trên đám mây: OCR này sử dụng các nền tảng điện toán đám mây để cung cấp dịch vụ OCR, cho phép mở rộng và truy cập từ các thiết bị khác nhau. Trong đề tài này, nhóm chúng em tập trung phát triển mô hình nhận diện ký tự, OCR theo hướng: OCR theo ngôn ngữ cụ thể.
Một trong những nền tảng của phương pháp học sâu trong lĩnh vực OCR là cơ chế chú ý (Attention Mechanisms). Với cơ chế này thì OCR có thể áp dụng mạch tích hợp chập để trích xuất các đặc điểm hình ảnh dưới dạng vecor đã được mã hóa, sau đó cho mạng lặp lại để tạo ra các đặc điểm được mã hóa để dự đoán được vị trí của từng chữ cái trong văn bản hình ảnh và nhận diện chúng là ký tự nào. Ở đây thì sự chú ý trong cơ chế chú ý này là một lớp chuyển tiếp với trọng số có thể huấn luyện giúp cho mô hình nắm bắt các mối quan hệ giữa các ký tự khác nhau trong chuỗi văn bản.
Nó hoạt động bằng các sử dụng các ma trận truy vấn, khóa và giá trị (key - value), truyền các nhúng đầu vào qua một loạt các hoạt động (sự thay đổi ký tự) và nhận được biển diễn mã hóa của ký tự trong hình ảnh gốc. Trích xuất LSTM từ các mô hình đã được huống luyện sau đó áp dụng lên tập dữ liệu của mình để huống luyện.
Khi user interface nhận được một tương tác từ người dùng, nó sẽ gửi một sự kiện gọi là Bloc Event xuống khối BloC (UI Logic), khối BloC này tiến hành các thao tác logic cần thiết (gọi tới Usecase) sau đó bắn ra một trạng thái gọi là Bloc State. Entity sẽ là các thực thể dùng để lưu trữ dữ liệu nhận từ Repository và UI sẽ dùng các entity này để render. Use case là nơi dùng để viết business logic và gọi tới Repository Abstract repository là một interface thuộc domain module, nó được kế thừa và thực thi bởi lớp Repository thuộc Data module.
Mục đích của việc này là để tháo gỡ sự phụ thuộc giữa hai module lớn đó là Domain và Data 4 Data Module Đây là nơi chủ chốt để xử lý các thao tác. Trong đó sẽ bao gồm remote data tức là API service và local data tức là Local Storage. Một thành phần quan trọng nữa đó chính là Model, nó sẽ là thực thể dùng để lưu trữ dữ liệu nhận được từ phía cơ sở dữ liệu, và quá trình parse data sẽ được Data mapper xử lý.
Đây là thành phần chứa các chức năng chung nhất mà toàn hệ thống đều cần sử dụng tới. Chẳng hạn như các cấu hình đa ngôn ngữ, các hàm trợ giúp tính toán, các component phổ biến, các hằng số và cài đặt tổng quá.
Cụ thể hệ thống sẽ trích xuất chữ từ ảnh bằng cách dung model nhận diện. Cụ thể hệ thống sẽ trích xuất chữ từ tệp bằng cách dùng model sau đó import ra một file trống mới rồi convert sang tệp PDF. Hệ thống chuyển sang màn hình xem file Bảng 4.5: Đặc tả use case Quản lý file.
7.a.1 Hệ thống hiện thị hộp thoại thay đổi giao diện 8.a Người dùng chọn chỉnh sửa trang. 8.a.1 Người dùng chọn nút khôi phục về ban đầu 8.a.2 Hệ thống khôi phục tệp trước khi chỉnh sửa 8.b.1 Người dùng chọn dấu mờ. Tóm tắt Cho phép người dùng tùy chỉnh ứng dụng theo như cầu của bản thân như ngôn ngữ của ứng dụng hay màu chủ đạo của ứng dụng.
Hệ thống hiển thị màn hình chọn ngôn ngữ Bảng 4.7: Đặc tả use case Thiết lập ứng dụng.
6 AllFilePage Màn hình tra cứu Quản lý các loại tệp theo các tiêu chuẩn tra cứu. 9 EditPage Màn hình nhập liệu Cho phép chỉnh sửa tệp ảnh đã chọn hoặc tệp ảnh đầu ra. 11 SuccessPage Màn hình thông báo Thông báo kết quả xử lý tệp dựa vào tính năng đã chọn.
12 ViewfilePage Màn hình tra cứu Cho phép xem file dựa theo kiểu mở rộng của tệp. Cho phép chọn tệp, thực hiện xử lí theo tính năng và xuất tệp ra thiết bị. Cho phép chọn tệp pdf, sửa tệp pdf như mã hóa, giải mã, dấu mờ,.
1 Nhấn nút Next Chuyển tới trang giới thiệu tương ứng và cuối cùng là vào màn NavBarWrapper Bảng 5.12: Biến cố và xử lý trên màn hình Boarding.
Quản lý tệp PDF: thêm watermark, mã hóa tệp, giải mã tệp, hợp nhất tệp, tách trang.