Tải bản đầy đủ (.pdf) (80 trang)

Xây dựng một mô hình trích xuất thông tin hóa đơn dựa trên học sâu

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 (2.87 MB, 80 trang )

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

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI

<b>KHOA CÔNG NGHỆ THÔNG TIN </b>

<b>ĐỒ ÁN </b>

<b>TỐT NGHIỆP ĐẠI HỌC </b>

<b>ĐỀ TÀI </b>

<b>XÂY DỰNG MỘT MƠ HÌNH TRÍCH XUẤT THƠNG TIN HĨA ĐƠN DỰA TRÊN HỌC SÂU </b>

Giảng viên hướng dẫn : TS. Hồng Văn Thơng Sinh viên thực hiện : Nguyễn Trung Tài

<b>Hà Nội – 2023 </b>

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

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI

<b>KHOA CÔNG NGHỆ THÔNG TIN </b>

---o0o---

<b>ĐỒ ÁN </b>

<b>TỐT NGHIỆP ĐẠI HỌC </b>

<b>ĐỀ TÀI </b>

<b>XÂY DỰNG MƠ HÌNH TRÍCH XUẤT THƠNG TIN HĨA ĐƠN DỰA TRÊN HỌC SÂU </b>

Giảng viên hướng dẫn : TS. Hồng Văn Thơng Sinh viên thực hiện : Nguyễn Trung Tài

<b>Hà Nội - 2023 </b>

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

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

Bốn năm, một khoảng thời gian không dài đối với cuộc đời một sinh viên, là những năm tháng nhiều kỉ niệm, có sự tự hào, vinh dự, có những thành công nhưng cũng có không ít những khó khăn, thách thức, nhiều niềm vui và cũng có nhiều nỗi buồn. Sau bốn năm, đây là thời gian để em nhìn lại quá trình gắn bó, sự nỗ lực cũng như sự trưởng thành của mình.

Đại học Giao Thông Vận Tải mùa thu năm 2019, bầu trời hôm ấy thật đẹp, không biết có phải vì niềm vui trong lòng khiến bầu trời thêm xanh hay không. Đến giờ phút này, khi đã là sinh viên năm cuối, em vẫn cảm thấy mình thật may mắn khi trở thành sinh viên của Khoa Công Nghệ Thông Tin Khóa 60, được làm việc cũng những người bạn, những thầy cô dưới mái trường thân yêu này.

Đặc biệt, để có được đồ án này ngày hôm nay, em xin chân thành cảm ơn thầy TS. Hồng Văn Thơng và các thầy cơ giáo bộ môn đã tận tình hướng dẫn, chỉ dạy, góp ý; chia sẻ kiến thức, kinh nghiệm; giúp đỡ em trong suốt quá trình thực hiện báo cáo và chương trình, để đờ án tớt nghiệp của em hồn thiện. Em cũng xin gửi lời cảm ơn sâu sắc đến những người bạn, những người anh chị đã hỗ trợ kiến thức chuyên môn để em có được đồ án ngày hôm nay. Sự tận tâm và nhiệt huyết của mọi người đã giúp em ngày càng trưởng thành và hồn thiện hơn.

Quá trình thực hiện đờ án của em không tránh khỏi những thiếu sót, mong nhận được các lời góp ý của thầy cô để đồ án của em có thể cải thiện và phát triển trong tương lai.

Em xin chân thành cảm ơn!

<b>Hà Nội, ngày ... tháng ... năm 2023 Sinh viên thực hiện</b>

<b>Nguyễn Trung Tài</b>

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

<b>CHƯƠNG 1. GIỚI THIỆU BÀI TOÁN NHẬN DẠNG KÝ TỰ QUANG HỌC .. 11 </b>

1.1.G<small>IỚI THIỆU BÀI TOÁN NHẬN DẠNG KÝ TỰ QUANG HỌC</small> ... 11

<i>2.2.3. Mạng neuron hồi quy – RNN ... 28 </i>

<i>2.2.4. Một số cấu trúc mạng CNN hiện nay ... 30 </i>

2.2.C<small>ÁC CÔNG NGHỆ GIẢI QUYẾT BÀI TỐN </small>OCR ... 42

<i>2.2.1. Các bài tốn con của OCR ... 42 </i>

<i>2.2.1.1 Bài toán phát hiện chữ - Text detection ... 42 </i>

<i>2.2.1.2 Bài toán nhận diện chữ - Text recogniton ... 43 </i>

<i>2.2.2. Các mơ hình phát hiện chữ - Text detection ... 44 </i>

<i>2.2.2.1 Các phương pháp cổ điển ... 44 </i>

<i>2.2.2.2 Text detection dựa trên Object Detection ... 45 2.2.2.3 Text detection dựa trên các thành phần của chữ (Sub-Text Components)49 </i>

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

<i>2.2.3. Các mơ hình nhận diện chữ - Text regcognition ... 52 </i>

<i>2.2.3.1 Các phương pháp cổ điển ... 52 </i>

<i>2.2.3.2 Mơ hình tổng quan của text recognition áp dụng trong học sâu ... 53 </i>

<i>2.2.3.3 Text recognition dựa trên CTC... 54 </i>

<i>2.2.3.3 Text recognition dựa trên Attention ... 55 </i>

<i>2.2.4. Cơ sở lý thuyết cho bài tốn trích xuất thông tin trong văn bản từ ảnh ... 56 </i>

<i>2.2.4.1 Bài tốn trích xuất thơng tin trong văn bản từ ảnh ... 56 </i>

<i>2.2.4.2 Một số lý thuyết đồ thị cơ bản ... 58 </i>

<i>2.2.4.3 Một số bài toán khi sử dụng Graph Convolutional Network ... 60 </i>

<i>2.2.4.4 Graph Convolutional Network trong bài tốn trích xuất thơng tin trong hóa đơn ... 62 </i>

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

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

Viết tắt Ý nghĩa

OCR Nhận dạng ký tự quang học CNN Mạng nơ-ron tích chập

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

<b>DANH MỤC BẢNG BIỂU </b>

Bảng 1. 1 Khảo sát các phương pháp phát hiện text đã được công bố ... 16

Bảng 1. 2 Khảo sát các nghiên cứu về nhận dạng ký tự đã được công bố ... 17

Bảng 2. 1 So sánh một sớ mơ hình phát hiện chữ ... 48

Bảng 2. 2 Bảng so sánh kết quả các mô hình phát hiện chữ ... 51

Bảng 3. 1 Tổng quan kiến trúc nhận diện hóa đơn ... 69

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

<b>DANH MỤC HÌNH ẢNH </b>

Hình 1. 1 Mục đích của kỹ thuật OCR ... 11

Hình 1. 2 Minh họa OCR được ứng dụng trong doanh nghiệp ... 14

Hình 1. 3 Minh họa một luồng OCR tiêu biểu ... 14

Hình 1. 4 Các bước xử lý hệ thống ... 15

Hình 1. 5 Sơ đồ khối xử lý ………...19

Hình 2. 1 Mỡi quan hệ giữa AI, ML, DL ... 21

Hình 2. 2 Mạng thần kinh ... 22

Hình 2. 3 Kiến trúc mạng Mutil Layber Perceptron(MLP) ... 23

Hình 2. 4 Vai trị của tớc độ học – Learning Rate ... 24

Hình 2. 5 Mơ hình tổng quan của CNN... 25

Hình 2. 6 Một sớ loại Pooling ... 26

Hình 2. 7 Đờ thị các hàm kích hoạt Sigmoid, Tanh, ReLU ... 27

Hình 2. 8 Hàm Softmax với bài tốn phân loại nhiều lớp ... 27

Hình 2. 9 Mạng NN trước và sau khi Dropout ... 28

Hình 2. 10 Kiến trúc mạng RNN ... 28

Hình 2. 11 Cấu trúc BiLSTM ... 29

Hình 2. 12 Lịch sử phát triển các cấu trúc mạng CNN ... 30

Hình 2. 13 Kiến trúc mạng Alexnet ... 30

Hình 2. 14 Kiến trúc mạng VGG-16 ... 31

Hình 2. 15 Ví dụ về việc thay bộ lọc 5x5 bằng bộ lọc 3x3 ... 32

Hình 2. 16 Cấu trúc mạng ResNet ... 32

Hình 2. 17 Chi tiết bên trong khới Identity ... 33

Hình 2. 18 Ví dụ Seq2Seq trong dịch máy ... 34

Hình 2. 19 Mơ hình mạng Encoder-Decoder ... 35

Hình 2. 20 Mơ hình Seq2Seq áp dụng cơ chế Attention ... 36

Hình 2. 21 Một sớ kiểu Attention ... 37

Hình 2. 22 Một sớ kiểu tính score của Attention ... 37

Hình 2. 23 Mơ hình Attention-OCR ... 38

Hình 2. 24 Mơ hình CRNN + Attention ... 39

Hình 2. 25 Ảnh trước và sau khi áp dụng cơ chế NMS ... 40

Hình 2. 26 Phần giao nhau của hai khung ... 41

Hình 2. 27 IOU giữa hai khung ... 41

Hình 2. 28 Phát hiện chữ trog ảnh biển báo ... 42

Hình 2. 29 Nhận diện ảnh chữ STOP ... 43

Hình 2. 30 L̀ng xử lý của mơ hình MSER ... 45

Hình 2. 31 L̀ng xử lý của mơ hình SWT ... 45

Hình 2. 32 Những dự đoán lỡi của TextBoxes ... 46

Hình 2. 33 Một sớ kết quả phát hiện chữ của EAST ... 47

Hình 2. 34 Mơ hình LOMO ... 48

Hình 2. 35 Kết quả của 2 mơ hình LOMO và Wang ... 48

Hình 2. 36 Kết quả phát hiện chữ của các mơ hình dạng Sub-Text Coponent ... 51

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

Hình 2. 37 L̀ng h́n luyện tổng quan của mơ hình Text recognition ... 53

Hình 2. 38 Mơ hình mạng CRNN ... 54

Hình 2. 39 Một sớ kiểu mơ hình text recognition áp dụng CTC ... 55

Hình 2. 40 Một sớ kiểu mơ hình áp dụng cơ chế Attention ... 56

Hình 2. 41 Các loại cấu trúc và phương thức cho bài tốn trích x́t thơng tin ... 57

Hình 2. 42 Cấu trúc đờ thị trong mơ hình Graph Convolutional Network ... 59

Hình 2. 43 Heterogeneous và homogeneous graph ... 60

Hình 2. 44 Ví dụ minh họa bài tốn Link Prediction ... 61

Hình 2. 45 Ví dụ minh họa bài tốn Node Classification ... 61

Hình 2. 46 Ví dụ minh họa bài tốn Clustering & Community detection ... 62

Hình 2. 47 Ví dụ các vector từ trược biểu diễn trong không gian word2vec ... 63

Hình 2. 48 Kiến trức mơ hình Skip-gram ... 64

Hình 2. 49 Kiến trức mơ hình Skip-gram ... 64

Hình 2. 50 Đờ thị liên kết giữa các textbox ... 66

Hình 2. 51 Kiến trúc mô hình Graph Convolutional Network trong bài tốn node classification ... 66

Hình 3. 1 Hình ảnh hóa đơn mẫu trong tạp dữ liệu ... 68

Hình 3. 2 Mơ hình tổng quan kiến trúc nhận diện hóa đơn ... 69

Hình 3. 3 Kiến trúc của thuật toán DBnet ... 69

Hình 3. 4 Xoay ngược ảnh với Mobilenet ... 70

Hình 3. 5 Thực hiện xoay hóa đơn với Mobilenet ... 70

Hình 3. 6 Text recognition với VietOCR ... 71

Hình 3. 7 Kiến trúc của model Pick ... 71

Hình 3. 8 Kết quả trích x́t thơng tin trong hóa đơn ... 73

Hình 3. 9 Thực hiện xây dựng một website ứng dụng ... 74

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

<b>MỞ ĐẦU </b>

Hiện nay, nhờ các tiến bộ vượt bậc của khoa học kĩ thuật, công nghệ trí tuệ nhân tạo (AI) đã được ứng thực tế vào rất nhiều lĩnh vực trong đời sống. Nhờ trí tuệ nhân tạo mà các công việc trở nên tự động và chuẩn xác, tuy nhiên trí tuệ nhân tạo cũng có giới hạn của mình, còn rất nhiều vấn đề chưa giải quyết được.

Một lĩnh vực nằm trong trí tuệ nhân tạo là xử lý ảnh hay là Computer Vision (CV). Xử lý ảnh được chia thành 4 nhóm chính là: xử lý nâng cao chất lượng ảnh, nhận dạng ảnh, nén ảnh và truy vấn ảnh. Trong đó nhận dạng ảnh có thể ứng dụng các thuật toán của học máy (Machine Learning) để giải quyết rất nhiều bài toán về nhận dạng. Dựa trên những kiến thức được học và tìm hiểu thêm từ các phòng nghiên cứu, em ứng dụng nhận dạng ký tự quang học để trích xuất thông tin từ hóa đơn. Lý do em chọn đề tài vì em thấy nhận dạng ký tự quang học hiện nay đang rất phát triển và có nhiều ứng dụng thực tế. Trong quá trình quan sát em thấy hiện nay các nhân viên mà muốn nhập thông tin hóa đơn đều rất là vất vả và mất nhiều thời gian, vì lý do đó em lựa chọn bài toán này nhằm giảm quyết những công việc nhàm chán đó mà thông tin trích xuất vẫn có tính chính xác cao. Bài toán của em hoàn toàn có thể áp dụng với những văn bản mà có cấu trúc như căn cước công dân, giấy khai sinh, giấy phép lái xe, hóa đơn thuốc ... em nghiên cứu một mà có thể dùng mô hình áp dụng cho đa dạng nhiều dữ liệu khác nhau. Đồ án của em được chia thành 2 phần nghiên cứu chính là: Ứng dụng học máy (Machine Learning) vào việc trích xuất thông tin hóa đơn và ứng dụng các thuật toán để thực hiện xây dựng mô hình. Báo cáo đồ án của em gồm 4 phần chương như sau:

<b>Chương 1: Giới thiệu bài toán nhận dạng ký tự quang học </b>

<b>Chương 2: Mạng Nơ-ron nhân tạo và các công nghệ trong giải quyết bài toán </b>

OCR

<b>Chương 3: Kết quả nghiên cứu Chương 4: Kết luận </b>

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

<b>CHƯƠNG 1. GIỚI THIỆU BÀI TOÁN NHẬN DẠNG KÝ TỰ QUANG HỌC </b>

<b>1.1. Giới thiệu bài tốn nhận dạng ký tự quang học </b>

<b>Hình 1. 1 Mục đích của kỹ thuật OCR </b>

<b>1.1.1. Lịch sử OCR </b>

Nhận dạng ký tự quang học hay tiếng anh gọi là Optical Character Recognition (viết tắt là OCR) là công nghệ chuyển đổi hình ảnh văn bản được đánh máy, chữ viết tay hoặc chứ đánh máy(thường được quyét bằng máy scanner) thành văn bản, tài liệu được mã hóa trên máy. Mặc dù gần đây thuật ngữ OCR mới thực sự phổ biến ở nước ta song công nghệ này đã trải qua một lịch sử phát triển rất dài. Sau đây là một số cột móc dánh chú ý của quá trình hình thành và phát triển của OCR:

• Năm 1870, C.R.Carey của Boston Masachusetts phát minh ra máy quét võng mạc – một hệ thống truyền hình ảnh sử dụng các tế bào quang điện. • Năm 1914: Một máy đọc các ký tự và chuyển đổi chúng thành mã điện báo

tiêu chuẩn được phát triển bởi Emanuel Goldberg. Edmund Fournier d’Albe phát triển Optophone, một máy quét cầm tay mà khi di chuyển trên một trang tạo ra các âm thanh tương ứng với các chữ cái hoặc ký tự cụ thể. • Năm 1920 - 1930: Emmanuel Goldberg đã phát triển ra “Máy thống kê” để

tìm kiếm các tài liệu lưu trữ vi phim bằng hệ thớng nhận dạng mã quang học.

• Năm 1931: Emmanuel Goldberg được cấp bằng sáng chế Hoa Kỳ số 1.838.389 cho phát minh này. Bằng sáng chế đã được mua lại bởi IBM. • Năm 1954: Thiết bị OCR đầu tiên được lắp đặt ở Reader’s Digest nhằm

chuyển đổi các báo cáo bán hàng được đánh máy thành thẻ đục lỗ để nhập vào máy tính.

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

• Năm 1960 - 1965: đánh dấu sự ra đời của thế hệ OCR thương mại đầu tiên. Thế hệ máy OCR này được đặc trưng bởi một số kí tự nhất định. Số lượng 2 phông chữ tối đa là 10 và giới hạn bởi phương pháp nhận dạng là so sánh kí tự quét với kho lưu trữ hình ảnh mẫu.

• Năm 1960-1970: OCR thế hệ này có thể nhận dạng các ký tự in thông thường và kí tự viết tay. Đối với kí tự viết tay chỉ là các chữ số và một vài chữ cái cũng như ký hiệu, khơng phải tồn bộ bảng chữ cái. Đặc biệt nhất trong thời kỳ này là 2 bộ font chữ OCR-A và OCR-B. OCR-A là bộ ký tự OCR tiêu chuẩn của Mỹ, được thiết kế riêng để nhận dạng quang học. OCR- B là phông chữ châu âu, được cho là tự nhiên hơn tiêu chuẩn Mỹ.

• Năm 1974: Ray Kurzweil thành lập công ty Kurzwell Computer Products, Inc và tiếp tục phát triển omni-font OCR có thể nhận dạng văn bản được in bằng bất kỳ phông chữ nào (Kurzweil được cho là đã phát minh ra OCR đa phông chữ, tuy nhiên theo một số tài liệu nó đã được sử dụng từ cuối những năm 1960 và 1970 bởi một sớ cơng ty như CompuScan)

• Năm 1976: Kurzwell tạo ra máy đọc cho người khiếm thị.

• Năm 1978: Kurzweil Computer Products bắt đầu bán phiên bản thương mại của chương trình máy tính nhận dạng kí tự quang học.

• Năm 2000: Vào những năm đầu của thế kỷ XXI, OCR được cung cấp trực tuyến dưới dạng dịch vụ (WebOCR), trong môi trường điện toán đám mây (cloud) và trên các ứng dụng di động thơng minh.

• Năm 2006: Phần mềm OCR Tesseract trở thành của google. Sự hợp tác tạo nên sự phát triển vượt bậc của công nghệ OCR. Nó có thể tự nhận dạng các mẫu thay vì phải đưa ra các quy tắc cho từng ngôn ngữ.

<b>1.1.2. Ứng dụng của nhận dạng ký tự quang học trong trích xuất thơng tin hóa đơn </b>

Nhận dạng ký tự quang học (OCR) có rất nhiều công dụng trong đời sống của chúng ta mà có thể dễ dàng bắt gặp như:

• Nhập liệu nhanh chóng cho các tài liệu kinh doanh (Căn cước công dân, hộ chiếu, hóa đơn, sao kê ngân hàng, biên lai).

• Nhận dạng biển sớ tự động.

• Nhận dạng hộ chiếu và trích x́t thơng tin hộ chiếu ở sân bay. • Nhận dạng biển báo giao thơng.

• Cơng nghệ hỡ trợ cho người khiếm thính và khiếm thị. • Chuyển đổi chữ viết tay trong thời gian thực

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

Ứng dụng OCR trong xử lý hóa đơn giúp tiết kiệm thời gian, giảm thiểu các thao tác thủ công, tăng năng suất và tính chính xác của dữ liệu sau khi được trích xuất. Dưới đây sẽ là những lợi ích mà phần mềm quét hóa đơn bằng OCR mang lại cho các doanh nghiệp:

<b>• Giảm thời gian xử lý, tăng hiệu suất làm việc. Quá trình xử lý hóa đơn </b>

chậm sẽ khiến công việc không đảm bảo được tính liên tục, khiến cho hiệu suất làm việc của nhân viên không như kỳ vọng. Vậy nên, khi áp dụng công nghệ OCR vào sẽ giúp thời gian xử lý mỗi hóa đơn giảm còn 3 - 5 giây. Đây là bước khởi đầu tớt đẹp cho hàng loạt quy trình phía sau.

<b>• Tăng độ chính xác của dữ liệu đồng thời tăng tính an tồn, bảo mật. </b>

Hóa đơn thường chứa nhiều thông tin như mã số hóa đơn, mã số thuế, số tiền, số tài khoản, ... Theo thống kê thì tỉ lệ lỗi nhập số liệu có thể lên tới 20%, như vậy thì nếu nhập theo cách thủ công thì khả năng sai số liệu tương đối lớn, chưa kể tới những trường hợp nhập trùng lặp hóa đơn sẽ khiến cho quá trình phê duyệt, thanh toán,... của kế toán sau này gặp nhiều khó khăn. Thêm vào đó nhiều người truy cập và đọc được dữ liệu hóa đơn cũng dễ khiến doanh nghiệp bị lộ thông tin. Với công nghệ OCR trong quá trình chụp hóa đơn thì khác, độ chính xác khi xử lý lên tới 99%, đảm bảo nguồn dữ liệu đầu vào cho các quá trình tiếp theo.

<b>• Lưu trữ, quảng lý hóa đơn hiệu quả hơn. Dữ liệu trên hóa đơn sau khi </b>

được đọc bằng công nghệ nhận dạng ký tự quang học sẽ được trích xuất và sớ hóa tồn bộ. Lúc này, doanh nghiệp có thể loại bỏ các tủ hồ sơ, giấy tờ cồng kềnh và thay vào đó là lưu trữ thông tin trên bộ nhớ Cloud.

<b>• Tối ưu chi phí và nguồn lực. Công nghệ OCR giúp tự động hóa quy trình </b>

xử lý hóa đơn, tối ưu hóa quá trình tìm kiếm và lưu trữ thông tin. Như vậy thì doanh nghiệp sẽ không cần tốn quá nhiều chi phí cho việc lưu trữ, giấy tờ, chi phí phải trả nếu gặp rủi ro trong việc nhập sai dữ liệu, nhân viên cũng tránh khỏi những tác vụ lặp đi lặp lại nhàm chán, thay vào đó sẽ tập trung xử lý các nghiệp vụ chuyên môn khác.

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

<b>Hình 1. 2 Minh họa OCR được ứng dụng trong doanh nghiệp </b>

<b>1.1.3. Chương trình OCR </b>

Chương trình OCR là tập hợp các mô hình nhằm số hóa văn bản thành định dạng số (doc, pdf, ...) một chương trình OCR bao gờm một l̀ng hồn chỉnh để giải quyết bài toán, mô hình OCR là một trong sớ đó. Một l̀ng hồn chỉnh được mơ tả như hình dưới đây:

<b>Hình 1. 3 Minh họa một luồng OCR tiêu biểu </b>

Bao gờm các bước sau:

• Bước 1: Ảnh đầu vào sẽ được đi một mô hình Nhận diện dòng chữ (Layout Analysis) để nhận diện vị trí các dòng chữ.

• Bước 2: Khi đã có vị trí các dòng chữ, các dòng chữ sẽ được cắt ra và xoay về đúng hướng nhờ mơ hình xoay (Text-line Alignment).

• Bước 3: Sau khi có ảnh chuẩn đã xoay, ảnh dòng chữ sẽ được đưa vào mô hình OCR để thực hiện việc nhận dạng ra từ.

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

<b>1.2. Công trình liên quan </b>

Xử lý hóa đơn bằng OCR được thực hiện theo quy trình gồm các bước cơ bản sau:

• Bước 1: Đưa hình ảnh lên hệ thớng

• Bước 2: Tiền xử lý hình ảnh. Đây là quá trình giúp hệ thông xác định ảnh chính xác hơn, đưa ảnh về dạng pixel, điều chỉnh độ sáng tới, giảm độ mờ của ảnh. • Bước 3: Xác định vùng chứa thơng tin.

• Bước 4: Phát hiện trường thông tin cần trích xuất. Nhanh chóng lấy ra các trường thông tin mong muốn như mã hóa đơn, ngày tháng, thông tin bên bán (tên, địa chỉ, số điện thoại, ...) thông tin bên mua, tổng số tiền phải trả, phần trăm thuế, ... • Bước 5: Đọc và nhập thông tin. Ký tự được đọc và đưa vào các trường thông tin

theo yêu cầu của từng doanh nghiệp.

• Bước 6: Xử lý hậu kỳ. Chỉnh sửa các trường thông tin còn sai sót sau khi máy đọc xong, đây là bước quang trọng vì nếu thiếu bước này thì đôi khi công nghệ OCR sẽ đọc sai hoặc có một vài từ vô nghĩa.

Như phần trước đã đề cập, để xây dựng một hệ thớng hồn chỉnh từ phân tách text trong văn bản là ảnh hay bản scan đế trích xuất tự động các thông tin quan trọng trong văn bản thì cần giải quyết lần lượt ba nội dung sau. Mỗi nội dung sẽ được coi là một bài toán nhỏ sẽ được nghiên cứu, thử nghiệm độc lập trước khi tổng hợp thành một thệ thớng hồn chỉnh. Ba nội dung nghiên cứu như sau:

1. Xử lý ảnh để nhận diện các dòng chữ trong văn bản 2. Nghiên cứu nhận dạng ký tự cho tiếng Việt

3. Trích xuất thông tin quan trọng từ văn bản tiếng Việt

<b>Hình 1. 4 Các bước xử lý hệ thống </b>

Trong nội dung thứ nhát là vấn đề xử lý ảnh để lấy ra được tất cả các dòng text có xuất hiện trong văn bản. Đây được coi là bài toán phát thiện đối tượng trong ảnh. Việc

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

ngắt câu sẽ trở thành vấn đề, vì các đối tương đang rất giống nhau. Đầu vào của bài toán thứ nhất là ảnh chụp hay ảnh scan của hóa đơn, đầu ra ta sẽ có vị trí của các dòng chữ xuất hiện trong ảnh.

Với bài toán phát hiện vùng văn bản (text detection) đã có nhiều nghiên cứu, sử dụng nhiều phương pháp khác nhau, nhưng với tiếng Việt thì chưa có nhiều nghiên cứu công bố. Dưới đây là các công trình nghiên cứu đã có về vấn đề phát hiện chữ viết, chủ đạo là tiếng Anh, tiếng Trung Quốc. Bảng khảo sát được viết theo từ các phương pháp cũ đến mới.

<b>Bảng 1. 1 Khảo sát các phương pháp phát hiện text đã được công bố </b>

2001 Tiếng Trung Quốc, tiếng

[1]

Độ chính xác thấp, nhiễu tác động

2004 Tiếng Trung Quốc, tiếng Tây Ban Nha

Phân loại AdaBoost và mã hóa nhị phân [2]

Độ chính xác thấp, các văn bản chữ bé, mờ không phát

hiện được 2011 Tiếng Anh Học không giám sát phâm cụm

K_means, bộ lọc Gaussian, phân loại tuyến tính SVM [3]

Phức tạp, nhiều text có kích thước

nhỏ không phát hiện được 2012 Tiếng Anh Phân cụm K-means, CNN gồm

2 lớp tích chập, 1 lớp kết nói đầy đủ [4]

Phát hiện thiếu, bị giới hạn trong tập hợp chữ viết nhất

định 2015 Tiếng Anh,

tiếng Hàn, tiếng Trung

CNN 2 lớp, phân loại SVM [5] Phát hiện sai với văn bản đa hướng

2019 Tiếng Anh Phát hiện đối tượng sử dụng Faster R-CNN [6]

Phát hiện từng ký tự, không nhận diện cả cụm chữ

viết

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

2018 Tiếng Anh, tiếng Trung

viết

Các bộ dữ liệu chuẩn có sẵn sử dụng để học cho bài toán phát hiện chữ viết đã được công bố được thể hiện ở bảng dưới đây. Các bộ dữ liệu có sẵn cũng chỉ dừng lại ở các ngôn ngữ Anh, Trung Quốc, Hàn Quốc và Ả Rập và chưa có bộ dữ liệu chuẩn nào về tiếng Việt.

Trong nội dung thứ hai sẽ nghiên cứu nhận diện ký tự tiếng Việt. OCR (nhận dạng ký tự qung học) là ứng dụng công nghệ chuyên dùng để đọc text ở file ảnh. Được biết đến là một công cụ scan kỹ thuật số chuyên nhận dạng các ký tự, chữ viết tay, hay chữ đánh máy, công nghệ này chuyên dùng để truyền tải, nhập liệu dữ liệu. Đặc biệt, ở OCR có khả năng kỹ thuật số nhiều dưới nhiều dạng tài liệu khác nhau: hóa đơn, hộ chiếu, danh thiếp, tài liệu ... Vì vậy nghiên cứ sử dụng OCR cho văn bản tiếng Việt. Từ vị trí các dòng chữ có trong bài toán thứ nhất, bài toán thứ hai sẽ tiến hành OCR để biết được nội dung chính xác của dòng chữ đó.

Với bài toán nhận dạng ký tự chữ viết tiếng Việt cũng đã có nghiên cứu được công bố, sử dụng nhiều phương pháp khác nhau. Dưới đây là các công trình nghiên cứu đã được công bố.

<b>Bảng 1. 2 Khảo sát các nghiên cứu về nhận dạng ký tự đã được công bố </b>

2014 Vietnamese Handwritting Recognition for Automatic

Data Entry in Enrollment Forms

Phân loại các ký tự viét in hoa tiếng Việt (bao gồm cả dấu) khi đầu vào là ảnh các ký

tự riêng biệt [8]

Chỉ nhận dạng được từng ký từ

nếu cả câu thì không được, cần quá nhiều nhãn khi

phân loại 2015 Isolated Vietnamese

Handwritting Recognition Embedded System Applied

Combined Feature Extraction Method

Phân loại các ký tự tiếng Việt, sử dụng quá trình tiền xử lý để

cắt từng ký tự ra khỏi câu [9]

Cần quá nhiều nhã khi phân loại

2017 Preparation of an Unconstrained Vietnamese

Online Handwritting

Sử dụng mô hình RNN (Recurrent Neural Networks) để nhận dạng ký tự và dự

Kết quả tốt nhưng cần label một lượng lớn dữ liệu

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

Database and Recognition Experiments

đoán các ký tự tiếp theo [10]

để có thể huấn luyện mô hình

Competition on Vietnamese Online

Handwritten Text Recognition using Hands-

VNOnDB

Cung cấp bộ dữ liệu và nhận dạng chữ viết, dòng chữ và cả

đoạn văn. Sử dụng mô hình Long short term memory(LSTM) kết hợp Connectionist

Temporal Classification (CTC)

[11]

Tỷ lỗi từ thấp với nhận dạng chữ, tỷ lệ lỗi từ còn cao

với nhận dạng dòng chữ và đoạn

văn

2020 A Robust End-to-End Information Extraction System for Vietnamese

sử dụng mô hình Transformer và AttentionOCR [13]

Kết quả nhanh, tốc độ chính xác cao,

nhận dạng tốt cả chữ viết tay và

đánh máy cho Tiếng Việt. Các bộ dữ liệu cho bài toán nhận dạng ký tự Tiếng Việt có sẵn hay công khai thường có số lượng không nhiều và không đa dạng thường là các dữ liệu ảnh với chữ viết rõ ràng, sắc nét.

Trong nội dung thức ba sẽ tiến hành thu thập dữ liệu các mẫu hóa đơn thanh toán sau đó quy định các trường thông tin cần trích xuất trong văn bản. Xây dựng một mô hình huấn luyện để phân loại các text vào các nhãn đã quy định. Đầu vào của model chính là vị trí và nội dung textbox đã thu được trong bài toán thứ nhất và bài toán thứ hai. Với mô hình phân loại text, nghiên cứu sử dụng model GCN (graph convolutiona network). Một mô hình tương đối mới mẻ, giúp phác họa chân thực cấu trúc liên kết của các câu từ trong văn bản. Đối với nội dung nghiên cứu thứ ba này thì hầu như không có nghiên cứu cứ thể nào được công bố cho vấn đề này và đặc biệt các nghiên cứu về trích xuất thông tin chỉ dừng lại ở một băn bản có cấu trúc nhất định như các loại giấy tờ có cấu trúc quy định sẵc như chứng minh thư, bằng lái xe, ... Mà đối với đối tượng của đồ án này là hóa đơn sẽ có nhiều cấu trúc, hình thức khác nhau, nên với bài toán trích xuất thông tin này là hoàn toàn mới.

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

Tổng quan sơ đờ khới xử lý như sau:

<b>Hình 1. 5 Sơ đồ khối xử lý </b>

Đầu vào là văn bản cần trích xuất thông tin, sau đó các text sẽ được tiến hành embedding để vector số hóa. Đây cũng là đầu vào để huấn luyện và kiểm thử mô hình phân loại text. Với các text đã xác định rõ nhãn tiến hành mapping vào các trường thông tin muốn trích xuất.

<b>1.3. Kết luận </b>

Đối với bất kỳ ai đang cố gắng với nghiệm vụ phân tích văn bản, cái khó nhất không phải là tìm đúng tài liệu mà là tìm những thông tin chính xác trong những tài liệu đấy. Hiểu rõ mối liên kết giữa các chủ thể trong đoạn văn, các sự kiện trong đoạn văn mô tả diễn ra như thế nào, hoặc là tìm những thông tin quý giá từ những từ khóa trong đoạn văn đó, ... và vì thế, việc tìm ra cách tự động trích xuất thông tin từ dữ liệu văn bản và trình bày nó theo cách có cấu trúc sẽ giúp chúng ta gặt hái được nhiều lợi ích, giảm đáng kể thời gian ta phải dành để đọc lướt qua các tài liệu.

Nghiên cứu tập chung vào một mẫu văn bản nhất định (mẫu hóa đơn thanh toán tiếng Việt), phục vụ cho các doanh nghiệp hay kế toán để có thể tự động, nhanh chóng lấy ra các trường thông tin mong muốn như mã hóa đơn, ngày tháng, thông tin bên bán (tên, địa chỉ, số điện thoại, ...) thông tin bên mua, tổng số tiền phải trả, phần trăm thuế, ... Mô hình sẽ lấy ra các trường thông tin đó tùy thuộc vào mong muốn của người cài đặt và sử dụng. Phạm vi nghiên cứu thử nghiệm với đầu vào là file ảnh, file pdf của hóa đơn chữ in, hoặc chữ viết tay, hình ảnh rõ ràng, độ nghiêng chữ không quá 10 độ, và nội dung hóa đơn chỉ trong một trang.

Đầu vào sẽ là ảnh chụp hay ảnh scan một hóa đơn thanh toán, đầu ra hệ thống sẽ tự động lấy ra các trường thông tin mong muốn (nội dung của trường thông tin đó được định dạng text, người bán: vinmart, thời gian: 02/09/2022, tổng tiền: 2000000, địa chỉ: Mỹ Đình).

Thông thường ta chỉ quan tâm để một vài thông tin cần thiết ở trong hóa đơn, nên không nhất thiết phải xây dựng một hệ thống đọc tồn bộ thơng tin trong hóa đơn, do trích x́t tồn bộ thơng tin vừa làm giảm tớc độ trong quá trình xử lý và gây ra nhiều dữ liệu nhiễu. Từ đó em thực hiện xây dựng một hệ thống trích xuất thông tin quan trọng trong hóa đơn với các trường thông tin gồm người bán, thời gian, địa chỉ, tổng tiền.

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

Trong đồ án tốt nghiệp này em sẽ tập trung giải quyết lần lượt từng nội dung bài toán với những mục tiêu chính sau:

1. Làm rõ từng bài toán, tìm ra phương pháp giải quyết phù hợp nhất, thử nghiệm và đánh giá các phương pháp đổi với dữ liệu là hóa đơn thanh toán tiếng Việt.

2. Xây dựng một hệ thớng hồn chỉnh, phát triển giao diện để hỗ trợ người dùng sử dụng.

Từ mục tiêu nghiên cứu trên, em đã tiến hành các bước sau và cũng là các chương trình bày tiếp theo trong báo cáo, mỗi chương trình sẽ trình bày lần lượt các nội dung liên quan đến ba bài toán nhỏ và hệ thơng hồn chỉnh sẽ được trình bày tại chương cuối cùng.

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

<b>CHƯƠNG 2. MẠNG NƠ-RON NHÂN TỌA VÀ CÁC CÔNG NGHỆ TRONG GIẢI QUYẾT BÀI TOÁN OCR </b>

<b>2.1. Mạng nơ ron nhân tạo 2.1.1. Kiến trúc mạng neuron </b>

Trong những năm trở lại đây, các khái niệm như học máy (Machine Learning - ML) hay học sâu (Deep Learning - DL) đã trở nên phổ biến hơn trong việc phát triển mô hình OCR và trong đời sống của chúng ta. Chúng đều thuộc một bộ môn khoa học chung được gọi là trí tuệ nhân tạo AI (Artificial Intelligence). Cụm từ AI bắt đầu được nói đến nhiều từ sau hội nghị Dartmouth vào năm 1956. Từ đó trở đi lĩnh vực AI đã dành được sự thu hút lớn và phát triển cho đến tận ngày nay.

<b>Hình 2. 1 Mỗi quan hệ giữa AI, ML, DL </b>

Ban đầu, các thuật toán áp dụng cho mô hình còn sơ khai, dữ liệu còn ít, thiết bị chưa đủ mạnh, các nhà khoa học chỉ áp dụng ML như một ứng dụng để thực thiện phân tích dữ liệu, học đơn giản từ nó và sau đó thực hiện một quyết định. Một số mô hình của Machine Learning là thuật toán sử dụng Linear Regression, Logistic Regression, Support Vector Machines (SVM), ... Tuy nhiên do còn nhiều hạn chế nên kết quả mô hình còn thấp, chỉ áp dụng được một vài trường hợp nhỏ, mô hình lại quá nhạy cảm, dễ bị sai có nhiễu (noise). Để giải quyết vấn đề này các nhà khoa học đã sáng tạo ra mạng neuron (tên tiếng anh là neural network - NN) – một mạng được đưa ra theo cơ chế của

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

bộ não con người. Với mỗi neuron trong tế bào thần kinh con người nhận tín hiệu đầu vào (input) qua các sợi thần kinh, tích tụ lại trong thân (cell body), khi tín hiệu này vượt qua ngưỡng (threshold) thì nó sẽ phát ra tín hiệu đầu ra (output). Cứ thế các neuron sẽ truyền các tín hiệu sang các neuron khác nhờ các liên kết (Dendrites) và chúng tạo thành mạng thần kinh trong não bộ của chúng ta.

<b>Hình 2. 2 Mạng thần kinh </b>

Tuy nhiên, không giớng hồn tồn như mạng thần kinh của con người, mạng neuron nhân tạo đã được cải thiện hơn, nó có các lớp rời rạc, các kết nối, hướng truyền dữ liệu được mở rộng nhằm giải quyết nhiều nhu cầu hơn. Và rồi sau đó, đến năm 2010, dựa trên mạng neuron cơ bản, mô hình mạng AlexNet đã giành chiến thắng tại cuộc thi ImageNet với kết quả bỏ xa các mô hình khác. Hai năm sau tại google, Andrew Ng đã đưa các mạng neuron này lên tầm cao mới, làm cho chúng trở nên to hơn bằng cách tăng số lớp và số lượng các neuron, sau đó chạy qua khối lượng lớn dữ liệu từ Youtube (10 triệu video) để huấn luyện mô hình. Ng đã đặt thêm từ “deep” vào việc học (learning) để tạo ra một bước khởi đầu cho sự phát triển mạnh mẽ của Deep Learning cho đến giờ. Tổng quan mô hình:

Mạng neuron được cấu thành từ các neuron đơn lẻ ban đầu được gọi là Perceptron. Sau đó mạng neuron càng phát triển hơn bằng cách kết hợp các tầng Perceptron và được gọi là Perceptron đa tầng (Multilayer Perceptron – MLP).

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

<b>Hình 2. 3 Kiến trúc mạng Mutil Layber Perceptron(MLP) </b>

Một mạng Neural Network-NN sẽ có 3 tầng chính là:

• Tầng vào (input layer): là tầng cho các đầu vào của mạng. • Tầng ra (output layer): là tầng cho các đầu ra của mạng.

• Tầng ẩn (hidden layer): là tầng giữa vào và tầng ra, thể hiện cho việc tính toán, suy luận của mạng để tìm ra các đặc trưng.

Ngoài ra còn có một hàm quan trọng để đánh giá xem hệ thống học máy đã mô hình hóa dữ liệu tốt đến mức nào là hàm mất mát (Loss function). Đây là hàm được dùng để tính toán lỗi dự đoán của mô hình trong quá trình đào tạo. Nó cho biết độ sai khác giữa thực tế và kết quả dự đoán. Từ đó nó sẽ tối ưu hóa mô hình của mạng bằng cách cực tiểu giá trị này. Một số hàm loss có thể kể đến là Cross entropy loss hay Softmax loss function, Euclidean Loss Function, Hinge Loss Function, ... Hàm chi phí (cost function) là trung bình của hàm mất mát áp dụng trên một tập các quan sát.

Thuật toán suy giảm độ dốc Gradient Descent là một thuật toán tối ưu được sử dụng nhiều trong các bài toán Deep Learning với mục tiêu là tìm được mô hình đưa ra dự đoán chính xác nhất. Trong đó:

- Gradient: là tỉ lệ độ nghiêng của đường dốc. Về mặt toán học, Gradient của một hàm số là đạo hàm của hàm số đó tương ứng với mỗi biến của hàm.

- Descent: là từ viết tắt của descending nghĩa là giảm dần Gradient Descent có nhiều dạng khác nhua như Stochatstic Gradient Descent (SGD), Batch Gradient

Descent, Mini-batch Gradient Descent, … nhưng về cơ bản đều được thực hiện

theo các bước:

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

+ Bước 1: Khởi tạo các tham số. Thường là các hệ số nhỏ hoặc là hệ số ngẫu nhiên hoặc bằng 0. Ví dụ:

+ Bước 2: Tính đạo hàm của hàm loss theo các biến:

+ Bước 3: Cập nhập các tham số mới bằng cách đi ngược với gradient.

+ Bước 4: Lặp lại bước 1 và 2 đến khi thỏa mãn điều kiện dừng. Trong đó: • : là các tham sớ cần cập nhật và

• kí hiệu cho tham số tại bước cập nhật lần k khi thực hiện GD • : là hàm mục tiêu cần cực tiểu

• : là tỉ lệ học với Điều kiện dừng của GD có thể là:

+ Kết thúc tất cả các epochs (đây là siêu tham số trong mô hình được dùng để định nghĩa sớ lần học được tồn bộ dữ liệu huấn luyện) đã định sẵn. + Hàm mất mát có giá trị không thay đỏi sau một số lần hữu hạn epochs. + Gía trị của hàm mất mát đủ nhỏ và độ chính xác của model đủ lớn.

Gradient Descent phụ thuộc rất nhiều vào điểm khởi tạo và tốc độ học (learning rate) ở bước 1.

<b>Hình 2. 4 Vai trị của tốc độ học – Learning Rate </b>

<b>2.2.2. Mạng neuron tích chập - CNN </b>

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

<b>Hình 2. 5 Mơ hình tổng quan của CNN </b>

Mạng neuron tích chập (Convolutional Neural Network - CNN) là mạng thường được dùng phổ biến trong bài toán xử lý ảnh. Nó ra đời để nâng cao khả năng trích chọn đặc trưng trong ảnh bằng cách tìm các mối tương quan giữa những điểm ảnh kề cận với nhau. Mạng CNN bao gồm các tầng Convolution, Pooling và các hàm kích hoạt Activation function được sắp xếp theo một thứ tự thích hợp tùy từng loại cấu trúc. Dưới đây ta sẽ đi qua lần lượt các tầng trong đó:

Convolutional layer (CONV): gọi là tầng tích chập, đây là tầng đầu tiên để bóc tách các đặc trưng của ảnh đầu vào. Sử dụng một bộ lọc (filter hoặc kernel) thường có kích cỡ MxM trượt qua bức ảnh. Phần của bức ảnh mà bô lọc trượt qua được gọi là receptive field, tức là vùng mà một neural có thể nhìn thấy và đưa ra quyết định. Đầu ra của quá trình là một ma trận đặc trưng (Feature map) có chứa thông tin của bức ảnh như là góc và cạnh. Sau đó feature map được đưa đến các tầng tiếp theo để học những đặc điểm khác.

Pooling layer (POOL): gọi là tầng tổng hợp, đây thường là tầng sau Convolution layer. Nó sẽ xác định đặc trưng chính hay quan trọng nhất trong mỗi vùng của ảnh. Tầng này nhằm mục đích giảm kích thước của feature map để giảm chi phí tính toán. Nó được thực hiện bằng cách giảm số kết nối giữa những tầng và các tính toán độc lập trong feature map. Một số loại pooling:

- Max pooling: lấy các thành phần giá trị lớn nhất trong mỗi khu vực feature map - Average pooling: lấy trung bình của các thành phần trong mỗi khu vực feature

map.

- Global average pooling: lấy trung bình toàn bộ feature map.

- Sum pooling: lấy tổng hợp các thành phần trong một khu vực của feature map Đây thường là tầng kết nối giữa Convolutional layer và Fully connected layer

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

<b>Hình 2. 6 Một số loại Pooling </b>

Fully connected layer (FC) hay Dense layer: gọi là tầng kết nới hồn tồn, nó được dùng để kết nối các neuron với tất cả neuron của tầng trước đó. Tầng này thường được đặt trước đầu ra của mạng CNN. Thông thường đầu vào từ tầng trước đó sẽ được làm phẳng (flatten) và đưa vào tầng Fully connected. Trong đây sẽ thực hiện các phép toán để phân loại dựa theo các bài toán.

Activation functions hay Activation layer: gọi là hàm kích hoạt hay tầng kích hoạt. Đây là hàm quan trọng của mô hình CNN. Nó được sử dụng để học và xác định gần đúng về mối quan hệ phức tạp giữa các biến (variable) của mạng. Nó sẽ quyết định xem thông tin nào sẽ được truyền tiếp và thông tin nào không cần. Nó là một hàm phi tuyến. Một số hàm thường dùng:

+ Sigmoid: đầu vào là số thực, đầu ra giới hạn trong khoảng (0,1)

+ Tanh tương tự như hàm sigmoid, đầu vào là các số thực nhưng đầu ra trong khoảng (-1,1).

+ Relu: (tên đầy đủ là Retified Linear Unit) là hàm kích hoạt thường được dùng kèm với mạng CNN. Nó biến toàn bộ giá trị đầu vào thành số dương. Điểm mạnh của hàm này là việc chi phí tính toán thấp.

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

+ Softmax: là hàm trung bình mũ. Nó thường được sử dụng để tính xác suất xảy ra của một sự kiện. Hay tổng quát hơn là hàm softmax tính khả năng xuất hiện của một class trong tổng số tất cả các class có thể xuất hiện. Sau đó, xác suất này được sử dụng để xác định class mục tiêu cho các đầu vào. Đầu ra của hàm sẽ là một giá trị trong khoảng (0,1]. Do đó hàm softmax thường được sử dụng ở những layer cuối của mạng classification nhằm đánh giá xác suất phân loại. Với n là số class thì ta có công thức, i=1,2,...,n:

<b>Hình 2. 7 Đồ thị các hàm kích hoạt Sigmoid, Tanh, ReLU </b>

<b>Hình 2. 8 Hàm Softmax với bài toán phân loại nhiều lớp </b>

Batch normalization: đây là phương pháp chuẩn hóa dữ liệu được sử dụng phổ biến trong mô hình DL. Nó là một trong những kiểu chuẩn hóa của tầng Normalization layer, thường được đặt giữa Convolutional layer và Pooling layer. Nó cho phép mô hình đào tạo nhanh hơn và ổn định hơn bằng cách thống nhất sự phân bố đầu vào các tầng trong quá trình huấn luyện. Ngoài ra nó còn làm giảm sự phụ thuộc của gradients vào tỉ lệ của các tham số hoặc giá trị ban đầu.

Dropout: đây là cơ chế bỏ qua ngẫu nhiên một số đơn vị (unit) hoặc kết nối (connection) với một xác suất xác định.

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

<b>Hình 2. 9 Mạng NN trước và sau khi Dropout </b>

<b>2.2.3. Mạng neuron hồi quy – RNN </b>

<b>Các mạng hồi quy còn được biết đến như Recurrent Neural Network - RNN là </b>

một lớp của mạng neuron cho phép đầu ra được sử dụng như đầu vào trong khi có các trạng thái ẩn. Nếu như các mạng CNN đa phần được giải quyết các bài toán với đầu vào là các dữ liệu độc lập và có phân phối giống nhau (independently and identically distributed – i.i.d) như hình ảnh, thì mạng RNN được ra đời để giải quyết những đầu vào có tính thời gian, theo dạng chuỗi gọi chung là những đối tượng có tính tuần tự ví dụ là các tín hiệu âm thanh, hành vi của một người, ... Ý tưởng chính của phương pháp là mạng RNN sẽ đọc các đầu vào của dữ liệu tại mỗi bước thời gian nhất định (gọi là time-step). Đầu ra tại mỗi bước sẽ được đưa vào mạng và mạng sẽ ghi nhớ trạng thái này coi là trạng thái trước đó và sẽ ảnh hưởng đến đầu ra của bước tiếp theo. Cứ thế, quá trình này được gọi là quá trình “hời tiếp”.

<b>Hình 2. 10 Kiến trúc mạng RNN </b>

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

Đi sâu vào chi tiết hơn, ta có thể thấy qua hình trên. Nếu như mạng neuron thông thường khi input x đi qua các hidden layer h và cho ra output là y với fully connected giữa các tầng thì với RNN, các input x<small>t </small>sẽ được kết hợp với hidden layer h<small>t-1 </small>bằng hàm f<small>w </small>để tính toán ra hidden layer hiện tại và output y<small>t </small>sẽ được tính ra từ h<small>t </small>, W là tập các trọng số. Như vậy kết quả từ các quá trình tính toán trước đã được nhớ bằng cách kết hợp thêm h<small>t-1 </small>tính ra h<small>t </small>nhằm cải thiện độ chính xác của việc dự đoán ở bước hiện tại.

Với:

f<small>w </small>là hàm tanh ngoải ra có thể sử dụng một số hàm phi tuyến khác như ReLU, … W<small>hh </small>, W<small>xh </small>, W<small>hy </small>: là 3 ma trận trọng số cho 2 quá trình tính toán là W<small>hh </small>kết hợp với bộ nhớ trước h<small>t-1 </small>và W<small>xh </small>kết hợp với x<small>t </small>để tính ra bộ nhớ của bước hiện tại h<small>t </small>từ đó kết hợp W<small>hy </small>để tính ra y<small>t</small>.

Một số cấu trúc mở rộng của RNN:

LSTM (Long Short Term Memory): là mạng bộ nhớ dài ngắn. Được đưa ra để giải quyết vấn đề các gradient có xu hướng bị mất mát – vanish (các giá trị tiến về 0) hay bùng nổ - explode (đạt đến một giá trị quá lớn) đối với chuỗi đầu vào dài.

BiLSTM (Bidirectional LSTM): là mạng bộ nhớ dài ngắn hai chiều. Cấu trúc này giúp mô hình học được cả vào ngữ cảnh quá khứ (trái sang phải – forward LSTM) và tương lai (phải sang trái – backward LSTM). Khiến cho mô hình dự đoán chính xác hơn tuy nhiên cần nhiều dữ liệu hơn.

<b>Hình 2. 11 Cấu trúc BiLSTM </b>

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

<b>2.2.4. Một số cấu trúc mạng CNN hiện nay </b>

<b>Hình 2. 12 Lịch sử phát triển các cấu trúc mạng CNN </b>

Từ khi Machine Learning, Deep Learning phát triển cho đến nay có rất nhiều mô hình mạng neuron được phát triển dựa trên kiến trúc CNN. Sau đây em xin trình bày 3 mơ hình là Alexnet, VGGNet và ResNet. Trong đó 2 kiến trúc VGGNet và ResNet thường xuyên được áp dụng làm khung (backbone) cho các mô hình xử lý hình ảnh (computer vision - CV) mà OCR là bài tốn con.[14]

<b>2.2.4.1 Alexnet(2012) </b>

<b>Hình 2. 13 Kiến trúc mạng Alexnet </b>

AlexNet [10] là mạng CNN được giới thiệu vào năm 2012 bởi Alex Krizhevsky, Ilya Sutskever và Geoff Hinton. Mạng AlexNet có 5 tầng convolution và 3 tầng fully connected với 60 triệu tham số.[14] Điểm nổi bật so với các mô hình trước đó như LeNet (một trong những mạng tích chập được công bố đầu tiên được triển khai các tầng tích chập):

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

+ Tăng kích thước đầu vào và độ sâu của mạng

+ Sử dụng các bộ lọc với kích thước giảm dần qua các tầng để thích ứng với kích thước các đặc trưng cục bộ và tồn cục.

+ Đây là mơ hình đầu tiên triển khai activation function là ReLU. + Có sử dụng Dropout và batch normalization.

<b>2.2.4.2 VGG(2014) </b>

<b>Hình 2. 14 Kiến trúc mạng VGG-16 </b>

Trong khi AlexNet tập trung vào các đặc trưng từ lớp Convolution đầu tiên qua kích cỡ filter và stride nhỏ hơn thì VGG [11] lại quan tâm đến một vấn đề khác là 20 độ sâu. VGG là viết tắt của Visual Geometry Group với 13 tầng Convolution và 3 tầng Fully connected.[14]

Chi tiết kiến trúc của VGG bao gồm:

- Đầu vào: VGG nhận đầu vào là ảnh RGB kích cỡ 224x224 pixel.

- Convolutional layers: tầng này ở VGG sử dụng receptive field (3x3). Ngoài ra cũng có các bộ lọc 1x1 để biến đổi tuyến tính các đầu vào và được theo sau bởi ReLU. Stride được đặt là 1.

- Fully connected layer: VGG có 3 tầng fully connected với 2 tầng đầu là 4096 kênh, tầng cuối là 1000 kênh.

- Hidden layer: tất cả các lớp ẩn của VGG đều dùng ReLU (đây là một cải tiến lớn so với AlexNet giúp cắt giảm thời gian). VGG cũng không thường sử dụng Local Response Normalization (LRN), do LRN làm tăng bộ nhớ và thời gian đào tạo mà không tăng được độ chính xác như mong đợi.

Mặc dù VGG được xây dựng dựa trên AlexNet nhưng cũng có những điểm khác biệt:

- Thay vì sử dụng receptive field (11x11 với stride là 4 hay 7x7), VGG sử dụng receptive field nhỏ hơn (3x3 với stride là 1). Do nó sử dụng 3 bộ ReLU thay vì một của AlexNet, khiến cho khả năng đưa ra phân biệt các lớp tớt hơn. Ngồi ra sớ lượng tham số của nó cũng ít hơn. Do

+ 2 tầng với bô lọc 3x3 có thể bao như bộ lọc 5x5 + 3 tầng với bộ lọc 3x3 có thể bao như bộ loc 7x7 + 5 tầng với bộ lọc 3x3 có thể bao như bộ lọc 11x11

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

<b>Hình 2. 17 Chi tiết bên trong khối Identity </b>

Điểm mạnh của cấu trúc:

• Sử dụng skip connection

• Thiết kế mạng CNN có thể sâu tới 152 tầng mà không ảnh hưởng đến độ hiệu quả của mô hình

• Một trong sớ cấu trúc đầu tiền sử dụng Batch normalization

Một số hô hình ResNet: ResNet-18, ResNet-34, ResNet-50, ResNet-101, …

<b>2.2.5. Một số cơ chế quan trọng 2.2.5.1 Cơ chế CTC </b>

Cơ chế CTC (tên đầy đủ là Connectionist Temporal Classification) lần đầu tiên được giới thiệu vào năm 2006 bởi Graves [13]. Ban đầu cơ chế này được sử dụng để nhận dạng giọng nói với dữ liệu là tuần tự theo thời gian. Đến khi áp dụng vào bài toán nhận diện chữ thì các ảnh đầu vào được coi là một chuỗi các khung pixel dọc của ảnh. Một mạng có đầu ra sẽ dự đoán của mỗi khung, nó cho biết phân phối xác suất của nhãn ở mỗi khung. Quy tắc CTC sau đó được áp dụng để chỉnh sửa dự đoán ở mỗi khung thành một chuỗi văn bản. Trong quá trình đào tạo, hàm mất mát được tính là tổng logarit âm của xác suất của tất cả các dự đoán có thể trên mỗi khung mà nó sinh một chuỗi mục tiêu bởi quy tắc CTC. Do đó CTC là phương pháp có thể đào tạo từ đầu đến cuối chỉ với nhãn ở cấp độ từ mà không cần đến nhãn ở mức ký tự. Ứng dụng đầu tiên của CTC trong OCR có thể được tìm thấy trong hệ thống nhận dạng chữ viết tay cũng của Graves vào năm 2008 [14]. Sau đó được mở rộng và phát triển với chữ ngoài đời thật như [15]

Điểm mạnh:

• CTC cho thấy được hiệu quả tố và tính ổn định hơn khi sử dụng. Điểm yếu:

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

• Phương pháp CTC rất phức tạp dẫn đến chi phí tính toán lớn đới với những ch̃i văn bản dài.

• CTC còn gặp phải các vấn đề liên quan đến vấn đề phân phối đỉnh (the peaky distribution problems) [17] và hiệu quả của nó thường suy giảm khi các mẫu bị lặp lại.

• Nhận dạng chữ ngồi tự nhiên còn kém do thiếu thông tin ngữ cảnh

<b>2.2.5.2 Cơ chế Attention </b>

Trước khi đi vào chi tiết cơ chế Attention. Chúng ta sẽ cùng tìm hiểu qua một cấu trúc mạng có liên quan lớn đến cơ chế này là cấu trúc Sequence-To-Sequence (Seq2Seq) bao gồm phần Encoder và Decoder.

a) Cấu trúc Seq2Seq

Mạng Seq2Seq gồm có 2 phần chính là Encoder và Decoder. Trong đó:

+ Bộ mã hoá (Encoder): Sẽ đảm nhiệm việc trích xuất thông tin từ chuỗi đầu vào và cung cấp nó cho Decoder. Đầu ra là một vector biểu diễn duy nhất mang tồn bộ thơng tin.

<small>+ </small> Bộ giải mã (Decoder): Sẽ thực hiện quá trình sinh chuỗi mới từ những thông tin mà Encoder đưa vào.

<b>Hình 2. 18 Ví dụ Seq2Seq trong dịch máy </b>

Việc xây dựng mạng Encoder và Decoder này rất đa dạng có thể được xây theo nhiều kiểu kiến trúc mạng như RNN, LSTM, GRU, BiLSTM, .... tuỳ thuộc từng bài tốn.

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

<b>Hình 2. 19 Mơ hình mạng Encoder-Decoder </b>

b) Cơ chế Attention

Cơ chế chú ý lần đầu tiên được trình bày trong [16] để cải thiện hiệu suất của hệ thống dịch máy bằng mạng thần kinh và phát triển mạnh mẽ trong nhiều ứng dụng Machine Learning và Deep Learning bao gồm cả nhận dạng chữ viết. Lý do:

+ Mô hình Seq2Seq với RNN thì với một chuỗi thông tin dài mà Encoder phải nén tồn bộ thơng tin vào 1 vector biểu diễn duy nhất, rất khó và sẽ gây ra tình trạng “nghẽn” (bottleneck) làm “quên” thông tin.

+ Tại mỗi time-step thì Decoder chỉ nhìn thấy một vector biểu diễn đầu vào duy nhất mặc dù các phần khác nhau của chuỗi vào có thể tốt hơn.

Mục đích: Attention được ra đời để giải quyết các vấn đề trên. Việc đưa ra các dự đoán, quyết định dựa trên một hoặc nhiều thành phần của thông tin đầu vào (không phải tất cả). Hay nói cách khác là những đặc điểm nổi bật nhất của nó.

Cơ chế: Mô hình Seq2Seq khi áp dụng cơ chế Attention vào sẽ có cấu trúc như Hình 1.20.

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

<b>Hình 2. 20 Mơ hình Seq2Seq áp dụng cơ chế Attention </b>

Các bước thực hiện decoder tại time-step[6]:

+ Bước 1: Nhận vector trạng thái ẩn tại decoder h

<small>t </small>

và vector trạng thái ẩn của h

<small>s.</small>

+ Bước 2: Tỉnh điểm attention. Vói mỗi vector trạng thái ẩn của encoder thì ta cần tính điểm thể hiện sự liên quan với vector trạng thái ẩn h

<small>t</small>

của decoder. Cụ thể, ta sẽ áp dụng một phương trình tính “điểm” attention với đầu vào là vector trạng thái ẩn decoder – h

<small>t</small>

va một vector trạng thái ẩn của encoder ẩn của encoder – h

<small>s</small>

và trả về một giá trị vô hướng score(h

<small>t</small>

, hs).

+ Bước 3: Tính trọng số attention. Áp dụng hàm softmax với đầu vào là điểm attention:

+ Bước 4: Tính toán vector bối cảnh ct là tổng của các trọng số attention nhân với vector trạng thái ẩn của decoder tại time-step tương ứng:

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

Cuối cùng, các vector attention at dùng để đưa ra đầu ra được tính dựa trên vector bối cảnh ct và vector

+ Các loại Attention. Ta có thể chia các loại Attention theo hàm tính score

<b>Hình 2. 21 Một số kiểu Attention </b>

<b>Hình 2. 22 Một số kiểu tính score của Attention </b>

Một số ví dụ Attention trong OCR:

+ Attention OCR:

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

<b>Hình 2. 23 Mơ hình Attention-OCR </b>

+ Mơ hình CRNN + Attention [16], [20]:

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

<b>Hình 2. 24 Mơ hình CRNN + Attention </b>

c) Nhận xét Điểm mạnh:

+ Loại bỏ được sử phụ thuộc về khoảng cách của chuỗi đầu vào và đầu ra.

+ Có thể huấn luyện mô hình ở mức từ thay vì ký tự.

+ Bản chất các mô hình sử dụng cơ chế attention ngầm được hiểu là mô hình ngôn ngữ và thế nên nó có thể kết hợp với các mô hình ngôn ngữ khác.

+ Những năm gần đây, phương pháp tiếp cận dự đoán dựa trên Attention đã vượt trội hơn CTC trong đa số trường hợp.

Điểm yếu:

<small>+ </small> Cần nhiều dữ liệu với vốn từ vựng lớn do đối với những chuỗi văn bản dài, cơ chế attention khó để huấn luyện từ đầu do sư sai khác giữa ảnh ban đầu và output của chuỗi văn bản do hiện tượng mất chú ý (the attention drift phenomenon) [21] Với những chuỗi văn bản dài, module attention căn chỉnh (alignment) nhãn cần khả năng lưu trữ và tính toán nhiều.

+ Mô hình có thể không tốt khi gặp những dạng từ khác biệt lớn với tập huấn luyện. Ngược lại thì CTC ít phụ thuộc hơn vào các mô hình ngôn ngữ và tốt hơn việc alignment từng pixel ký tự nên nó đọc tốt hơn ở các ngôn ngữ tiếng Trung và tiếng Nhật (những ngôn ngữ có lượng ký tự lớn).

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

<b>2.2.5.3 Cơ chế NMS </b>

Cơ chế NMS (tên đầy đủ là Non-Maximum Suppression) thường ban đầu được sử dụng trong các bài toán nhận dạng vật thể (object detection). Bởi thông thường đầu ra của các mô hình này sẽ có rất nhiều các khung xác định (bounding box) cho một đối tượng duy nhất. Nó làm dư thừa thông tin khi mục tiêu của ta chỉ cần xác định một bounding box cho một đối tượng.

<b>Hình 2. 25 Ảnh trước và sau khi áp dụng cơ chế NMS </b>

Đầu tiên ta sẽ đề cập đến khái niệm về IOU (Intersection over Union) trước. IOU là một chỉ số được sử dụng để đo độ chồng lên nhau giữa 2 bounding boxes.

Giả sử ta có 2 boxes với:

• Box 1: tọa độ trái trên là (x

<small>1</small>

, y

<small>1</small>

) tạo độ phải dưới là (x

<small>2</small>

, y

<small>2</small>

) • Box 2: tạo đọ trái trên là (x

<small>3</small>

, y

<small>4</small>

) tạo độ phải dưới là (x

<small>4</small>

, y

<small>4</small>

)

</div>

×