Chương 1 Tổng quan 1.1 Giới thiệu đề tài Hiện nay, với sự phát triển của công nghệ, tất cả các dữ liệu đang dần được số hóa và đưa lên lưu trữ đám mây. Điều này giúp cho việc truy cập hay tìm kiếm dữ liệu được tăng tốc đáng kể. Một ví dụ là hiện nay, nhà nước ta đã bắt đầu chuyển qua thẻ căn cước công dân có gắn chip, với mục đích sẽ nhận diện và truy cập dữ liệu nhanh chóng và tiện lợi hơn bao giờ hết. Các nước trên thế giới cũng đã sử dụng thông tin số hóa để tăng tốc và phát triển công việc.
Tuy nhiên, trên phạm vi nước ta, văn bản viết tay vẫn được sử dụng nhiều. Các loại văn bản viết tay có thể kể đến là: hóa đơn, biểu mẫu, đơn viết tay,. Văn bản viết tay tại nước ta vẫn phổ biến do hạn chế về công nghệ ở một số vùng, đồng thời do nhiều người vẫn chưa có đủ kiến thức về công nghệ để sử dụng. Các văn bản viết tay dạng biểu mẫu hiện tại sẽ có thể được trích xuất nội dung để số hóa và đưa lên lưu trữ đám mây.
Tuy nhiên, hiện không có cách nào để tự động hóa việc này, mà phải dùng sức người nhập lại từng thông tin lên máy tính. Do đó, em xin đề xuât một hệ thống có thể nhận diện chữ viết tay tiếng Việt. Đề tài sẽ chú trọng vào huấn luyện một mô hình học máy để nhận diện chữ viết tay tiếng Việt. Đồng thời, xây dựng một luồng xử lý các văn bản viết tay theo mẫu để có thể tự động nhận diện và tiền xử lý văn bản viết tay có mẫu, sau đó nhận diện được các chữ viết tay tiếng Việt trên đó.2 Mục tiêu và phạm vi đề tài Mục tiêu của đề tài là có thể trích xuất chữ viết tay từ các văn bản tài liệu thực tế.
Cụ thể, đề tài sẽ tập trung vào các điểm sau: • Huấn luyện một mô hình nhận diện chữ viết tay tiếng Việt, dựa trên các kỹ thuật học sâu. • Xây dựng luồng để xử lý các văn bản chứa chữ viết tay trên thực tế. Dựa trên mục đích chính của đề tài, phạm vi giới hạn của đề tài sẽ được khoanh vùng như sau: • Các chữ viết tay trên rõ ràng, không quá xấu hoặc quá nhiễu. • Các văn bản đưa vào hoặc là một form văn bản cố định, hoặc là ảnh scan của một câu tiếng Việt được viết thành hàng ngang.
Luận văn tốt nghiệp Trang 10/47 Ho Chi Minh University of Technology Faculty of Computer Science and Engineering • Về form văn bản cố định, sẽ có luồng tiền xử lý văn bản trước khi đưa qua mô hình nhận diện chữ tiếng Việt.3 Đóng góp của đề tài 1.1 Về lý thuyết Về mặt lý thuyết, luận văn đã tìm hiểu về: • Tìm hiểu về các lý thuyết về machine learning dùng cho việc xử lý ảnh và xử lý ngôn ngữ tự nhiên. • Tìm hiểu về các mô hình nhận diện chữ viết tay hiện tại. Một số mô hình có thể kể đến là VGG16 và Transformer. • Tìm hiểu về các mô hình dịch máy như OpenNMT.
• Tìm hiểu về một số mô hình ngôn ngữ tiếng Việt. Qua đó, luận văn đề xuất được một số phương pháp nhận diện chữ viết tay tiếng Việt phù hợp: • Sử dụng mô hình dịch máy để dịch ra các chữ cái không dấu, sau đó sẽ sử dụng mô hình sửa lỗi chính tả để thêm dấu cho câu. • Sử dụng mô hình dịch máy để dịch ra các chữ cái có dấu.2 Về thực tế Về thực tế, luận văn đã đạt được những điều sau: • Huấn luyện được một mô hình nhận diện chữ viết tay tiếng Việt có dấu. • Mô hình được huấn luyện có thể nhận diện chữ viết tay với thời gian cho phép (10s/ảnh).
• Mô hình được huấn luyện có độ chính xác tốt trên những chữ không quá xấu. Độ chính xác đạt được khi test đạt 90%. Song song với mô hình, luận văn cũng viết được một phần mềm demo với khả năng: • Cho phép người dùng đánh dấu các khung có chứa chữ viết tay tiếng Việt. • Có khả năng tách nhiều văn bản pdf để lấy các phần đã đánh dấu chứa chữ viết tay tiếng Việt.
• Nhận diện được chữ viết tay tiếng Việt trên một hoặc nhiều văn bản pdf. Luận văn tốt nghiệp Trang 11/47 Ho Chi Minh University of Technology Faculty of Computer Science and Engineering Chương 2 Kiến thức nền tảng 2.1 Tổng quan về mạng neuron 2.1 Mạng neuron Mạng neuron nhân tạo được lấy cảm hứng và xây dựng nên từ mạng neuron sinh học, vì vậy một mạng neuron nhân tạo cũng bao gồm nhiều neuron đơn lẻ, được gọi là perceptron. Tuy nhiên, để có thể nắm được cách thức hoạt động của một perceptron, trước hết chúng ta cần phải hiểu được một neuron hoạt động như thế nào. Cấu tạo của một neuron được minh họa bằng hình 2.
Một neuron sẽ nhận các tín hiệu điện (mức độ mạnh yếu khác nhau) có chứa thông tin từ các khớp thần kinh (synapse) của một hay nhiều neuron khác thông qua các đuôi gai (dendrit). Các giá trị tín hiệu đầu vào sẽ được tích tụ tại trong thân neuron (cell body). Tại đây, neuron sẽ tiến hành thực hiện một quá trình tính toán bao gồm hai bước. • Bước 1, neuron sẽ thực hiện phép cộng (summation) để lấy tổng giá trị các tín hiệu điện.
• Bước 2, neuron sẽ so sánh tổng tìm được ở Bước 1 với một ngưỡng cụ thể (threshold). Nếu vượt quá ngưỡng trên, neuron sẽ phát ra một tín hiệu điện, tín hiệu này được truyền qua sợi trục (axon) để tới các khớp thần kinh. Lúc này, neuron đó được gọi là đang kích hoạt (activation).1: Hình ảnh minh họa cấu tạo của một neuron sinh học. Luận văn tốt nghiệp Trang 12/47 Ho Chi Minh University of Technology Faculty of Computer Science and Engineering 2.2 Perceptron Một neuron nhân tạo (perceptron) được cấu tạo bao gồm các thành phần như hình 2.2: Hình ảnh minh họa cấu tạo của một perceptron.
Trong đó: • Các giá trị x1 , x2 , ., xn là các tín hiệu đầu vào; • Các giá trị w1 , w2 , ., wn là các trọng số của các nhánh tương ứng truyền giá trị x1 , x2 ,. Giá trị w0 được gọi là giá trị bias, có thể nhận một giá trị bất kỳ khác 0. Bộ trọng số này là cách để perceptron mô tả độ mạnh yếu của tín hiệu điện trong neuron sinh học; • Giá trị a được tính là w0 cộng với tổng trọng số của tập tín hiệu đầu vào (tương ứng với bước summation). Giá trị a này sẽ được dùng để tính toán hàm kích hoạt f t (a); • Kết quả của hàm f t (a) sẽ được so sánh với một ngưỡng (threshsold) nhằm xác định perceptron có được kích hoạt hay không.
Thông thường, giá trị ngưỡng này sẽ được chọn là 0 để tiện trong việc tính toán. Ngoài ra, người ta thường dùng cặp số (1,0) và (1,-1) để đại diện cho trạng thái kích hoạt/không kích hoạt của perceptron; Một điểm lưu ý là perceptron hoạt động dựa trên các phép tính toán số học. Vì vậy, các tín hiệu đầu vào cũng như các trọng số đều cần được biểu diễn dưới dạng các chữ số. Luận văn tốt nghiệp Trang 13/47 Ho Chi Minh University of Technology Faculty of Computer Science and Engineering 2.3 Mạng neuron đa tầng Có thể thấy rằng, một perceptron đã có thể được coi là một mạng neuron, tính toán kết quả dựa trên tín hiệu đầu vào và kết đầu đầu ra là perceptron đó có được kích hoạt hay không.
Trong thực tế, với chỉ một perceptron thì đã có thể giải quyết được bài toán phân loại tuyến tính. Tuy nhiên, đối với các bài toán phức tạp hơn hoặc yêu cầu phân loại phi tuyến (ví dụ như dùng mạng neuron để mô phỏng phép XOR) thì một perceptron không thể đáp ứng được. Để giải quyết vấn đề trên, chúng ta sử dụng nhiều perceptron được sắp xếp thành các tầng khác nhau. Các perceptron ở tầng sau đều nối tới tầng trước (fully-connected).
Một mạng neuron như vậy được gọi là mạng neuron đa tầng [Tiệ17]. Một mạng neuron đa tầng điển hình thường bao gồm: 1. Tầng dữ kiện (input layer): Là tầng đầu tiên của mạng,thể hiện các dữ kiện đầu vào; 2. Tầng kết quả (output layer): Là tầng nằm ở vị trí cuối cùng, thể hiện kết quả đầu ra của mạng; 3.
Tầng ẩn (hidden layer): Là tầng nằm ở giữa, chịu trách nhiệm trong việc tính toán; Lưu ý rằng, một mạng neuron đa tầng chỉ có một tầng dữ kiện và một tầng kết quả. Tuy nhiên có thể có một hoặc nhiều tầng ẩn nằm ở giữa, ví dụ như một mạng neuron với hai tầng dưới đây (hình 2.3: Hình ảnh mạng neuron đa tầng với 2 tầng ẩn. Luận văn tốt nghiệp Trang 14/47 Ho Chi Minh University of Technology Faculty of Computer Science and Engineering 2.2 Mạng neuron tích chập 2.1 Tổng quan Mạng neuron tích chập (Convolutional Neural Network) là một mạng neuron thường xuyên được sử dụng để nhận dạng và phân loại ảnh. Về cơ bản, mạng neuron này cũng giống các mạng neural network khác, nhưng có một vài cải tiến là Convolutional và Pooling 2.2 Convolutional Layer - Tầng tích chập Tầng tích chập là cốt lõi của mạng neuron tích chập.
Tầng này giống với những mạng khác là hidden layer, nhưng khác ở chỗ tầng tích chập là một tập các feature map (ma trận đặc tính) - là một bản scan của input nhưng đã được trích xuất ra các đặc tính cụ thể. Để có thể trích xuất được các đặc tính đấy, tầng tích chập sử dụng kernel (nhân) để quét ma trận input, từ trái qua phải và từ trên xuống dưới. Tại mỗi ô quét được, mạng sẽ nhân tương ứng từng giá trị của input và từng giá trị của kernel và lấy tổng, đưa qua activation function như ReLU, sigmoid,. Kết quả sẽ là một số cụ thể, và tập hợp các số này trên các lần quét sẽ được một feature map.4 minh họa một bước để trích xuất feature map.4: Cách thức lấy feature map bằng kernel Luận văn tốt nghiệp Trang 15/47 Ho Chi Minh University of Technology Faculty of Computer Science and Engineering 2.3 Stride và Padding Hai phương pháp stride và padding này thường được sử dụng để giảm hoặc thay đổi kích cỡ của feature map sau bước convolution.
Stride là khoảng cách giữa hai kernel khi quét. Đối với stride = 1, kernel sẽ quét 2 ô cạnh nhau trên input. Nhưng với stride = 2, kernel sẽ quét ô số 1 và 3, bỏ qua ô số 2, và tương tự nếu stride = 3, kernel sẽ quét ô số 1 và 4, bỏ qua ô 2 và 3. Padding, hay zero-padding, là việc bọc thêm một ô 0 xung quanh input, sau đó mới áp dụng quét.