Chương 1, giới thiệu tổng quan toàn bộ nội dung đề tài “Nhận dạng chữ Ba Na trên văn bản hình ảnh” gồm: mục tiêu và phạm vi đề tài, tính ứng dụng của đề tài, các công trình nghiên cứu liên quan, thách thức của bài toán, Phương pháp nghiên cứu và cấu trúc luận văn. 5 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2. Đôi nét về người Ba Na Người Ba Na (Bahnar; các tên gọi khác: Jơ Lơng, Rơ Ngao, Glar, Tơ Lô, Bơ Nâm, Krem, Roh, Con Kde) là một dân tộc trong số 54 dân tộc tại Ba Na Nam. - [4] Người Ba Na cư trú chủ yếu ở vùng Tây Nguyên và cao nguyên trung phần Ba Na Nam, có dân số xấp xỉ 287 nghìn người năm 2019.
Theo tổng điều tra dân số và nhà ở người Ba Na ở Ba Na cư trú tại 51 trên tổng số 63 tỉnh, thành phố. Người Ba Na cư trú tập trung tại các tỉnh: • Gia Lai (104.997 người, chiếm 11,8% dân số toàn tỉnh và 45,9% tổng số người Ba Na tại Ba Na Nam), • Kon Tum (99.416 người, chiếm 12,5% dân số toàn tỉnh và 43,7% tổng số người Ba Na tại Ba Na Nam), • Bình Định (18.175 người, chiếm 8,0% tổng số người Ba Na tại Ba Na Nam), • Phú Yên (4.145 người, chiếm 1,8 % tổng số người Ba Na tại Ba Na Nam). Người Ba Na có nhiều tên gọi khác nhau theo nơi cư trú hay phong tục tập quán mỗi vùng. Người Ba Na là dân tộc bản địa Ba Na Nam có từ lâu đời tập trung ở các vùng Tây Nguyên điển hình là hai tỉnh Kon Tum, Gia Lai đây được coi là bản địa cũng như địa bàn cư trú của người Ba Na Tại Mỹ có một số người Ba Na nhập cư theo diện HO.
Tiếng Ba Na liên quan đến tiếng Kinh. Người Ba Na nói tiếng Ba Na thuộc Ngữ chi Ba Na là một ngôn ngữ thuộc Ngữ hệ Nam Á (hay còn gọi ngôn ngữ Môn-Khmer), cùng với đó là Ngữ chi Ba Na và Ngữ chi Ba Na-Mường được xếp vào ngôn ngữ Môn-Khmer. Ngôn ngữ chữ BaNa Tiếng Ba Na là ngôn ngữ của người Ba Na, sắc tộc thiểu số ở miền trung Ba Na Nam. – [4] (Theo Bách khoa toàn thư mở Wikipedia) 6 Tiếng Ba Na còn ít được nghiên cứu.
Hiện nó được xếp loại là nhóm Bắc Ba Na, thuộc Ngữ chi Bahnar, Ngữ hệ Nam Á. Ngôn ngữ này có 9 nguyên âm về chất, hơn nữa còn phân biệt độ dài nguyên âm. Năm 1861, chữ Ba Na viết theo mẫu tự la tinh. 1: Bộ bảng chữ cái Tiếng Ba Na (Nguồn tác giả) 2.
Tổng quan về Tesseract Nhận dạng ký tự quang học (tiếng Anh: Optical Character Recognition, viết tắt là OCR), là loại phần mềm máy tính được tạo ra để chuyển các hình ảnh của chữ viết tay hoặc chữ đánh máy (thường được quét bằng máy scanner) thành các văn bản tài liệu. OCR được hình thành từ một lĩnh vực nghiên cứu về nhận dạng mẫu, trí tuệ nhận tạo và thị giác máy tính - [6]. Đây là một công nghệ phổ biến để nhận dạng văn bản bên trong hình ảnh, chẳng hạn như tài liệu và ảnh được quét. Công nghệ OCR được sử dụng để chuyển đổi hầu như bất kỳ loại hình ảnh nào có chứa văn bản viết (đánh máy, viết tay hoặc in) thành dữ liệu văn bản có thể đọc được bằng máy.
Những dữ liệu được sinh ra từ việc nhận dạng ký tự quang học có thể được sử dụng cho rất nhiều việc, ví dụ như: số hóa các văn bản, tài liệu cũ, sách báo, dịch sang các ngôn ngữ khác, hoặc kiểm tra và xác minh vị trí văn bản,… Công nghệ OCR trở nên phổ biến vào đầu những năm 1990 khi cố gắng số hóa các tờ báo lịch sử. Kể từ đó, công nghệ đã trải qua một số cải tiến. Ngày nay, các giải pháp cung cấp độ chính xác OCR gần như hoàn hảo. 7 Một ví dụ về OCR như hình dưới : Hình 2.
2: OCR trên một tờ giấy cũ và chuyển đổi sang văn bản số OCR là một quy trình thường bao gồm một số quy trình phụ để thực hiện chính xác nhất có thể [7]. Các quy trình phụ thường bao gồm: 2. Tiền xử lý hình ảnh • Cục bộ hóa văn bản: phân tách tài liệu các yếu tố (dòng, từ, ký tự .) • Phân đoạn ký tự: xác định các tính năng đặc trưng cho các phần tử được phân cách của một tài liệu. • Nhận dạng ký tự: nhận biết và xác định từng phần tử.
Nó được thực hiện dựa trên các tính năng được trích xuất. • Hậu xử lý: Nó có thể là tự động hoặc thủ công Tất nhiên, các quy trình phụ trong danh sách trên có thể khác nhau, nhưng đây là những bước gần như cần thiết để tiếp cận nhận dạng ký tự tự động. Trong phần mềm OCR, mục đích chính là xác định và nắm bắt tất cả các từ duy nhất bằng các ngôn ngữ khác nhau từ các ký tự văn bản viết. 3: Quá trình OCR (Optical Character Recognition process) 8 Nguồn: [7] 2.
Thư viện Tesseract Tesseract - một công cụ OCR mã nguồn mở đang phổ biến hiện nay. Nó giúp tiết kiệm thời gian và công sức của con người. Nó hoạt động tự động trích xuất văn bản từ một hình ảnh, tồn tại trong nhiều loại phông chữ và bị bóp méo theo mọi cách. Nhận dạng ký tự quang học (OCR), ban đầu được phát triển tại Hewlett Packard từ năm 1984 đến năm 1994, là một nguồn mở (theo Giấy phép Apache 2.0) quang ngoại tuyến công cụ nhận dạng ký tự.
Bristol, lần đầu tiên bắt đầu phát triển Tesseract như một dự án nghiên cứu tiến sĩ trong HP Labs. Năm 1995, Tesseract được gửi đến Đại học Nevada, Les Vegas (UNLV). Đến năm 2005, Tesseract đã được phát hành bởi Hewlett Packard và Đại học Nevada, Las Vegas và hiện tại nó được tài trợ và duy trì một phần bởi Google. Tesseract với phiên bản 3.x khi nó bắt đầu hỗ trợ nhiều định dạng hình ảnh và dần dần bổ sung một số lượng lớn các tập lệnh (ngôn ngữ).x dựa trên các thuật toán thị giác máy tính truyền thống.
Trong vài năm qua, các phương pháp dựa trên Deep Learning đã vượt qua các kỹ thuật máy học truyền thống nhờ một lợi nhuận rất lớn về độ chính xác trong nhiều lĩnh vực của Thị giác máy tính. Nhận dạng chữ viết tay là một trong những ví dụ nổi bật. Đến phiên bản 4.x trở đi, Tesseract đã triển khai một công cụ nhận dạng dựa trên Bộ nhớ Ngắn hạn Dài hạn (LSTM). LSTM là một loại Mạng thần kinh tái diễn (RNN).
9 Hiện tại, Tesseract đã được hỗ trợ trên ba hệ điều hành Linux , của Windows và Mac OS X. Thư viện Tesseract cũng hỗ trợ rất nhiều ngôn ngữ lập trình, như: Java, C/C++, Python, … 2. Cách Tesseract hoạt động Tesseract 3.x phụ thuộc vào quy trình nhiều giai đoạn, ở đó chúng ta có thể phân biệt qua các bước: • Tìm từ • Tìm dòng • Phân loại kí tự Việc tìm kiếm từ được thực hiện bằng cách sắp xếp các dòng văn bản thành các đốm màu, các dòng và vùng được phân tích để tìm cao độ cố định hoặc văn bản theo tỷ lệ. Các dòng văn bản được chia thành các từ khác nhau tùy theo loại khoảng cách ký tự.
Việc nhận dạng sẽ được tiến hành như một quá trình hai lần. Trong lần vượt qua đầu tiên, một nỗ lực được thực hiện để nhận ra lần lượt từng từ. Mỗi từ đạt yêu cầu được chuyển đến bộ phân loại thích ứng làm dữ liệu huấn luyện. Sau đó, trình phân loại thích ứng sẽ có cơ hội nhận dạng chính xác hơn văn bản ở dưới trang (Hình 2.
4: Kiến trúc Tesseract OCR 2. Hạn chế của Tesseract Tesseract hoạt động tốt nhất khi có sự phân đoạn rõ ràng của từ nền khỏi văn bản nền. Trong thực tế, có thể cực kỳ khó khăn để đảm bảo các loại thiết lập này. Có nhiều lý do khiến chúng ta không nhận được đầu ra chất lượng tốt từ Tesseract như việc hình ảnh bị nhiễu trên nền.
Chất lượng hình ảnh (kích thước, độ tương phản, độ sáng) càng 10 tốt thì kết quả nhận dạng càng tốt. Nó đòi hỏi một chút xử lý trước để cải thiện kết quả OCR, hình ảnh cần được chia tỷ lệ thích hợp, có độ tương phản hình ảnh nhiều nhất có thể và văn bản phải được căn chỉnh theo chiều ngang. Tesseract OCR khá mạnh nhưng có những hạn chế sau: • OCR không chính xác như một số giải pháp thương mại có sẵn • Không hoạt động tốt với hình ảnh bị ảnh hưởng bởi hiện vật bao gồm tắc một phần, phối cảnh méo mó và nền phức tạp. • Nó có thể không nhận dạng được (vô nghĩa) và báo cáo đây là đầu ra OCR.
• Không phải lúc nào việc phân tích thứ tự đọc tự nhiên của tài liệu cũng tốt. Ví dụ: nó có thể không nhận ra rằng một tài liệu chứa hai cột và có thể cố gắng nối văn bản giữa các cột. • Bản quét chất lượng kém có thể tạo ra OCR chất lượng kém. Công cụ Pytesseract Để phục vụ cho việc thực hiện bài toán, tôi sẽ sử dụng công cụ chính là Pytesseract.
Pytesseract là một công cụ nhận dạng ký tự quang học (OCR) dành cho ngôn ngữ lập trình Python - [7]. Tức là, nó sẽ nhận ra và “đọc” văn bản được nhúng trong hình ảnh. Pytesseract là một trình bao bọc cho công cụ Tesseract-OCR của Google. Nó cũng hữu ích như một tập lệnh gọi độc lập đối với Tesseract, vì nó có thể đọc tất cả các loại hình ảnh được hỗ trợ bởi thư viện hình ảnh Pillow và Leptonica, bao gồm jpeg, png, gif, bmp, tiff và các loại khác.
Ngoài ra, nếu được sử dụng làm script, Python- tesseract sẽ in văn bản được nhận dạng thay vì ghi nó vào tệp. Thư viện OpenCV OpenCV (Open Source Computer Vision) là một thư viện mã nguồn mở về thị giác máy với hơn 500 hàm và hơn 2500 các thuật toán đã được tối ưu về xử lý ảnh, và các vấn đề liên quan tới thị giác máy. OpenCV được thiết kế một cách tối ưu, sử dụng tối đa sức mạnh của các dòng chip đa li… để thực hiện các phép tính toán trong thời gian thực, nghĩa là tốc độ đáp ứng của nó có thể đủ nhanh cho các ứng dụng thông thường. OpenCV là thư viện được thiết kế để chạy trên nhiều nền tảng khác nhau (cross- platform), nghĩa là nó có thể chạy trên hệ điều hành Window, Linux, Mac, iOS… Thư viện OpenCV ban đầu được sự hỗ trợ từ Intel, sau đó được hỗ trợ bở Willow Garage, một phòng thí nghiệm chuyên nghiên cứu về công nghệ robot.