TÓM TẮT ĐỒ ÁNĐồ án với đề tài “Xây dựng ứng dụng chuyển đổi tệp PDF với nhận dạng ký tự dựatrên máy học” tập trung vào phân tích thực trạng và ứng dụng các công nghệ để từđó xây dụng ứng
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
TRẦN VĂN THIỆT - 20521956 TRẦN ĐÌNH KHÔI - 20520594
ĐỒ ÁN 2 XÂY DỰNG ỨNG DỤNG CHUYỂN ĐỔI TỆP PDF VỚI NHẬN DẠNG KÝ TỰ
DỰA TRÊN MÁY HỌC Build a PDF processing app with ML-based characters recognition.
Lớp: SE122.O11
GIẢNG VIÊN HƯỚNG DẪN Ths Huỳnh Tuần Anh
TP HỒ CHÍ MINH, 2023
Trang 2ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
TRẦN VĂN THIỆT - 20521956 TRẦN ĐÌNH KHÔI - 20520594
ĐỒ ÁN 2 XÂY DỰNG ỨNG DỤNG CHUYỂN ĐỔI TỆP PDF VỚI NHẬN DẠNG KÝ TỰ
DỰA TRÊN MÁY HỌC Build a PDF processing app with ML-based characters recognition.
Lớp: SE122.O11
GIẢNG VIÊN HƯỚNG DẪN Ths Huỳnh Tuần Anh
TP HỒ CHÍ MINH, 2023
Trang 4Bên cạnh đó, chúng em xin cảm ơn các bạn bè trong lớp đã động viên, thảoluận và góp ý cho nhóm đồng thời đã khơi thêm nguồn động lực cho nhóm trongsuốt quá trình đầy khó khăn.
Mặc dù đã cố gắng hoàn thành báo cáo với tất cả nỗ lực song báo cáo của nhómchúng em chắc chắn không tránh khỏi những thiếu sót, chúng em rất mong nhậnđược sự thông cảm và góp ý chân thành từ thầy
Chúng em xin chân thành cảm ơn Xin chúc những điều tốt đẹp nhất sẽ luônđồng hành cùng mọi người
Thành phố Hồ Chí Minh, 30 tháng 12 năm 2023
Sinh viên
TRẦN ĐÌNH KHÔI
TRẦN VĂN THIỆT
Trang 5MỤC LỤC
LỜI CẢM ƠN 2
MỤC LỤC 3
DANH MỤC HÌNH 6
DANH MỤC BẢNG 7
DANH MỤC TỪ VIẾT TẮT 8
TÓM TẮT ĐỒ ÁN 9
ĐỀ CƯƠNG CHI TIẾT 11
NỘI DUNG ĐỒ ÁN 17
CHƯƠNG 1: MỞ ĐẦU 17
1.1 Lý do chọn đề tài 17
1.2 Mục đích nghiên cứu 18
1.2.1 Khách quan 18
1.2.2 Chủ quan 18
1.3 Đối tượng nghiên cứu 18
1.3.1 Các công nghệ nghiên cứu: 18
1.3.2 Đối tượng sử dụng đề tài hướng đến: 18
1.4 Phạm vi nghiên cứu 19
1.4.1 Phạm vi môi trường: 19
1.4.2 Phạm vi chức năng: 19
1.5 Mục tiêu đề tài 19
1.5.1 Xây dựng mô hình: 19
1.5.2 Xây dựng ứng dụng: 19
CHƯƠNG 2: KIẾN THỨC NỀN TẢNG 20
Trang 62.1 Flutter 20
2.2 Dart 22
2.3 Google Colaboratory 24
2.4 Tesseract OCR 25
CHƯƠNG 3: XÂY DỰNG MÔ HÌNH NHẬN DIỆN KÝ TỰ 27
3.1 Khái niệm 27
3.1.1 OCR 27
3.1.2 Cơ chế của nhận diện ký tự quang học 28
3.2 Áp dụng vào đề tài 30
3.2.1 Luồng xử lý 30
3.2.2 Phân tích bộ dữ liệu 31
3.2.3 Thử nghiệm và đánh giá 32
CHƯƠNG 4: XÂY DỰNG HỆ THỐNG 33
4.1 Kiến trúc phía Client 33
4.1.1 Kiến trúc hệ thống 33
4.1.2 Chi tiết các thành phần trong hệ thống 33
4.2 Sơ đồ Use case 36
4.2.1 Danh sách các tác nhân 36
4.2.2 Danh sách Use case 36
4.2.3 Mô tả chi tiết Use case 37
CHƯƠNG 5: THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG 43
5.1 Sơ đồ liên kết màn hình 43
5.2 Danh sách các màn hình 44
5.3 Mô tả chi tiết các màn hình 45
Trang 75.3.1 Màn hình Language 45
5.3.2 Màn hình Boarding 47
5.3.3 Màn hình Home 47
5.3.4 Màn hình AllfilePage 48
5.3.5 Màn hình SettingPage 49
5.3.6 Màn hình AlbumPage 50
5.3.7 Màn hình EditPage 51
5.3.8 Màn hình PreviewPage 52
5.3.9 Màn hình SuccessPage 53
5.3.10 Màn hình ViewfilePage 55
CHƯƠNG 6: CÀI ĐẶT VÀ KIỂM THỬ 55
6.1 Kiểm thử phía ứng dụng 55
6.1.1 Môi trường kiểm thử 55
6.1.2 Kết quả kiểm thử 56
Chuyển PDF sang hình 56
6.2 Kiểm thử mô hình 56
6.2.1 Môi trường kiểm thử 56
6.2.2 Kết quả kiểm thử 57
CHƯƠNG 7: TỔNG KẾT 58
7.1 Kết quả đạt được 58
7.2 Hạn chế 58
7.3 Hướng phát triển 58
Trang 8DANH MỤC HÌNH
Hình 2.1: Flutter 20
Hình 2.2: Ngôn ngữ lập trình Dart 22
Hình 2.6: Google Colaboratory 24
Hình 2.6: Tesseract OCR 25
Hình 3.1: Ví dụ về cơ chế chú ý 29
Hình 3.1: Ví dụ về cơ chế chú ý 30
Hình 3.8: Hình minh họa bộ dữ liệu train 31
Hình 3.9: Bên trái và đầu vào bức ảnh, bên phải là nội dung của bức ảnh dùng OCR 32
Hình 4.2: Sơ đồ kiến trúc hệ thống phía client 33
Hình 4.4: Sơ đồ Use case 36
Hình 5.1: Sơ đồ liên kết các màn hình 43
Hình 5.2: Màn hình Language 46
Hình 5.3: Màn hình Boarding 47
Hình 5.4: Màn hình Home 48
Hình 5.5: Màn hình AllfilePage 49
Hình 5.6: Màn hình SettingPage 50
Hình 5.7: Màn hình AlbumPage 51
Hình 5.8: Màn hình EditPage 52
Hình 5.9: Màn hình PreviewPage 53
Hình 5.10: Màn hình SuccessPage 54
Hình 5.11: Màn hình ViewfilePage 55
Hình 6.1:Kết quả tích hợp vào app 57
Trang 9DANH MỤC BẢNG
Bảng 4.1: Các thành phần trong hệ thống phía client 35
Bảng 4.2: Danh sách các Use case 37
Bảng 4.3: Đặc tả use case Chuyển ảnh sang chữ 38
Bảng 4.4: Đặc tả use case Chuyển tệp sang PDF 39
Bảng 4.5: Đặc tả use case Quản lý file 40
Bảng 4.6: Đặc tả use case Quản lý tập PDF 41
Bảng 4.7: Đặc tả use case Thiết lập ứng dụng 42
Bảng 5.1: Danh sách các màn hình 45
Bảng 5.2: Mô tả đối tượng trên màn hình Language 46
Bảng 5.3: Biến cố và xử lý trên màn hình Language 46
Bảng 5.4: Mô tả đối tượng trên màn hình Boarding 47
Bảng 5.5: Biến cố và xử lý trên màn hình Boarding 47
Bảng 5.6: Mô tả đối tượng trên màn hình SuccessPage 54
Bảng 5.7: Biến cố và xử lý trên màn hình SuccessPage 54
Bảng 6.1: Kết quả kiểm thử 56
Trang 10DANH MỤC TỪ VIẾT TẮT
Recognition Nhận diện ký tự quang học
memory
Mạng nơ-ron thần kinh hồi quy nhântạo
Trang 11Đề tài được bắt đầu từ việc tìm hiểu thực trạng, đưa ra các vấn đề còn tồn đọng hoặc
có thể cải thiện Xác định mục tiêu, phạm vi của đề tài cũng như các chức năng cần
có của hệ thống Ngoài việc xử lý các nghiệp vụ cho hệ thống, nhóm cũng đã tìmhiểu, so sánh và lựa chọn được các công nghệ mới và phù hợp giúp nâng cao trảinghiệm người dùng, tối ưu chi phí phát triển và triển khai
Nhờ việc phân tích các yêu cầu rõ ràng, thời gian phát triển ngắn và các yêu cầu,tính năng ít thay đổi, trong quá trình phát triển đề tài đã sử dụng mô hình Agile –Scrum cho việc xây dựng hệ thống Kết quả thu được trong giai đoạn thiết kế nhưkiến trúc hệ thống, cơ sở dữ liệu, giao diện được thể hiện bằng sơ đồ người dùng, sơ
đồ tuần tự và bản thiết kế sử dụng công cụ Figma, Draw.io, StartUML Trong giaiđoạn thực hiện, client và server được phát triển song song sử dụng FrameworkFlutter cho client và … cho server, công cụ phát triển Visual Studio Code, AndroidStudio cùng công cụ quản lý công việc Notion Công việc kiểm thử unit test đượcthực hiện xuyên suốt quá trình phát triển và được kiểm thử tích hợp ở cuối giaiđoạn Trong giai đoạn vận hành, mô hình đã được trích xuất và tích hợp trực tiếpvào ứng dụng, hoàn toàn có thể truy cập dữ và sử dụng ứng dụng mà không cầnmạng
Phần cuối cùng của khoá luận là trình bày kết quả đã thực hiện lên cuốn báo cáo,đưa ra kết luận và hướng phát triển cho hệ thống trong tương lai
Nội dung khoá luận được trình bày trong 7 chương:
- Chương 01: Mở đầu
Trình bày sơ bộ về thực trạng, nhu cầu thực tế Xác định mục tiêu và phạm vi đề tài
- Chương 02: Kiến thức nền tảng
Trang 12Giới thiệu, trình bày các kiến thức kỹ thuật, công nghệ mà nhóm sử dụng.
- Chương 03: Máy học nhận dạng ký tự quang học
Trình bày, phân tích lý thuyết về hệ thống máy học mà nhóm sử dụng
- Chương 04: Xây dựng hệ thống
Trình bày kiến trúc hệ thống và danh sách các hình, bảng thiết kế hệ thống, mô hìnhhoá và cơ sở dữ liệu
- Chương 5: Thiết kế giao diện người dùng
Trình bày chi tiết nội dung thiết kế giao diện ứng dụng
- Chương 6: Cài đặt và kiểm thử
Tổng quát kết quả kiểm thử của ứng dụng về cả hai phía ứng dụng và model
- Chương 7: Tổng kết
Những kết quả đạt được sau khi kết thúc đồ án Những hạn chế, khó khăn trong quá trình phát triển đồ án và nêu ra hướng phát triển trong tương lai
Trang 13ĐỀ CƯƠNG CHI TIẾT TÊN ĐỀ TÀI: Xây dựng ứng dụng chuyển đổi tệp PDF với nhận dạng ký tự dựa
trên máy học
Cán bộ hướng dẫn: Ths.Huỳnh Tuấn Anh
Thời gian thực hiện: Từ ngày 11/09/2023 – đến 30/12/2023 (kết thúc Đồ án 2) Sinh viên thực hiện:
Trần Đình Khôi – 20520594
Trần Văn Thiệt – 20521956
Nội dung đề tài
1 Lý do chọn đề tài:
2 Mục tiêu: bao gồm 2 mục tiêu chính:
Xây dựng Model nhận dạng ký tự quang học:
- Tốc độ xử lý nhanh, nhận dạng có độ chuẩn xác cao, đa ngôn ngữ
Xây dựng ứng dụng:
- Ứng dụng có thể chạy trên mobile với giao diện thân thiện
- Chạy được đa nền tảng iOS và Android
- Quản lý tệp Docx, PDF, Xlsx, Txt
- Chụp và trích xuất hình sang Word, PDF
- Chuyển ảnh sang PDF
- Chuyển Word sang PDF
- Chuyển Excel sang PDF
- Chuyển PDF sang hình
- Chuyển PDF sang Txt
- 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
- Xem các loại tệp trên
- Cài đặt chủ đề ứng dụng, đa ngôn ngữ
Trang 143 Phạm vi:
Phạm vi môi trường: iOS, Android
Phạm vi chức năng:
Đối với Model:
- Có khả năng xử lý và nhận diện ký tự với độ chuẩn xác cao trong cácđiều kiện đầu vào khác nhau như ảnh chụp, ảnh scan, ảnh chuyển đổi từPDF,
Đối với ứng dụng:
- Cung cấp giao diện thân thiện, tiện dụng cho người dung Cung cấp đầy
đủ, chuẩn xác, phản hồi nhanh đối với các tính năng
Phương pháp nghiên cứu:
- Phân tích nhu cầu sử dụng của đối tượng người dùng
- Nghiên cứu tài liệu các công nghệ liên quan
Phương pháp công nghệ:
- Tìm hiểu tích hợp mô hình máy học trên ứng dụng mobile
- Xây dựng giao diện mobile để người dùng có thể tương tác với ứng dụng
- Tìm hiểu về nhận diện ký tự quang học
- Quản lý source code thông qua Github
- Sử dụng Google doc, Office 365 Word… để quản lý tiến trình và tài liệu
6 Nền tảng công nghệ:
Trang 15- Mobile app: Flutter
- Google Colaboratory, Tesseract OCR
- Visual Studio
- Android Studio
7 Kết quả mong đợi:
- Model có khả năng trích xuất ký tự nhanh, chính xác
- Ứng dụng di động hoạt động ổn định, có thể xử lý thông tin nhanh chóng
8 Hướng phát triển của đề tài:
Cải thiện Model:
- Tối ưu thuật toán và input để nhận diện được nhiều ngôn ngữ hơn nữa vànhiều điều kiện đầu vào khác nhau
- Áp dụng thêm nhiều thuật toán, hướng xử lý khác để tìm ra phương pháp
“học” tối ưu nhất cho hệ thống
Cải thiện ứng dụng:
- Cải thiện giao diện người dùng trực quan hơn
- Ổn định và tối ưu các tính năng hiện có
- Phát triển thêm tính năng mới như chỉnh sửa tệp office trực tiếp trên ứngdụng
9 Kế hoạch làm việc:
Thời gian thực hiện từ ngày /9/2023 đến ngày kết thúc môn Đồ án 2
Nhóm chia thành 2 giai đoạn cụ thể:
Giai đoạn 1: Tìm hiểu về các hướng tiếp cận Thị giác máy tính, nhận diện ký tự,
xây dựng mô hình dựa vào dữ liệu tìm được và cách tích hợp vào ứng dụng Xâydựng giao diện người dùng cơ bản Gồm 3 sprint với thời gian mỗi sprint kéo dài
2 tuần:
Thời gian: 11/09/2023 – 23/10/2023
Trang 16Sprint 1: Đăng ký đề tài, soạn đề cương chi tiết.
Sprint 2: Khâu chuẩn bị, chuẩn bị tài liệu, tìm hiểu công nghệ
Sprint 3: Xây dựng ứng dụng, tập trung vào xây dựng model
Sprint 1 11/09/2023 – 18/09/2023 Đăng ký đề tài
Tìm hiểu và xác định phạm vi,hướng phát triển của đề tài
Tìm hiểu và phân tích các yêu cầunghiệp vụ của đề tài
Viết tài liệu, đề cương chi tiết.Sprint 2 18/09/2023 – 02/10/2023 Tìm hiểu công nghệ OCR,
Tensseract OCR được ứng dụngnhư thế nào trong nhận diện ký tựquang học
Xây dựng codebase
Sprint 3 02/10/2023 – 23/10/2023 Thu thập dataset về ký tự chữ viết
tay (MNIST) và các ký tự chữ viếtmáy
Xây dựng mô hình, đánh giá môhình dựa trên dataset tìm được.Chuẩn bị báo cáo giữa kì
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 Gồm 4sprint với thời gian mỗi sprint kéo dài 2 tuần:
Thời gian: 23/10/2023 – 31/12/2023 (kết thúc Đồ án 2)
Sprint 4: Xây dựng tính năng chính cốt lõi và tích hợp mô hình vào ứng dụng.Sprint 5: Tiếp tục hoàn thiện và kiểm thử ứng dụng
Sprint 6: Hoàn thiện tính năng, kiểm thử và triển khai ứng dụng
Sprint 7: Tổng kiểm thử và viết báo cáo
Sprint 4 23/10/2023 – 06/11/2023 Tích hợp mô hình vào
ứng dụng, kiểm tra độchuẩn xác
Xây dựng tính năng cho
Trang 17ứng dụng.
tính năng của ứng dụngKiểm thử ứng dụng.Cải tiến model
tính năng của ứng dụngKiểm thử ứng dụngTriển khai ứng dụng
Đồ án 2)
Tổng kiểm thử ứng dụng đã triển khai.
Viết báo cáo
10 Phân công công việc:
Công việc chung Tìm hiểu công nghệ
Phân tích yêu cầuXây dựng mô hìnhKiểm thử ứng dụngTriển khai ứng dụngChuẩn bị tài liệu, viết báo cáoCông việc cá nhân Trần Văn Thiệt Trần Đình Khôi
TP Hồ Chí Minh, ngày 11 tháng 09 năm 2023
Trang 18NỘI DUNG ĐỒ ÁN CHƯƠNG 1: MỞ ĐẦU
1.1 Lý do chọn đề tài
Trong thời đại công nghệ số ngày nay, việc chuyển đổi các loại văn bản nhưhình ảnh, text, doc thành pdf và ngược lại là một nhu cầu rất phổ biến và thiết thực.Điều này giúp người dùng có thể lưu trữ, trao đổi và sử dụng các văn bản một cách
dễ dàng và hiệu quả hơn Tuy nhiên, không phải tất cả các ứng dụng chuyển đổi vănbản đều đảm bảo được chất lượng, độ chính xác và tính bảo mật của các văn bản
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ụngcomputer 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
Đề tài ngày có ý nghĩa về mặt khoa học và 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 tronglĩnh vực computer vision và chuyển đổi định dạng văn bản, đóng góp vào bộ nguồnkiế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 íchcho 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ảnhiệu quả hơn Đồng thời, đề tài cũng góp phần thúc đẩy sự phát triển của công nghệ
số trong xã hội
Trang 191.2 Mục đích nghiên cứu
1.2.1 Khách quan
Đáp ứng nhu cầu cho những người dùng cần đọc tài liệu một cách tiện lợi và
dễ dàng ngay trên điện thoại cá nhân
Cung cấp một ứng dụng đa nền tảng, tăng khả năng tiếp cận người dùng,không yêu cầu cao về mặt phần cứng
Là một ứng dụng đọc file làm tròn vai trò, không thêm bớt những tính năng
dư thừa và không có giá trị đối với người dùng
1.2.2 Chủ quan
Nhóm đã luôn có sự tò mò và hứng thú đối với các công nghệ liên quan đến
đề tài như Cross Platform, đặc biệt hơn là máy học Thông qua đề tài và sự dẫn dắtcủ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ìntổng quan hơn, chuyên sâu hơn về các công nghệ và vấn đề trên
Bên cạnh đó, nhóm cho rằng đây là một cơ hội để có thể phát triển và ápdụng các kĩ năng đã học vào thực tế, tạo nên một thành phẩm từ những năm học vừaqua
1.3 Đối tượng nghiên cứu
1.3.1 Các công nghệ nghiên cứu:
- Đối với Application:
Trang 201.3.2 Đối tượng sử dụng đề tài hướng đến:
Tất cả mọi người có nhu cầu đọc file office
1.4 Phạm vi nghiên cứu
1.4.1 Phạm vi môi trường:
Ứng dụng di động chạy trên 2 nền tảng Android và IOS
1.4.2 Phạm vi chức năng:
- Đối với hệ thống gợi ý:
- Có khả năng đưa ra kết quả gợi ý chuẩn xác dựa trên hành vi ngườidùng như đánh giá phim, lịch sử xem phim
- Đối với ứng dụng:
- Cung cấp chức năng chuyển đổi tệp word sang pdf
- Cung cấp các chức năng chuyển đổi hình ảnh sang pdf
- Cung cấp chức năng xác chuyển đổi ảnh – pdf sang chữ
- Cung cấp chức năng quản lý tệp office
- Ứng dụng có thể chạy trên mobile với giao diện thân thiện.
- Chạy được đa nền tảng IOS và Android.
- Ứng dụng dễ sử dụng, gọn nhẹ và đầy đủ tính năng.
- Hiệu năng ứng dụng ổn định, tương thích nhiều thiết bị, không yêu
cầu cao về phần cứng
Trang 22CHƯƠNG 2: KIẾN THỨC NỀN TẢNG
2.1 Flutter
Hình 2.1: Flutter
Flutter là một SDK phát triển ứng dụng di động nguồn mở được tạo ra bởi Google,
ra mắt vào năm 2017, bản thân nó là một thư viện cực kỳ mạnh mẽ để phát triểnứng dụng đa nền tảng (Android, IOS, Mac, Window, Linux) Một trong những điểmnổi bật nhất của Flutter đó là hiệu năng cực kỳ cao nhờ sử dụng ngôn ngữ Dart làmngôn ngữ chính để phát triển các thành phần
Flutter bỏ xa các tiền bối như React Native về hiệu năng vì nó gần như native, Dartcode được Flutter SDK compile sang Native code và chạy trực tiếp trên hệ điềuhành máy Flutter dùng ngôn ngữ Dart để viết cả UI và logic của ứng dụng, nó đượctối ưu đến mức có thể quét 60 lần / giây để kiểm tra, so sánh cập nhật UI mà không
hề tiêu tốn nhiều tài nguyên Flutter so sánh sự thay đổi giữa các component (hay ởđây gọi là Widget) của lần render này với lần render trước dựa vào RenderTree.Trước khi đến cài đặt và cấu hình, chúng ta sẽ đi đến một số khái niệm cơ bản:
- Giới thiệu về Widget Tree :
Widget Tree chỉ đơn giản là tất cả các Widget mà chúng ta đang dùng để xây dựngứng dụng, tức là code mà chúng ta viết sẽ tạo nên widget tree Nó hoàn toàn dochúng ta kiểm soát Khai báo các widget lồng ghép chúng lại với nhau để tạo nên bố
Trang 23cục mong muốn Cái Tree này được xây dựng bởi Flutter khi call phương thứcbuild(){ } từ code của chúng ta, chúng chỉ là một loạt các cài đặt cấu hình màFlutter sẽ xử lý Nó không chỉ đơn giản xuất hiện ra trên màn hình rồi thôi Thayvào đó, nó sẽ cho Flutter biết những gì sẽ vẽ lên màn hình ở lần tiếp theo Widgettree được rebuild rất thường xuyên
- Giới thiệu về Element Tree :
Element Tree liên kết vào Widget Tree, là thông tin được thiết lập với các đốitượng/phần tử thực sự được hiển thị Nó rất hiếm khi rebuild Element Tree đượcquản lý theo một cách khác và sẽ không rebuild khi phương thức build(){ } đượcgọi Ở mỗi Widget trong Widget Tree, Flutter sẽ tự động tạo một element cho nó
Nó được thực hiện ngay khi Flutter xử lý Widget ở lần đầu tiên Ở đây chúng ta cóthể nói rằng một element là một đối tượng được quản lý trong bộ nhớ bởi Flutter, nó
có liên quan đến Widget trong Widget Tree Element chỉ giữ một tham chiếu tớiWidget (trong Widget Tree) đang giữ các thông số giao diện đầu cuối
- Giới thiệu về Render Tree :
Render Tree đại diện của các element/đối tượng thực sự được hiển thị trên mànhình Render Tree cũng không rebuild thường xuyên! Element Tree cũng được liênkết với Render Tree Element trong Element Tree trỏ đến render object mà chúng tathực sự thấy trên màn hình Bất cứ khi nào Flutter thấy một element chưa đượcrender trước đó thì nó sẽ tham chiếu đến Widget trong Widget Tree để thiết lập, sau
đó tạo một element trong element tree Flutter cũng có một layout phase, giai đoạn
mà nó tính toán và lấy không gian diện tích có sẵn trên màn hình, chiều, kích thước,hướng, v.v Nó cũng có một phase khác để thiết lập các listeners với các Widget đểchúng ta có thể thao tác các sự kiện, v.v
- Widget và State:
Widget: Là toàn bộ các thành phần giao diện của ứng dụng, Widget bản chất chỉ là
1 class nhưng nó được thiết kế để chúng có thể lồng vào nhau tạo nên một WidgetTree Trong Flutter có 2 Widget chính đó là StatelessWidget và Statefulwidget
Trang 24State: thể hiện trạng thái của ứng dụng, khi state thay đồi thì Widget đồng thờirender lại để cập nhật UI (chỉ có ở StatefulWidget).
Trang 25- 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à khichạ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ểnsản phẩm nhanh và tiện dụng hơn (được hiểu như việc debug trongngô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)
Một số khái niệm quan trọng cần nắm khi học Dart:
- 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
- Kể cả số, method (hàm) và null cũng đều là object Tất cả các objectđều kế thừa từ Object class
- Type của 1 variable (biến) là optional bởi vì Dart có thể tự suy ra typedựa trên giá trị truyền vào cho biến
- Biến number được hiểu là kiểu int 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ụngtype dynamic
- Như các ngôn ngữ khác, Dart hỗ trợ generic type, ví dụ như List (1danh sách kiểu số nguyên) hoặc List (1 danh sách các object mà typekhô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 classhay bất kì instance của class nào cả
- Bạn cũng có thể tạo một hàm bên trong hàm (còn gọi là nestedfunction hoặc local function)
- Tương tự Dart cũng hỗ trợ top-level variable
- Không giống với Java, Dart không hỗ trợ public, protected và private.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ó
Trang 26- Mỗi file dart được coi là 1 library Identifier có thể bắt đầu bằng mộtchữ cái hoặc dấu gạch dưới (_).
- Dart tools có thể báo cho bạn 2 loại vấn đề: warning và errors
2.3 Google Colaboratory
Hình 2.3: Google Colaboratory
Google Colab là một dịch vụ miễn phí của Google cho phép bạn viết và chạy
mã Python trên trình duyệt của bạn, với truy cập vào GPU và TPU, và dễ dàng chia
sẻ và hợp tác Nó có thể được sử dụng để làm các công việc liên quan đến khoa học
dữ liệu, máy học, phân tích và trực quan hóa dữ liệu
Colab dựa trên nền tảng Jupyter Notebook, cho phép bạn kết hợp mã thực thi
và văn bản giàu trong một tài liệu duy nhất, cùng với hình ảnh, HTML, LaTeX vànhiều hơn nữa Khi bạn tạo các tập ghi chép Colab của riêng bạn, chúng được lưutrữ trong tài khoản Google Drive của bạn Bạn có thể dễ dàng chia sẻ các tập ghichép Colab của bạn với đồng nghiệp hoặc bạn bè, cho phép họ bình luận hoặc thậmchí chỉnh sửa chúng
Việc sử dụng Google Colab phù hợp với các công việc ML/AI do ngay từbản miễn phí thì dịch vụ đã cung cấp GPU/TPU cho việc dạy mô hình để tăng tốchơn đáng kể so với việc dạy mô hình bằng CPU Ngoài ra bên trong dịch vụ đãcung cấp các thư viện cần thiết cho ML/AI Ngoài ra chúng ta có thể cài đặt các thưviện khác nhau do bản thân nó đang chạy trên Ubuntu
Trang 272.4 Tesseract OCR
Hình 2.4: Tesseract OCR
Tesseract là một phần mềm nhận dạng ký tự quang học (OCR) mã nguồn
mở, có thể chuyển đổi các văn bản dưới dạng hình ảnh thành các định dạng khác như text, pdf, v.v Tesseract được phát triển bởi Google và hỗ trợ nhiều ngôn ngữ, bao gồm tiếng Việt Tesseract cũng có thể sử dụng các mô hình học sâu (LSTM) để cải thiện độ chính xác và tốc độ nhận dạng
Tesseract là một phần mềm nhận dạng ký tự quang học (OCR) mã nguồn
mở, có nhiều ưu điểm như miễn phí, có thể tùy biến và phát triển theo nhu cầu, hỗ trợ nhiều ngôn ngữ và ký tự, có thể nhận dạng cả chữ viết tay và chữ in, sử dụng cácthuật toán tiên tiến trong lĩnh vực OCR, như LSTM, CTC, beam search, v.v, và có thể tích hợp với nhiều ứng dụng khác nhau, như quét hóa đơn, biên lai, giấy tờ, sách, v.v Tuy nhiên, Tesseract cũng gặp một số nhược điểm, như cần có các tập tin
dữ liệu huấn luyện phù hợp với từng ngôn ngữ và định dạng văn bản, không có giaodiện đồ họa, chỉ có thể sử dụng qua dòng lệnh hoặc các thư viện bên ngoài, có thể bịnhầm lẫn giữa các ký tự có hình dạng tương tự, và có thể bị ảnh hưởng bởi chất lượng hình ảnh
Trang 28Tesseract OCR là một loại OCR Nâng cao 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.
Tesseract OCR bao gồm hai Engine OCR:
- 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
Trang 29CHƯƠNG 3: XÂY DỰNG MÔ HÌNH NHẬN DIỆN KÝ TỰ
3.1 Khái niệm
3.1.1 OCR
Nhận dạng Ký tự Quang học (OCR) là một công nghệ chuyển đổi các loại tàiliệu khác nhau, như tài liệu giấy đã quét, tệp PDF, hoặc hình ảnh chụp bằng máyảnh số, thành dữ liệu có thể chỉnh sửa và tìm kiếm
OCR hoạt động bằng cách phân tích các pixel của hình ảnh và xác định các
ký tự riêng lẻ của nó Đây là một lĩnh vực nghiên cứu trong nhận dạng mẫu, trí tuệnhân tạo, và thị giác máy tính Phiên bản OCR đầu tiên cần được đào tạo với hìnhảnh của mỗi ký tự và hoạt động trên một font chữ tại một thời điểm Hệ thống OCRhiện đại có khả năng tạo ra độ chính xác cao cho hầu hết các font chữ
OCR có nhiều ứng dụng, bao gồm:
- Chuyển đổi văn bản in thành dạng số để chúng có thể được chỉnh sửa, tìmkiếm, và lưu trữ gọn gàng hơn
- Nhập dữ liệu cho danh thiếp, biên lai, sao kê ngân hàng, và hóa đơn
- Hỗ trợ người dùng khiếm thị bằng cách chuyển đổi văn bản thành giọngnói
- Nhận dạng biển số xe tự động cho quản lý bãi đỗ xe
Lịch sử của OCR có từ cuối thế kỷ 19, với những phát triển đáng kể đượcthực hiện bởi Emanuel Goldberg, người đã phát triển một máy đọc ký tự và chuyểnđổi chúng thành mã điện báo chuẩn Năm 1974, Ray Kurzweil phát triển OCRomni-font, có thể nhận dạng văn bản được in bằng hầu hết mọi font chữ Ngày nay,công nghệ OCR tiếp tục phát triển, được hưởng lợi từ những tiến bộ trong thị giácmáy tính, trí tuệ nhân tạo, và học máy
Có một số phương pháp nhận dạng của Nhận dạng Ký tự Quang học (OCR),mỗi loại có các ứng dụng và sử dụng riêng của nó Dưới đây là một số ví dụ:
Trang 30- OCR thông thường: Loại phần mềm OCR này lưu trữ các mẫu hình ảnhvă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 đổighi 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épngườ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 đámmây để cung cấp dịch vụ OCR, cho phép mở rộng và truy cập từ các thiết
3.1.2 Cơ chế của nhận diện ký tự quang học
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ạchtí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