Đăng ký Đăng nhập
Trang chủ Nhận diện biểu thức toán viết tay...

Tài liệu Nhận diện biểu thức toán viết tay

.PDF
23
1
69

Mô tả:

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 -

Tài liệu liên quan

Tài liệu vừa đăng

Tài liệu xem nhiều nhất