1
ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC SƯ PHẠM
----------
KHÓA LUẬN TỐT NGHIỆP
Đề tài
NHẬN DIỆN BIỂU THỨC TOÁN
VIẾT TAY
GVHD: TS. Tôn Thất Tú
Người thực hiện: Nguyễn Thu Thảo
Lớp: 18ST
Khoa: Toán
Đà Nẵng, tháng 12/2021
2
LỜI CẢM ƠN
Trong suốt quá trình viết khóa luận này, tôi đã nhận được nhiều sự hỗ trợ và
giúp đỡ. Trước tiên, tôi xin gửi lời cảm ơn chân thành đến Tiến sĩ Tôn Thất Tú,
người đã trực tiếp hướng dẫn, tận tình chỉ bảo và tạo mọi điều kiện để tôi học tập
và hoàn thành bài khóa luận. Cảm ơn thầy đã cho tôi những góp ý và phản hồi sâu
sắc giúp tôi hoàn thành bài khóa luận tốt hơn.
Tôi cũng xin gửi lời cảm ơn chân thành nhất đến tất cả các thầy cô đã tận
tình dạy bảo tôi trong suốt thời gian học tập tại khoa Toán.
Đồng thời, tôi cũng gửi lời cảm ơn đến các bạn trong lớp 18ST đã nhiệt tình
giúp đỡ tôi trong quá trình học tập tại lớp.
Trong quá trình làm khóa luận, tôi đã cố gắng hết sức để hoàn thiện qua từng
giai đoạn làm bài, vì còn chưa có nhiều kinh nghiệm, kiến thức chuyên môn và
thời gian nghiên cứu còn hạn chế, nên bài khóa luận của tôi không tránh khỏi việc
có nhiều thiếu sót. Kính mong nhận được sự góp ý và chỉ bảo từ quý thầy cô và
các bạn để bài khóa luận được hoàn thiện hơn.
Tôi xin chân thành cảm ơn!
Đà Nẵng, ngày 30 tháng 12 năm 2021
Sinh viên
Nguyễn Thu Thảo
3
MỤC LỤC
MỞ ĐẦU ............................................................................................................................. 4
CHƯƠNG 1. KIẾN THỨC CƠ SỞ .................................................................................. 8
1.1. NGÔN NGỮ LẬP TRÌNH PYTHON ................................................................................ 8
1.1.1
Giới thiệu ngôn ngữ Python ............................................................................8
1.1.2
Các thư viện được sử dụng ..............................................................................8
1.2. TỔNG QUAN VỀ QUY TRÌNH NHẬN DIỆN .................................................................... 9
1.3. CÔNG CỤ NHẬN DIỆN CỦA MA (MICROSOFT AZURE) ............................................ 12
1.3.1.
Giới thiệu .......................................................................................................12
1.3.2.
Chức năng của công cụ MA ..........................................................................12
CHƯƠNG 2: XÂY DỰNG CHƯƠNG TRÌNH VÀ KẾT QUẢ THỰC HIỆN ......... 15
2.1 MÔ TẢ VỀ NGUYÊN TẮC HOẠT ĐỘNG ...................................................................... 15
2.2 Dữ liệu ...................................................................................................................15
2.3 CHƯƠNG TRÌNH....................................................................................................... 16
2.3.1
Các hàm, thủ tục quan trọng ..........................................................................16
2.3.2
Chương trình chính ........................................................................................16
2.4 KẾT QUẢ ................................................................................................................. 18
2.4.1
Nhận diện các phép toán số học chữ viết tay ................................................18
2.4.2
Nhận diện các phép toán chữ in ....................................................................21
NHẬN XÉT ....................................................................................................................... 21
KẾT LUẬN ....................................................................................................................... 22
4
MỞ ĐẦU
1. Đặt vấn đề
Những năm gần đây, hầu hết các lĩnh vực trên thế giới đang được số hóa với tốc
độ rất nhanh. Trước sự tác động của cuộc cách mạng công nghiệp 4.0, số lượng tài liệu
khoa học là vô kể và cộng đồng khoa học ngày phát hiện nhiều kiến thức hơn. Việc
thông tin được số hóa là rất quan trọng để tìm kiếm các tài liệu khoa học. Vấn đề đặt ra
cho chúng ta hiện nay là chuyển đổi các văn bản giấy sang định dạng kỹ thuật số số để
dễ dàng tra cứu.
Ký hiệu Toán học một nguồn thông tin thiết yếu trong nhiều ngành trong xã hội và
được sử dụng trên toàn thế giới. Nhận dạng các biểu thức toán học nhằm mục đích phát
triển các hệ thống có thể tự động hiểu ký hiệu toán học do con người cung cấp dưới dạng
bản in hoặc viết tay. Tuy nhiên, việc nhận diện trở nên khó khăn do sự phức tạp về màu
ký tự, phông chữ, kích thước và phong cách viết. Việc nhận diện được biểu thức Toán
học không chỉ giúp nhập thông tin toán học vào máy tính từ hình ảnh chụp chứa phương
trình hoặc viết tay vào thiết bị điện tử mà còn giúp tìm kiếm được lượng lớn các nguồn
tài liệu khoa học bằng việc truy hồi các biểu thức, công thức có liên quan.
Trong cuộc chạy đua phát triển cộng nghệ trí tuệ nhân tạo, đã và đang có rất nhiều
công ty cung cấp dịch vụ nhận diện văn bản viết tay cho người dùng sử dụng. Trong đó
có thể kể đến một số công ty lớn như Google với dịch vụ API Cloud Vision, Microsoft
Azure với dịch vụ Cognitive, Amazon với Rekognition, … Nhờ có những thông tin mà
người dùng cung cấp, hệ thống có thể ghi nhớ và cải tiến công nghệ để nâng cao độ
chính xác. Trong khuôn khổ bài khóa luận, tôi sẽ đề cập đến tính năng nhận diện văn
bản viết tay mà Microsoft ra mắt cho người dùng.
2. Mục đích nghiên cứu
Thực hiện đề tài “Nhận diện công thức toán viết tay”, chúng tôi hướng đến mục
đích rèn luyện khả năng tiếp cận, tìm hiểu và ứng dụng một công nghệ trong việc dạy
và học bộ môn Toán học. Khóa luận nhằm đánh giá tính chính xác và hiệu quả của dịch
vụ nhận diện chữ viết do Microsoft cung cấp. Chúng tôi hy vọng rằng điều này sẽ là
nguồn thông tin đáng tin cậy để hướng đến tiếp tục cải tiến thuật toán để nhận dạng biểu
thức toán học.
3. Đối tượng nghiên cứu
5
Phương pháp nhận diện biểu thức Toán học và công cụ nhận diên của Microsoft.
4. Phạm vi nghiên cứu
Biểu thức Toán học khi nhập vào máy được phân làm hai loại: trực tuyến và ngoại
tuyến. Biểu thức Toán học được gọi là dữ liệu trực tuyến khi người dùng “viết” bằng
bút điện tử hoặc chuột, dữ liệu sẽ được máy tính coi như chuỗi các điểm trên màn hình.
Mặt khác, biểu thức được gọi là ngoại tuyến khi nó hiển thị dưới dạng hình ảnh, chẳng
hạn như một ma trận các điểm ảnh (pixel).
Hình 1: Dữ liệu trực tuyến
Hình 2: Dữ liệu ngoại tuyến
Đề tài nghiên cứu các vấn đề trong việc nhận diện biểu thức Toán học kiểu chữ in
và biểu thức Toán học viết tay dạng dữ liệu ngoại tuyến. Các dữ liệu này được máy quét
trực tiếp từ hình ảnh đầu vào.
Nghiên cứu, đánh giá tính chính xác và thử nghiệm các ví dụ minh họa để hoàn
thành việc nghiên cứu và khả năng ứng dụng của dịch vụ nhận diện văn bản do Microsoft
cung cấp vào việc dạy và học bộ môn Toán.
5. Phương pháp nghiên cứu
Khóa luận được nghiên cứu dựa trên các phương pháp:
-
Sưu tầm các tài liệu liên quan đến đề tài bao gồm các tài liệu bằng tiếng Việt
cũng như bằng tiếng Anh.
-
Đọc dịch, tổng hợp, trình bày lại theo chủ đề, bổ sung các chi tiết, các ví dụ
minh họa.
6
-
Xây dựng chương trình để sử dụng và thử nghiệm dịch vụ nhận diện của
Microsoft Azure.
-
Trao đổi, thảo luận với cán bộ hướng dẫn.
6. Lịch sử vấn đề nghiên cứu
Đã có rất nhiều nghiên cứu trước về nhận diện biểu thức Toán học. Nhận diện
biểu thức thường gồm hai giai đoạn chính: nhận dạng ký tự và phân tích cấu trúc. Hình
3 mô tả quy trình nhận diện một phương trinh bậc hai.
Nhập dữ liệu
2
Nhận dạng
ký tự/ký hiệu
3
+
4
=
0
Phân tích cấu
trúc
Xuất kết quả
3x 2 4 x 0
Hình 3: Sơ đồ quy trình nhận diện một phương trình bậc hai
Nhận dạng được các ký tự, ký hiệu Toán học được nghiên cứu rất nhiều trong vòng
hơn ba thập kỷ qua. Tuy nhiên, việc phân tích cấu trúc biểu thức Toán học vẫn còn hạn
chế, nhưng đã có một số báo cáo đưa ra kết quả tương đối chính xác.
Trong lĩnh vực trí tuệ nhân tạo, rất nhiều công ty ra mắt dịch vụ đáp ứng nhu cầu
sử dụng của người dùng, đặc biệt là dịch vụ nhận diện văn bản. Các công ty lớn có thể
kể đến như Google, Amazon và Microsoft. Mỗi dịch vụ đều có những ưu và nhược điểm
nhất định, tuy nhiên trong khuôn khổ bài nghiên cứu này chúng tôi chỉ đề cập đến thử
nghiệm bằng dịch vụ do Microsoft cung câp vì tính chính xác với các biểu thức Toán
học.
7. Ý nghĩa lý luận và thực tiễn của đề tài
7
Sử dụng ngôn ngữ Python để xây dựng mô hình nhận diện ký hiệu toán học là sản
phẩm mới giúp số hóa thông tin trong quá trình dạy học môn Toán. Sản phẩm nhằm đáp
ứng yêu cầu đặt ra giáo dục trước cuộc cách mạng 4.0.
-
Thực hiện và quản lý các hệ thống thông tin quản lý giáo dục trực tuyến và cơ
sở dữ liệu của ngành.
-
Yêu cầu giáo viên, sinh viên và học sinh trang bị kiến thức để thích ứng yêu
cầu số hóa của thời đại.
-
Nghiên cứu, tìm ra các giải pháp nhằm đưa các ứng dụng công nghệ mới vào
quá trình dạy học giúp giáo viên cũng như học sinh tiết kiệm thời gian, công sức trong
quá trình dạy học; và đặc biệt mở rộng khả năng tương tác với các thiết bị số của học
sinh, sinh viên bằng việc tăng năng lực tiếp cận, xử lý, và điều tiến thông tin để tạo thông
tin mới của người học.
8. Cấu trúc đề tài
Ngoài các phần mở đầu, kết luận và kiến nghị, tài liệu tham khảo và phụ lục; nội
dung chính của đề tài được trình bày trong 2 chương, cụ thể:
Mở đầu
Chương 1. Kiến thức cơ sở
Chương 2. Xây dựng chương trình và kết quả thực hiện
Nhận xét
Kết luận
8
CHƯƠNG 1. KIẾN THỨC CƠ SỞ
1.1.
Ngôn ngữ lập trình Python
1.1.1
Giới thiệu ngôn ngữ Python
Python đã được Guido van Rossum thai nghén vào những năm 1980 tại Trung tâm
Toán học – Tin học (Centrum Wiskunde & Informatica, CWI) ở Hà Lan như là một
ngôn ngữ kế tục ngôn ngữ ABC – một ngôn ngữ được lấy cảm hứng từ SETL, có khả
năng xử lí ngoại lệ và giao tiếp với hệ điều hành Amoeba. Nó bất đầu được triển khai
vào tháng Mười Hai năm 1989.
Python là một ngôn ngữ có hình thái rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho
người mới bắt đầu học lập trình. Cấu trúc của Python còn cho phép người sử dụng viết
mã lệnh với số lần gõ phím tối thiểu nhất. Python là một ngôn ngữ lập trình đơn giản
nhưng lại rất hiệu quả. Bên cạnh đó, Python là một ngôn ngữ có tính hướng đối tượng
cao, và được sử dụng rất nhiều cho các bài toán xử lý với dữ liệu lớn. Với ngôn ngữ lập
trình Python là một ngôn ngữ lập trình đa năng với nhiều ưu điểm vượt trội, và đang
đứng ở vị trí số một trong top các ngôn ngữ lập trình hiện nay.
1.1.2
Các thư viện được sử dụng
* Thư viện azure.cognitiveservices.vision.computervision
Dịch vụ Computer Vision cung cấp cho các nhà phát triển quyền truy cập vào các
thuật toán nâng cao để xử lý hình ảnh và trả lại thông tin. Các thuật toán của Thị giác
máy (Computer Vision) cung cấp tính năng phân tích nội dung của hình ảnh theo nhiều
cách khác nhau, tùy thuộc vào các đặc điểm hình ảnh mà người sử dụng quan tâm.
Trong khuôn khổ bài khóa luận, chúng tôi sử dụng tính năng Thị giác (Computer
Vision) trong ứng dụng của mình để trích xuất văn bản từ hình ảnh.
* Thư viện time
Thư viện time cung cấp các chức năng khác nhau liên quan đến thời gian
* Thư viện matplotlib
Mathplotlib là một thư viện toàn diện để tạo hình ảnh trực quan tĩnh, động và tương
tác bằng Python
9
* Thư viện PIL (pillow)
PIL là một thư viện hình ảnh cho ngôn ngữ lập trình Python, có khả năng xử lý
nhiều loại hình ảnh (BMP, DIB, EPS, GIF, ICO, IM, JPEG, JPG, JPEG 2000, MSP,
PCX, PNG, PPM, SGI, TGA, TIFF, WebP , …) và các chế độ hình ảnh như RGB,
RGBA, B&W và đơn sắc.
* Thư viện os
Mô-đun này cung cấp một cách linh hoạt để sử dụng chức năng phụ thuộc vào hệ
điều hành.
* Thư viện numpy
NumPy là gói cơ bản cho tính toán khoa học bằng Python. Nó là một thư viện
Python cung cấp đối tượng mảng đa chiều, các đối tượng khác nhau và một loạt các quy
trình cho các hoạt động nhanh trên mảng, bao gồm toán học, logic, thao tác hình dạng,
sắp xếp, lựa chọn, I / O , các phép biến đổi Fourier rời rạc, đại số tuyến tính cơ bản, các
phép toán thống kê cơ bản, mô phỏng ngẫu nhiên và hơn thế nữa.
1.2. Tổng quan về quy trình nhận diện
Quy trình nhận diện được phân làm ba giai đoạn chính: phân đoạn ký hiệu, nhận
dạng ký hiệu và phân tích cấu trúc. Phân đoạn ký hiệu là bước xác định những nét nào
tạo thành một ký hiệu. Nhận dạng ký hiệu nhằm định danh chúng. Sau khi có được danh
sách đối tường bao gồm những thông tin như ký tự đó là gì, kích cỡ, vị trí, người ta phân
tích cấu trúc để tìm ra mối quan hệ phân cấp bên trong biểu thức.
1.2.1. Phân loại dữ liệu
Các biểu thức được viết tay thường khó nhận diện chính xác vì nét bút của mỗi
người rất khác nhau. Các biểu thức Toán học dạng chữ in thường dễ nhận diện hơn vì
chúng tương đối đồng đều với nhau. Hình 1 và hình 2 là ví dụ về sự khác nhau của một
phương trình viết tay và phương trình được soạn thảo trên phần mềm.
Hình 4. Hình ảnh công thức toán viết tay
10
( 3 3x 2 7)3 ( 3 7 4 x )3
Hình 5. Hình ảnh công thức toán trên các phần mềm soạn thảo
1.2.2.
Nhận diện ký tự/ký hiệu
1.2.1.
Phân đoạn ký hiệu
Người ta thường nhóm các nét thành phần lại với nhau rồi nhận dạng từng ký tự
độc lập. Tuy nhiên, có một vài trường hợp phức tạp, ví dụ dấu căn thức “
” có chứa
biểu thức con bên trong dấu căn, gây khó khăn trong việc phân đoạn các nét để tiến hành
nhận dạng.
Bước phân đoạn ký hiệu này phụ thuộc vào ngữ cảnh rất nhiều. Hình 6 là một ví
dụ về tính đa trị của một biểu thức nếu không xét ngữ cảnh đặt ra trước đó.
Hình 6: Tính đa trị trong việc phân đoạn và nhóm các nét lại với nhau
1.2.2.
Nhận dạng ký tự/ký hiệu
Có nhiều tập ký hiệu và ký tự được dùng trong việc biểu diễn một biểu thức Toán
học, gồm những ký tự cơ bản, và phần còn lại gồm những ký hiệu liên kết, kết hợp, toán
tử. Hơn nữa, tùy vào ngữ cảnh xuất hiện mà ký hiệu mang những nghĩa khác nhau.
Các con số 0 9 , chữ cái Latin (a z ), ( A Z ) , chữ cái Hy Lạp được dùng để
đặt tên biến hoặc hàm:
Ví dụ: 20 2 , 2x , log x , f ( ), cos x ,
11
Ký hiệu liên kết là những ký hiệu mà đi kèm với số hoặc các thành phần khác
chẳng hạn như dấu
1 n
x , , x, xdx ,… Ký hiệu kết hợp là những dấu ngoặc biểu thị thứ
x i 1
tự thực hiện phép toán
Các toán tử chẳng hạn như , ,*, /,...
Dựa vào tập dữ liệu sẵn có, người ta thiết kế thuật toán nhận dạng được ký tự, ký
hiệu xuất hiện. Một vài cách phương pháp được đề xuất như sau:
Đối sánh mẫu: sử dụng công nghệ thị giác máy (Machine vision) để xác định
một phần hình ảnh có khớp với hình ảnh tham chiếu (mẫu) đã cho hay không.
Thống kê: nhiều nghiên cứu được thực hiện bởi phương pháp thống kê truyền
thống và hệ thống Nơ-ron thần kinh nhân tạo.
Phương pháp
Công trình của
Đối sánh mẫu truyền thống
Chou1
Okamoto2
Đối sánh mẫu dựa trên khoảng cách Hausdoff
Miller, Viola3
Chiết nét chính và xác định bằng hệ thống Nơ-ron thần kinh Ha4
nhân tạo
Xác định thống qua nét chính và những vùng lân cận của nó Fateman và Tokuyasu5
Lee6
Bảng 1: Một vài công trình nghiên cứu của các nhà khoa học trong phương pháp nhận
diện ký tự
1
P.A.Chou, Recognition of equations using a two-dimensional stochastic context-free grammar, Proc. Visual
Communications and Image Processing IV, p. 852-863, Philadelphia.
2
M.Okamoto và B.Miao, Recognition of mathematical expression by using the layout structure of symbols, Proc.
ICDAR’91, p. 242-250
3
E.G. Miller và P.A. Viola, Ambiguity and constraint in mathematical expression regconition, Proceedings of the
Fifteenth National Conference on Aitificial Intelligence, p. 784-791, Wiconsin, 1998
4
J.Ha, R.M.Haralick và I.T.Phillips, Understanding mathematical expression from document images, ICDAR’95,
p. 956-959
5
R.J.Fateman và T.Tokuyasu, Optical character recognition and parsing of typeset mathematics, Journal of Visual
Communication and Image Representation, 1996
6
H.-J. Lee và M.-C.Lee, Understanding mathematical expression in printed document, Pro. of Second
International Conference on Document Analysis and Recognition, p. 1084-1087, Tsukyba Science City, Nhật
Bản, 1993
12
1.2.3.
1.3.
Phân tích cấu trúc
Công cụ nhận diện của MA (Microsoft Azure)
1.3.1. Giới thiệu
Microsft Azure cung cấp dịch vụ nhận diện hình ảnh giúp người dùng tăng khả
năng khám phá nội dung với các tính năng tự động trích xuất văn bản, phân tích video
trong thời gian thực bằng cách áp dụng khả năng thị giác (Computer Vision), một phần
của Dịch vụ nhận diện Azure. Sử dụng xử lý dữ liệu trực quan để gắn nhãn nội dung với
các đối tượng và khái niệm, trích xuất văn bản, tạo mô tả hình ảnh, kiểm duyệt nội dung
và hiểu chuyển động của con người trong không gian vật lý. Công ty đã cố gắng đơn
giản hóa các bước để người dùng sử dụng thuận lợi hơn.
1.3.2. Chức năng của công cụ MA
Dịch vụ Computer Vision của Microsoft Azure (MA) là một dich vụ AI xử lý nội
dung trong các hình ảnh hoặc video. Người dùng có quyền truy cập vào các thuật toán
nâng cao để trích xuất thông tin từ hình ảnh hoặc video cung cấp.
Trong khuôn khổ nội dung bài Khóa luận, tôi chỉ đề cập đến Azure Cognitive
Services (ACS) nhằm nhận diện thông tin dạng văn bản in hoặc văn bản viết tay từ hình
ảnh (JPG, PNG) hoặc tài liệu. Công cụ này sử dụng model với nền tảng deep-learning.
Công nghệ Optical Character Recognition (OCR) của Microsoft hỗ trợ một số
ngôn ngữ và nhận diện được nhiều cách viết khác nhau. Cả chữ viết tay và chữ in đều
có thể được nhận diện. Chữ in thường được nhận diện chính xác hơn so với chữ viết tay
vì chúng đều đặn hơn. Chữ viết tay thường bị dính vào nhau và phong cách viết mỗi
người rất đa dạng. Tuy nhiên, hiện nay dịch vụ MA vẫn chưa hỗ trợ tiếng Việt và các
ký hiệu Toán học phức tạp.
Nguyên tắc hoạt động:
Kết quả OCR tạo ra thứ bậc của vùng / dòng / từ. Kết quả bao gồm văn bản, hộp
giới hạn cho các vùng, dòng và từ.
13
- textAngle
Góc, tính bằng radian, của văn bản được phát hiện so với hướng ngang hoặc dọc
gần nhất. Sau khi xoay hình ảnh đầu vào theo chiều kim đồng hồ theo góc này, các dòng
văn bản được nhận dạng sẽ trở thành ngang hoặc dọc. Kết hợp với thuộc tính định hướng,
nó có thể được sử dụng để phủ các kết quả nhận dạng chính xác lên hình ảnh gốc, bằng
cách xoay hình ảnh gốc hoặc kết quả nhận dạng theo một góc thích hợp xung quanh tâm
của hình ảnh gốc. Nếu góc không thể được phát hiện một cách chắc chắn, thì thuộc tính
này không có. Nếu hình ảnh chứa văn bản ở các góc khác nhau, chỉ một phần của văn
bản sẽ được nhận dạng chính xác.
- Sự định hướng
Định hướng của văn bản được nhận dạng trong hình ảnh. Giá trị (lên, xuống, trái
hoặc phải) đề cập đến hướng mà phần trên của văn bản được nhận dạng hướng về phía
trên, sau khi hình ảnh đã được xoay quanh tâm của nó theo góc văn bản được phát hiện
(xem thuộc tính textAngle).
- Ngôn ngữ
Mã ngôn ngữ BCP-47 (do người dùng cung cấp hoặc tự động phát hiện) của văn
bản được phát hiện trong hình ảnh.
- Vùng
Một mảng các đối tượng, trong đó mỗi đối tượng đại diện cho một vùng văn bản
được nhận dạng. Một vùng bao gồm nhiều dòng (ví dụ: một cột văn bản trong tài liệu
nhiều cột).
- Dòng
Một mảng các đối tượng, trong đó mỗi đối tượng đại diện cho một dòng văn bản
được nhận dạng từ.
- BoundingBox
14
Hộp giới hạn của một vùng, dòng hoặc từ được nhận dạng, tùy thuộc vào đối
tượng chính. Bốn số nguyên đại diện cho tọa độ x của cạnh trái, tọa độ y của cạnh trên,
chiều rộng và chiều cao của hộp giới hạn, trong hệ tọa độ của hình ảnh đầu vào, sau khi
nó đã được xoay quanh tâm của nó theo góc văn bản được phát hiện (xem thuộc tính
textAngle), với điểm gốc ở góc trên cùng bên trái và trục y hướng xuống.
- Chữ
Giá trị chuỗi của một từ được xác định.
15
CHƯƠNG 2: XÂY DỰNG CHƯƠNG TRÌNH VÀ KẾT QUẢ
THỰC HIỆN
2.1 Mô tả về nguyên tắc hoạt động
B1. Scan tài liệu:
Những tài liệu này được tải lên như thể một tệp hình ảnh. Với PDF, chúng sẽ được
chuyển thành file PNG, JPG. Khi chạy Chương trình Python, ảnh, tài liệu sẽ được quét
để chuyển thành thông tin máy tính hiểu được.
B2. Xử lý
File dữ liệu sẽ đi qua tiền xử lý được cấu hình cho từng khách hàng. Mục đích của
việc này là làm cho những tài liệu này sẵn sàng quá trình OCR. OCR chuyển đổi ký tự
có trong hình ảnh thành hệ nhị phân văn bản được mã hóa mà sau này được đưa ra để
nhận dạng ký tự và kiểm tra ngữ nghĩa.
Thông tin mã hoá được sắp xếp rồi đưa vào gửi đến Azure thông qua giao diện
lập trình ứng dụng (Application Programming Interface) viết tắt là API.
B3: Xuất văn bản
API cung cấp khả năng cung cấp khả năng truy xuất đến một tập các hàm nhận
diện của Microsoft Azure. Sau đó, thông qua thuật toán Microsoft Azure trích xuất thành
văn bản.
Đầu vào hình
ảnh
Nhận diện ký tự,
Xử lý thông tin
Xuất thành
văn bản
2.2 Dữ liệu
- Mô tả các yêu cầu: Hình ảnh đầu vào cần rõ ràng, ít thông tin nhiễu. Chất lượng
hình ảnh đầu vào ảnh hưởng lớn đến kết quả đầu ra.
Các định dạng tệp được hỗ trợ: JPEG, PNG, BMP, PDF và TIFF
16
Đối với các tệp PDF và TIFF, tối đa 2000 trang (chỉ hai trang đầu tiên cho cấp
miễn phí) được xử lý.
Kích thước tệp phải nhỏ hơn 50 MB (6 MB cho cấp miễn phí) và kích thước ít
nhất 50 x 50 pixel và nhiều nhất 10000 x 10000 pixel.
- Một số hạn chế: Nếu công thức những kiểu viết dính nét, thiếu hoặc thừa nét quá
nhiều thì kết quả nhận diện sẽ không chính xác.
Hình ảnh minh hoạ cho dữ liệu kém chất lượng:
a) Thiếu nét
b) Chứa thông tin nhiễu
Hình 7: Mô tả những kiểu hình ảnh không đạt chuẩn
2.3 Chương trình
2.3.1
Các hàm, thủ tục quan trọng
ComputerVisionClient(cog_endpoint, CognitiveServicesCredentials(cog_key))
Truy cập dữ liệu từ máy chủ Microsoft Azure và mã truy cập
image_path = os.path.join('images', 'google api.jpg')
Trỏ đường dẫn của hình ảnh cần nhận diện
computervision_client.read_in_stream(image_stream, raw=True)
Nếu thông số này được đặt thành “true”, thì tính năng nhận dạng chữ viết tay sẽ
được thực hiện.
Nếu "false" được chỉ định, nhận dạng văn bản in được thực hiện bằng cách hàm
chức năng Nhận dạng ký tự quang học (OCR).
Sử dụng tính năng nhận diện này để sử dụng các thuật toán Nhận dạng ký tự
quang học (OCR) nhằm phân tích các tài liệu văn bản.
2.3.2 Chương trình chính
# nhập mã khóa và điểm cuối để truy cập dữ liệu của
Microsoft Azure
cog_key = "efd5b68a97de488c89517e138dd3646f"
17
cog_endpoint =
"https://testkltn.cognitiveservices.azure.com/"
print("ready to use cognitive service")
from azure.cognitiveservices.vision.computervision
import ComputerVisionClient
from
azure.cognitiveservices.vision.computervision.models
import OperationStatusCodes
import time
from msrest.authentication import
CognitiveServicesCredentials
from matplotlib import pyplot, lines
from PIL import Image, ImageDraw
import os,io
import requests, cv2, operator, numpy
# Truy cập vào công cụ nhận dạng của Microsoft
computervision_client =
ComputerVisionClient(cog_endpoint,
CognitiveServicesCredentials(cog_key))
# Trỏ đường dẫn của hình ảnh trong máy
image_path = os.path.join('images', 'google api.jpg')
image_stream = open(image_path, "rb")
# Yêu cầu đọc hình ảnh và nhận ID
read_operation =
computervision_client.read_in_stream(image_stream,
raw=True)
18
operation_location =
read_operation.headers["Operation-Location"]
operation_id = operation_location.split("/")[-1]
# Đợi hoạt động hoàn thành
while True:
read_result =
computervision_client.get_read_result(operation_id)
if read_result.status not in
[OperationStatusCodes.running]:
break
time.sleep(1)
# Nếu thành công thì văn bản được in theo từng dòng
if read_result.status ==
OperationStatusCodes.succeeded:
for result in
read_result.analyze_result.read_results:
for line in result.lines:
print(line.text)
2.4 Kết quả
2.4.1 Nhận diện các phép toán số học chữ viết tay
- Các hình ảnh kết quả
Ví dụ
minh
họa
Hình ảnh đầu vào
Kết quả nhận diện
19
Số và
phép
toán
tử
Số
dấu
ngoặc
Phân
số và
ký tự
tích
phân
Chỉ số
trên
(mũ
số)
Chỉ số
dưới
20
Biểu
thức
chứa
dấu
căn
Nhận xét
- Công cụ nhận diện của Microsoft Azure nhận diện được số và các chữ cái Latin.
Tuy nhiên, một số biểu thức có tính phân cấp thì độ chính xác của thuật toán chưa đạt.
- Mặc dù Microsoft hỗ trợ một vài ngôn ngữ, chữ cái Hy Lạp thường vẫn chưa có
sẵn. Ngoài ra, một số ký tự đặc biệt như ∃, ∑, , ⇔, … vẫn chưa được nhận diện.
- Xem thêm -