Thiết kế hệ thống nhận dạng văn bản từ hình ảnh | Báo cáo bài thi giữa kỳ học phần Lập trình nâng cao

Trong cuộc sống hiện đại ngày nay chúng ta đang dần thấy các mô hình AI đang giúp đỡ con người rất nhiều trong cuộc sống, có thể kể đến như robot, trợ lý ảo, … Nhận thấy sự tiến bộ của khoa học và các kỹ thuật tiên tiến đang được áp dụng trong cuộc sống hiện nay, em có ấp ủ một ước mơ nghiên cứu khoa học và trong bài này em sẽ trình bày một phần nhỏ của ứng dụng AI. Kỹ thuật này đã được các nhà khoa học trên thế giới ứng dụng vào mô hình AI để dễ dàng detect ra một đoạn từ một hình ảnh. Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời bạn đón xem.

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ-VIỄN THÔNG
BÁO CÁO BÀI THI GIỮA KỲ
Lập Trình Nâng Cao
Đề Bài:
Thiết Kế Hệ Thống Nhận Dạng Văn Bản Từ Hình Ảnh
***
Trần Văn Bách
20182375
ĐTVT.08-K63
Giảng viên hướng dẫn: TS.Nguyễn Quang Minh
Hà Nội, tháng 6/202
LỜI NÓI ĐẦU
Trong cuộc sống hiện đại ngày nay chúng ta đang dần thấy các mô hình AI đang
giúp đỡ con người rất nhiều trong cuộc sống, có thể kể đến như robot, trợ lý ảo, … Nhận
thấy sự tiến bộ của khoa học và các kỹ thuật tiên tiến đang được áp dụng trong cuộc sống
hiện nay, em có ấp ủ một ước mơ nghiên cứu khoa học và trong bài này em sẽ trình bày
một phần nhỏ của ứng dụng AI. Kỹ thuật này đã được các nhà khoa học trên thế giới ứng
dụng vào mô hình AI để dễ dàng detect ra một đoạn từ một hình ảnh. Trong quá trình làm
dưới sự hướng dẫn của TS. Nguyễn Quang Minh đã giúp em rất nhiều trong bài này em
xin chân thành cảm ơn Thầy.
lOMoARcPSD|47206417
MỤ ỤC LC
LỜI NÓI ĐẦU.........................................................................................................2
CHƯƠNG I..............................................................................................................3
I.I- SETUP...........................................................................................................3
I.I.I – TẢI TÀI NGUYÊN................................................................................3
I.I.II – SETUP MÔI TRƯỜNG........................................................................3
I.I.III – THUẬT TOÁN....................................................................................9
CHƯƠNG II...........................................................................................................10
I- GIẢI THÍCH CODE.......................................................................................10
I.I – IMPORT THƯ VIỆN.............................................................................10
I.II– CLASS TEST.........................................................................................10
I.III – MAIN...................................................................................................11
CHƯƠNG III.........................................................................................................13
I- KẾT LUẬN....................................................................................................13
II- HƯỚNG PHÁT TRIỂN................................................................................13
CHƯƠNG I
I.I- SETUP
I.I.I – TẢI TÀI NGUYÊN
1- T i ECLIPSE IDE và JDK
Trước hết ta cần tải 1 edittor để code và cái em lựa chọn là ECLIPSE IDE, nó
đang được sử dụng rất rộng rãi bởi các lập trình viên java nói riêng và ngôn ngữ lập trình
nói chung. Bởi ứng dụng mà nó mang lại rất lớn cho người lập trình.
Chúng ta đi đến: Eclipse Packages | The Eclipse Foundation - home to a global
community, the Eclipse IDE, Jakarta EE and over 350 open source projects...
Và tải về bản ECLIPSE IDE thích hợp cho máy của mình, và chưa hết để có thể lập trình
java được trên máy tính của mình thì chúng ta cần tải môi trường JDK ở trang: Java
Downloads | Oracle
2- T i th vi n x lý nh OPENCV ư ệ ử ả
Chúng ta cần tải thư viện OPENCV để có thể xử lý các kỹ thuật liên quan đến xử
lý ảnh ở trang: Releases - OpenCV
I.I.II – SETUP MÔI TRƯỜNG
1- Thêm OPENCV vào ECLIPSE IDE
Đầu tiên chúng ta mở ECLIPSE IDE trong lab windown>preferences
Tiếp theo chọn Java > Build Path > User Libraries
Chọn
New và điền tên thư viện (tên bất kỳ) chọn
ok
, trỏ vào thư viện vừa tạo
chọn
Add External JARs... và chọn đến OpenCV vừa tải về (
file.jar
)
lOMoARcPSD|47206417
Tiếp theo chúng ta chọn Native library location và chọn Edit... và trỏ đến
( vd :C:\opencv\build\java\x64)
Cuối cùng apply và chúng ta đã xong bước đẻ thểm OPENCV vào ECLIPSE IDE
2-Thêm OPENCV vào Project
Đầu tiên chúng ta tạo project java trên ECLIPSE IDE và tạo 1 class
Chuột phải vào project > build path > Add libraries…
Chọn User lib >next
lOMoARcPSD|47206417
Và cuối cùng chọn thư viện OPENCV mình vừa thêm vào ECLIPSE IDE.
3-Setup các thành phầần liên quan đêến project
Đầu tiên chúng ta phải tải Tesseract-OCR ở: Releases · nguyenq/tess4j (github.com) tùy
chọn phiên bản phù hợp rồi tải về giải nén.
Tiếp theo chung ta import thư viện Tesseract ở đây, em dùng maven
Chuột phải vào project chọn Configure> Convert to Maven Project
Tiếp theo tìm kiếm đoạn code và chèn vào trong file pom.xml
Tìm kiếm từ khóa “maven tess4j” ví dụ ở bản Tess4j bản 4.4.0 ở trang: Maven
Repository: net.sourceforge.tess4j » tess4j » 4.4.0 (mvnrepository.com)
Copy đoạn code
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>4.4.0</version>
</dependency>
Dán vào file pom.xml và lưu lại.
lOMoARcPSD|47206417
I.I.III – THUẬT TOÁN
1-Mô hình h thônế g
2-Pseudo-code
CHƯƠNG II
I- GIẢI THÍCH CODE
I.I – IMPORT THƯ VIỆN
/*
* import thư vin OPENCV
*/
import static org.opencv.imgproc.Imgproc.cvtColor;
import static org.opencv.imgproc.Imgproc.COLOR_BGR2GRAY;
import static org.opencv.imgcodecs.Imgcodecs.imread;
import static org.opencv.imgcodecs.Imgcodecs.imwrite;
import org.opencv.core.Core;
import org.opencv.core.Mat;
/*
* import thư vin file
*/
import java.io.File;
import java.io.FileWriter;
/*
* import thư vin Tesseract
*/
import net.sourceforge.tess4j.Tesseract; import
net.sourceforge.tess4j.TesseractException; I.IICLASS TEST public class
test { static String SRC_PATH = "D:\\code\\"; // Khai báo biến đường dẫn đến
thư mc cha nh input
static Tesseract tesseract = new Tesseract();
static {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
/*
* đưng dn đến thư mc cha data đtrain cho mô hình
*/
tesseract.setDatapath("C:\\Users\\Admin\\Downloads\\tessdata-
4.1.0\\tessdata-4.1.0\\");
}
String extractString(Mat inputMat) {
String result = " ";
Mat gray= new Mat();
/*
* chuyn đi không gian màu R G B sang nh xám (nh
gray scale)
*/
cvtColor(inputMat,gray,COLOR_BGR2GRAY);
imwrite(SRC_PATH+"gray.png",gray);// ghi nh gray.png vào thư mc
cha nh input
try { // thc thi trong try
/*
* quá trình detect văn bn và lưu vào biến result
* dùng thư vin tesseract và hàm doOCR
* Optical Character Recognition (OCR): nhn dng ký t
quanghọc
*/
result = tesseract.doOCR(new File(SRC_PATH+"gray.png"));
}catch (TesseractException e) {// lỗi thc thi trong catch
e.printStackTrace();
} return
result;
}
lOMoARcPSD|47206417
I.III –
MAIN
public static void main(String[] args) { long start =
System.currentTimeMillis();// khi to biến start để lấy
tgian hin ti theo dng mili giây
Mat origin = imread (SRC_PATH+"TheSV.jpg");// khi to biến để đọc nh
input
String result = new test().extractString(origin); //cho nh vào hàm
train data đdetect
/*
* sủ dụng FileWriter đghi file
*/ try {// thc thi
trong try
FileWriter fw = new FileWriter("D:\\code\\ThongTinSV.txt");
fw.write(result);
fw.close();
} catch (Exception e) {//lỗi thì chy vào trong catch
System.out.println(e);
}
System.out.println("time");// in ra ca sConsole chui " time "
System.out.println(System.currentTimeMillis()-start);//in ra màn hình
tổng thi gian thc hin mô hình
System.out.println("done");// in ra ca sConsole chui "done"
System.out.println("Success...");//in ra ca sConsole chui "Success"
}
}
I.IV – KẾT QUẢ
Thi gian thc hin chương trình mt 2.8 giây khá là nhanh
nh Sinh Viên (input)
output
Output File.txt
CHƯƠNG III
I- KẾT LUẬN
Sau khi hoàn thành bài thi giữa kì em đã học được rất nhiều kiến thức liên quan
đến lập trình java, xử lý ảnh…tuy kết quả chưa được như kỳ vọng nhưng phần nào cũng
đáp ứng được yêu cầu của bài toán. Em cảm ơn Thầy đã giúp đỡ em rất nhiều trong q
trình thực hiện bài Giữa Kỳ em xin chân thành cảm ơn.
II- HƯỚNG PHÁT TRIỂN
Mặc dù kết quả chưa được như mong muốn, nhưng cũng phần nào giúp em hiểu
được vấn đề, trong tương lai em sẽ xây dựng thêm để cho project thực tế hơn và ứng
dụng được vào đời sống hằng ngày.
| 1/12

Preview text:

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ-VIỄN THÔNG
BÁO CÁO BÀI THI GIỮA KỲ
Lập Trình Nâng Cao Đề Bài:
Thiết Kế Hệ Thống Nhận Dạng Văn Bản Từ Hình Ảnh ***
Sinh viên thực hiện: Trần Văn Bách 20182375 ĐTVT.08-K63
Giảng viên hướng dẫn: TS.Nguyễn Quang Minh Hà Nội, tháng 6/202 LỜI NÓI ĐẦU
Trong cuộc sống hiện đại ngày nay chúng ta đang dần thấy các mô hình AI đang
giúp đỡ con người rất nhiều trong cuộc sống, có thể kể đến như robot, trợ lý ảo, … Nhận
thấy sự tiến bộ của khoa học và các kỹ thuật tiên tiến đang được áp dụng trong cuộc sống
hiện nay, em có ấp ủ một ước mơ nghiên cứu khoa học và trong bài này em sẽ trình bày
một phần nhỏ của ứng dụng AI. Kỹ thuật này đã được các nhà khoa học trên thế giới ứng
dụng vào mô hình AI để dễ dàng detect ra một đoạn từ một hình ảnh. Trong quá trình làm
dưới sự hướng dẫn của TS. Nguyễn Quang Minh đã giúp em rất nhiều trong bài này em
xin chân thành cảm ơn Thầy. lOMoARcPSD|47206417
MỤ ỤC LC
LỜI NÓI ĐẦU.........................................................................................................2
CHƯƠNG I..............................................................................................................3
I.I- SETUP...........................................................................................................3
I.I.I – TẢI TÀI NGUYÊN................................................................................3
I.I.II – SETUP MÔI TRƯỜNG........................................................................3
I.I.III – THUẬT TOÁN....................................................................................9
CHƯƠNG II...........................................................................................................10
I- GIẢI THÍCH CODE.......................................................................................10
I.I – IMPORT THƯ VIỆN.............................................................................10
I.II– CLASS TEST.........................................................................................10
I.III – MAIN...................................................................................................11
CHƯƠNG III.........................................................................................................13
I- KẾT LUẬN....................................................................................................13
II- HƯỚNG PHÁT TRIỂN................................................................................13 CHƯƠNG I I.I- SETUP
I.I.I – TẢI TÀI NGUYÊN
1- T i ECLIPSE IDE và JDKả
Trước hết ta cần tải 1 edittor để code và cái em lựa chọn là ECLIPSE IDE, nó
đang được sử dụng rất rộng rãi bởi các lập trình viên java nói riêng và ngôn ngữ lập trình
nói chung. Bởi ứng dụng mà nó mang lại rất lớn cho người lập trình.
Chúng ta đi đến: Eclipse Packages | The Eclipse Foundation - home to a global
community, the Eclipse IDE, Jakarta EE and over 350 open source projects...
Và tải về bản ECLIPSE IDE thích hợp cho máy của mình, và chưa hết để có thể lập trình
java được trên máy tính của mình thì chúng ta cần tải môi trường JDK ở trang: Java Downloads | Oracle
2- T i th vi n x lý nh OPENCV ả ư ệ ử ả
Chúng ta cần tải thư viện OPENCV để có thể xử lý các kỹ thuật liên quan đến xử
lý ảnh ở trang: Releases - OpenCV
I.I.II – SETUP MÔI TRƯỜNG
1- Thêm OPENCV vào ECLIPSE IDE
Đầu tiên chúng ta mở ECLIPSE IDE trong lab windown>preferences
Tiếp theo chọn Java > Build Path > User Libraries
Chọn New và điền tên thư viện (tên bất kỳ) chọn ok , trỏ vào thư viện vừa tạo
chọn Add External JARs... và chọn đến OpenCV vừa tải về ( file.jar ) lOMoARcPSD|47206417
Tiếp theo chúng ta chọn Native library location và chọn Edit... và trỏ đến
( vd :C:\opencv\build\java\x64)
Cuối cùng apply và chúng ta đã xong bước đẻ thểm OPENCV vào ECLIPSE IDE
2-Thêm OPENCV vào Project
Đầu tiên chúng ta tạo project java trên ECLIPSE IDE và tạo 1 class
Chuột phải vào project > build path > Add libraries… Chọn User lib >next lOMoARcPSD|47206417
Và cuối cùng chọn thư viện OPENCV mình vừa thêm vào ECLIPSE IDE.
3-Setup các thành phầần liên quan đêến project
Đầu tiên chúng ta phải tải Tesseract-OCR ở: Releases · nguyenq/tess4j (github.com) tùy
chọn phiên bản phù hợp rồi tải về giải nén.
Tiếp theo chung ta import thư viện Tesseract ở đây, em dùng maven
Chuột phải vào project chọn Configure> Convert to Maven Project
Tiếp theo tìm kiếm đoạn code và chèn vào trong file pom.xml
Tìm kiếm từ khóa “maven tess4j” ví dụ ở bản Tess4j bản 4.4.0 ở trang: Maven
Repository: net.sourceforge.tess4j » tess4j » 4.4.0 (mvnrepository.com) Copy đoạn code net.sourceforge.tess4j tess4j 4.4.0
Dán vào file pom.xml và lưu lại. lOMoARcPSD|47206417 I.I.III – THUẬT TOÁN
1-Mô hình h thônế gệ 2-Pseudo-code CHƯƠNG II I- GIẢI THÍCH CODE
I.I – IMPORT THƯ VIỆN
/* * import thư viện OPENCV */
import static org.opencv.imgproc.Imgproc.cvtColor;
import static org.opencv.imgproc.Imgproc.COLOR_BGR2GRAY;
import static org.opencv.imgcodecs.Imgcodecs.imread;
import static org.opencv.imgcodecs.Imgcodecs.imwrite;
import org.opencv.core.Core;
import org.opencv.core.Mat; /* * import thư viện file */ import java.io.File;
import java.io.FileWriter; /*
* import thư viện Tesseract */ import
net.sourceforge.tess4j.Tesseract; import
net.sourceforge.tess4j.TesseractException; I.II– CLASS TEST public class
test { static String SRC_PATH = "D:\\code\\"; // Khai báo biến đường dẫn đến thư mục chứa ảnh input
static Tesseract tesseract = new Tesseract(); static {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME); /*
* đường dẫn đến thư mục chứa data để train cho mô hình */
tesseract.setDatapath("C:\\Users\\Admin\\Downloads\\tessdata- 4.1.0\\tessdata-4.1.0\\"); }
String extractString(Mat inputMat) { String result = " "; Mat gray= new Mat(); /*
* chuyển đổi không gian màu R G B sang ảnh xám (ảnh gray scale) */
cvtColor(inputMat,gray,COLOR_BGR2GRAY);
imwrite(SRC_PATH+"gray.png",gray);// ghi ảnh gray.png vào thư mục chứa ảnh input
try { // thực thi trong try /*
* quá trình detect văn bản và lưu vào biến result
* dùng thư viện tesseract và hàm doOCR
* Optical Character Recognition (OCR): nhận dạng ký tự quanghọc */
result = tesseract.doOCR(new File(SRC_PATH+"gray.png"));
}catch (TesseractException e) {// lỗi thực thi trong catch e.printStackTrace(); } return result; } lOMoARcPSD|47206417 I.III – MAIN
public static void main(String[] args) { long start =
System.currentTimeMillis();// khởi tạo biến start để lấy
tgian hiện tại theo dạng mili giây
Mat origin = imread (SRC_PATH+"TheSV.jpg");// khởi tạo biến để đọc ảnh input
String result = new test().extractString(origin); //cho ảnh vào hàm train data để detect /*
* sủ dụng FileWriter để ghi file */ try {// thực thi trong try
FileWriter fw = new FileWriter("D:\\code\\ThongTinSV.txt"); fw.write(result); fw.close();
} catch (Exception e) {//lỗi thì chạy vào trong catch
System.out.println(e); }
System.out.println("time");// in ra cửa sổ Console chuỗi " time "
System.out.println(System.currentTimeMillis()-start);//in ra màn hình
tổng thời gian thực hiện mô hình
System.out.println("done");// in ra cửa sổ Console chuối "done"
System.out.println("Success...");//in ra cửa sổ Console chuối "Success" } } I.IV – KẾT QUẢ
Thời gian thực hiện chương trình mất 2.8 giây khá là nhanh ảnh Sinh Viên (input) output Output File.txt CHƯƠNG III I- KẾT LUẬN
Sau khi hoàn thành bài thi giữa kì em đã học được rất nhiều kiến thức liên quan
đến lập trình java, xử lý ảnh…tuy kết quả chưa được như kỳ vọng nhưng phần nào cũng
đáp ứng được yêu cầu của bài toán. Em cảm ơn Thầy đã giúp đỡ em rất nhiều trong quá
trình thực hiện bài Giữa Kỳ em xin chân thành cảm ơn. II- HƯỚNG PHÁT TRIỂN
Mặc dù kết quả chưa được như mong muốn, nhưng cũng phần nào giúp em hiểu
được vấn đề, trong tương lai em sẽ xây dựng thêm để cho project thực tế hơn và ứng
dụng được vào đời sống hằng ngày.