Giới thiệu bài toán
Nhận dạng ký tự quang học (Optical Character Recognition – OCR) là một lĩnh vực nghiên cứu tập trung vào việc chuyển đổi ảnh số của tài liệu viết tay, đánh máy hoặc in ấn thành văn bản mà máy tính có thể hiểu được.
Công nghệ OCR có tác động sâu rộng đến nhiều lĩnh vực, từ việc số hóa tài liệu sách báo, hỗ trợ người khiếm thị, đến tự động hóa phân loại thư tín, xử lý séc ngân hàng và ứng dụng trên các thiết bị di động cá nhân (PDA).
Tại Việt Nam, công nghệ OCR mới tập trung vào nhận dạng ký tự in, trong khi lĩnh vực nhận dạng chữ viết tay vẫn còn là một khoảng trống. Với số lượng lớn tài liệu viết tay cần xử lý và sự phát triển của công nghệ di động, việc nghiên cứu nhận dạng chữ viết tay là một hướng đi đầy tiềm năng.
Quy trình OCR bao gồm nhiều bước như phân tích cấu trúc văn bản, tách dạng, tách ký tự và kiểm tra ngữ nghĩa. Tuy nhiên, bước cơ bản và quan trọng nhất là nhận dạng ký tự đơn lẻ. Đồ án này tập trung vào việc thực hiện bước nhận dạng ký tự viết tay tiếng Việt.
Mô tả bài toán
Bài toán đặt ra là chuyển đổi các ảnh nhị phân của ký tự tiếng Việt viết tay (kích thước 60x80 pixel, có dấu) thành dạng mã hóa Unicode. Các ký tự này được giả định có độ nghiêng và kích thước nằm trong giới hạn chấp nhận được.
Chuẩn kích thước của chữ cái:
- ascender height: Trùng với cạnh trên của ảnh.
- cap height: Trùng với cạnh trên của ảnh.
- median: 1/3 chiều cao ảnh.
- baseline: 4/5 chiều cao ảnh.
- descender height: Trùng với cạnh dưới của ảnh.
- Chiều rộng: Xấp xỉ chiều rộng ảnh.
Chương trình sẽ không xử lý các ký tự có kích thước quá nhỏ, bị nghiêng hoặc biến dạng quá mức, vì chúng được giả định đã được chuẩn hóa ở bước xử lý trước.
Phương pháp giải quyết bài toán
Chương trình sử dụng mô hình mạng neuron nhân tạo và thuật toán lan truyền ngược để giải quyết bài toán nhận dạng ký tự viết tay tiếng Việt.
Cơ sở lý thuyết
Mạng neuron
Mạng neuron nhân tạo là mô hình toán học lấy cảm hứng từ cấu trúc mạng thần kinh, bao gồm các neuron được kết nối để xử lý thông tin. Mô hình này đặc biệt hiệu quả với các bài toán nhận dạng hình ảnh.
Perceptron
Perceptron là đơn vị cơ bản của mạng neuron nhân tạo, thực hiện tổ hợp tuyến tính các đầu vào và đưa ra đầu ra dựa trên một ngưỡng. Quá trình huấn luyện perceptron bao gồm việc điều chỉnh trọng số để phân loại chính xác các ví dụ.
Mạng neuron nhiều lớp và giải thuật lan truyền ngược
Mạng neuron nhiều lớp bao gồm các lớp input, hidden và output. Giải thuật lan truyền ngược (backpropagation) được sử dụng để cập nhật trọng số của mạng, giúp nó học cách phân loại dữ liệu.
Giải quyết bài toán
Chương trình
- Input: Ảnh nhị phân của ký tự cần nhận dạng.
- Output: Ký tự đã nhận dạng và mã Unicode tương ứng.
Khởi tạo mạng neuron
- Lớp input: Gồm 60 đầu vào, được trích xuất từ chuỗi Fourier của ảnh.
- Lớp output: Gồm 16 đầu ra, tương ứng với mã nhị phân của Unicode ký tự.
- Hàm ngưỡng: Hàm sigmoid được lựa chọn do đầu ra là các bit.
Chuẩn bị dữ liệu
Dữ liệu huấn luyện và kiểm tra được thu thập từ các mẫu viết tay thực tế của sinh viên, sau đó được scan, xử lý thành ảnh nhị phân và tách thành các thành phần đầu vào/đầu ra.
Giới thiệu về phần mềm sapphireOCR
Phần mềm sapphireOCR được giới thiệu với hướng dẫn cài đặt và sử dụng.
Các vấn đề phát sinh và đề xuất
Các vấn đề có thể phát sinh bao gồm kết quả nhận dạng thấp và tốc độ huấn luyện chậm, cùng với các đề xuất để khắc phục.
Tài liệu và mã nguồn sử dụng
Liệt kê các tài liệu tham khảo và mã nguồn đã được sử dụng trong đồ án.