Tải bản đầy đủ (.docx) (60 trang)

đồ á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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.63 MB, 60 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINHTRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN</b>

<b>KHOA CƠNG NGHỆ PHẦN MỀM</b>

<b>TRẦN VĂN THIỆT - 20521956TRẦN ĐÌNH KHƠI - 20520594</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINHTRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN</b>

<b>KHOA CÔNG NGHỆ PHẦN MỀM</b>

<b>TRẦN VĂN THIỆT - 20521956TRẦN ĐÌNH KHƠI - 20520594</b>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b> LỜI CẢM ƠN</b>

Nhóm chúng em xin gửi lời cảm ơn chân thành và sự tri ân sâu sắc đến thầyHuỳnh Tuấn Anh đã hướng dẫn, tạo điều kiện cho nhóm chúng em hồn thành đồán mơn Đồ án 2.

Trong vòng 16 tuần, qua các buổi học, nhờ sự chỉ dẫn nhiệt tình của thầy,chúng em đã tiếp thu được những kiến thức quan trọng, bổ ích cùng những góp ýchân thành để có thể làm được một đồ án hoàn chỉnh. Trong khoảng thời gian thựchiện đồ án, chúng em đã học hỏi thêm được nhiều kiến thức, kinh nghiệm, biết đượcquy trình để tạo ra một sản phẩm phần mềm.

Bê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 q 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 2023Sinh viên

TRẦN ĐÌNH KHƠITRẦN VĂN THIỆT

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

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

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

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

<b>CHƯƠNG 5: THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG...43</b>

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

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

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

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b> DANH MỤC BẢNG</b>

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

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b> DANH MỤC TỪ VIẾT TẮT</b>

<b>Recognition</b> <sup>Nhận diện ký tự quang học</sup>

Mạng nơ-ron thần kinh hồi quy nhântạo.

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b> TÓM TẮT ĐỒ ÁN</b>

Đồ á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 dụng di động có thể sử dụng mà không yêu cầu quá nhiều về phầncứng, phần mềm. Đáp ứng được nhu cầu cơ bản về việc xử lí tệp PDF ở mức cơbản.

Đề 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ặccó 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ầncó của hệ thống. Ngồ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, hồn tồ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 khố 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

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

Giớ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ìnhhố và cơ sở dữ liệu.

- Chương 5: Thiết kế giao diện người dùngTrì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 q trình phát triển đồ án và nêu ra hướng phát triển trong tương lai.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b> ĐỀ CƯƠNG CHI TIẾT</b>

<b>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</b>

trên máy học.

<b>Cán bộ hướng dẫn: Ths.Huỳnh Tuấn Anh </b>

<b>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:</b>

Trần Đình Khơi – 20520594Trần Văn Thiệt – 20521956

<b>Nội dung đề tài 1. Lý do chọn đề tài: </b>

<b>2. Mục tiêu: bao gồm 2 mục tiêu chính: </b>

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 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ữ.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<b>3. Phạm vi:</b>

Phạm vi môi trường: iOS, AndroidPhạ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, ....

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.

<b>6. Nền tảng công nghệ: </b>

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

- Mobile app: Flutter

- Google Colaboratory, Tesseract OCR- Visual Studio

- Android Studio

<b>7. Kết quả mong đợi: </b>

- 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.

<b>8. Hướng phát triển của đề tài: </b>

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 tố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.

<b>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ự,</b>

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ài2 tuần:

Thời gian: 11/09/2023 – 23/10/2023

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

Sprint 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.

<small>Sprint 3</small> 02/10/2023 – 23/10/2023 Thu thập dataset về ký tự chữ viếttay (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ì.

<b>Giai đoạn 2: Hồn thiện các tính năng của ứng dụng, tích hợp mơ hình đã xây</b>

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:

<small>Sprint 4</small> 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

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="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)

<small>Tổng kiểm thử ứng dụng đãtriển khai.</small>

<small>Viết báo cáo</small>

<b>10. Phân cơng cơng việc:</b>

Cơng việc chung Tìm hiểu cơng nghệPhân tích u cầuXây dựng mơ hìnhKiểm thử ứng dụngTriển khai ứng dụng

Chuẩn bị tài liệu, viết báo cáo

Công việc cá nhân <sup>Trần Văn Thiệt</sup> <sup>Trần Đình Khơi</sup>

TP. Hồ Chí Minh, ngày 11 tháng 09 năm 2023

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<b>NỘI DUNG ĐỒ ÁNCHƯƠNG 1: MỞ ĐẦU</b>

<b>1.1. Lý do chọn đề tài</b>

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áchdễ 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.

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<b>1.2. Mục đích nghiên cứu1.2.1. Khách quan</b>

Đá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ăngdư thừa và khơng có giá trị đối với người dùng.

<b>1.2.2. Chủ quan</b>

Nhóm đã ln 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.

<b>1.3. Đối tượng nghiên cứu</b>

<b>1.3.1. Các công nghệ nghiên cứu: </b>

- Đối với Application:- Flutter

- Dart- Đối với Model:

o Computer Visiono Teseract OCR 5o Python

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

<b>1.3.2. Đối tượng sử dụng đề tài hướng đến: </b>

Tất cả mọi người có nhu cầu đọc file office.

<b>1.4. Phạm vi nghiên cứu1.4.1. Phạm vi môi trường: </b>

Ứng dụng di động chạy trên 2 nền tảng Android và IOS.

<b>1.4.2. Phạm vi chức năng: </b>

- Đố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.

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

<b>CHƯƠNG 2: KIẾN THỨC NỀN TẢNG2.1. Flutter</b>

<i>Hình 2.1: Flutter</i>

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ônghề 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ó hồn tồ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ố

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

cụ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ạnmà nó tính tố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.

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

State: 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).

<b>2.2. Dart</b>

<i>Hình 2.2: Ngơn ngữ lập trình Dart</i>

Dart là một ngơn ngữ lập trình hiện đại cấp cao, được phát triển ban đầu bởiGoogle. Đây là ngơn ngữ lập trình mới xuất hiện vào năm 2011, nhưng phiên bảnổn định của nó đã được phát hành vào tháng 6 năm 2017. Dart không quá phổ biếnvào thời điểm đó, nhưng nó đã trở nên phổ biến khi được sử dụng bởi Flutter.

Dart là một ngôn ngữ lập trình động, dựa trên lớp, hướng đối tượng. Về mặt cúpháp, nó khá giống với Java, C và JavaScript. 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 ofThings (IoT) bằng cách sử dụng khung Flutter. Nó cũng hỗ trợ một số khái niệmnâng cao như Interface, mixin, lớp trừu tượng, generic type. Nó là một ngơn ngữbiên dịch và hỗ trợ hai loại kỹ thuật biên dịch:

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="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 variablemà 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ó.

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="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.

<b>2.3. Google Colaboratory</b>

<i>Hình 2.3: Google Colaboratory</i>

Google Colab là một dịch vụ miễn phí của Google cho phép bạn viết và chạymã 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 chiasẻ 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ọcdữ 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 thivà 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. Ngồi ra bên trong dịch vụ đãcung cấp các thư viện cần thiết cho ML/AI. Ngồ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.

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

<b>2.4. Tesseract OCR</b>

<i>Hình 2.4: Tesseract OCR</i>

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 ngồ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.

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

Tesseract 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.

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<b>CHƯƠNG 3: XÂY DỰNG MƠ HÌNH NHẬN DIỆN KÝ TỰ3.1. Khái niệm</b>

<b>3.1.1. OCR</b>

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ácký 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ọng

- 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ụ:

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="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ếtbị khác nhau.

- OCR theo ngôn ngữ cụ thể: OCR này được thiết kế để nhận dạng cácngôn ngữ cụ thể.

- OCR học sâu: OCR này sử dụng các thuật toán học sâu để cải thiện độchính xác nhận dạng.

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ể.

<b>3.1.2. Cơ chế của nhận diện ký tự quang học</b>

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ự đố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.

</div>

×