Công nghệ

 

Hiện nay, việc lưu trữ, chỉnh sửa, lập chỉ mục và tìm kiếm thông tin trong một tập tài liệu dạng số hóa càng trở nên dễ dàng, nhanh chóng và thuận tiện hơn với sự trợ giúp của máy tính. Không những vậy, phương pháp tự động còn ưu việt hơn thủ công ở điểm hạn chế tối đa rủi ro sai sót do có sự can thiệp của con người. Đây cũng chính là điều khiến công nghệ trích xuất văn bản từ hình ảnh dựa trên học sâu (deep learning) ngày một phổ biến. Các ứng dụng của công nghệ này có thể kể đến nhận dạng hộ chiếu, nhận dạng biển số tự động, chuyển đổi văn bản viết tay sang văn bản kỹ thuật số,…

Bài viết dưới đây sẽ là chỉ dẫn tổng quát về bài toán, nguồn dữ liệu và giải pháp trích xuất văn bản từ hình ảnh dựa trên học sâu. Bài viết sẽ rất hữu ích cho những bạn đang gặp phải thách thức liên quan đến dữ liệu văn bản phi cấu trúc. Hãy lưu lại, trải nghiệm và chia sẻ nhé!

Dữ liệu phi cấu trúc: bài toán chưa có lời giải đối với OCR

Thực tế, đã có nhiều ứng dụng của OCR trước khi công nghệ học sâu bùng nổ vào năm 2012. Trải qua thời gian dài phát triển, OCR vẫn gặp phải không ít thách thức chưa được giải quyết, đặc biệt khi hình ảnh văn bản được chụp trong nhiều môi trường khác nhau (không giới hạn về các yếu tố nền, nhiễu, phông chữ, biến dạng hình học trong hình ảnh…)

Đây là lúc các công cụ OCR học máy (hoặc xử lý hình ảnh bằng học máy) trở nên nổi trội.

Các thách thức liên quan đến OCR bắt nguồn từ bài toán. Nhìn chung, chúng ta có thể chia các bài toán này thành hai loại: 

- Văn bản có cấu trúc – Văn bản trong tài liệu được đánh máy: đặt trong nền, hàng, phông chữ tiêu chuẩn. 

Văn bản có cấu trúc: được định dạng chuẩn, dễ đọc và dày thông tin.

- Văn bản phi cấu trúc – Văn bản được xếp đặt ngẫu nhiên, thường thưa thớt, không có cấu trúc hàng thích hợp, nền phức tạp, ở vị trí ngẫu nhiên trong hình ảnh và không có phông chữ chuẩn.

Trong thực tế, văn bản có cấu trúc đã được xử lý rất tốt bởi nhiều kỹ thuật OCR trước đó. Tuy nhiên, những kỹ thuật này không có tác dụng đối với các môi trường tự nhiên, không được định dạng tiêu chuẩn và tồn tại nhiều thuộc tính khác so với dữ liệu có cấu trúc. 

Bộ dữ liệu mở cho các bài toán OCR phi cấu trúc

Dưới đây là một vài ví dụ về bộ dữ liệu thường được sử dụng cho các bài toán OCR học máy.

Bộ dữ liệu SVHN: http://www.iapr-tc11.org/mediawiki/index.php?title=The_Street_View_House_Numbers_(SVHN)_Dataset 

Tập dữ liệu SVHN (Street View House Numbers) chứa 73257 chữ số để đào tạo, 26032 chữ số để thử nghiệm và 531131 chữ số dùng làm dữ liệu đào tạo bổ sung. Tập dữ liệu bao gồm 10 nhãn là các chữ số 0-9. Khác với MNIST, SVHN có các hình ảnh về số nhà đặt trong các cảnh nền khác nhau. Tập dữ liệu có các hộp giới hạn xung quanh mỗi chữ số thay vì có hình ảnh của các chữ số như trong MNIST.

Bộ dữ liệu Scene Text: http://www.iapr-tc11.org/mediawiki/index.php?title=KAIST_Scene_Text_Database 

Bộ dữ liệu này bao gồm 3000 hình ảnh ở các môi trường khác nhau (trong nhà và ngoài trời) và điều kiện ánh sáng (bóng tối, ánh sáng và ban đêm), với văn bản bằng tiếng Hàn và tiếng Anh. Một số hình ảnh cũng chứa các chữ số.

Bộ dữ liệu ký tự Devanagri: http://www.iapr-tc11.org/mediawiki/index.php?title=Devanagari_Character_Dataset 

Bộ dữ liệu này cung cấp 1800 mẫu từ 36 lớp ký tự do 25 tác giả bản địa khác nhau thu được trong hệ thống chữ viết Devanagri.

Ngoài ra, còn có một số bộ dữ liệu khác cho ký tự Trung Quốc, CAPTCHA hoặc chữ viết tay. 

OCR học máy dành cho văn bản trong đa môi trường

Một quy trình OCR học máy điển hình bao gồm các bước: Tiền xử lý hình ảnh, Phát hiện văn bản và Nhận dạng văn bản

Tiền xử lý hình ảnh

  1. Loại bỏ nhiễu khỏi hình ảnh
  2. Xóa nền phức tạp khỏi hình ảnh
  3. Xử lý điều kiện ánh sáng trong hình ảnh

Lọc nhiễu trong hình ảnh

Phát hiện văn bản 

Kỹ thuật này phát hiện văn bản và tạo các hộp giới hạn xung quanh phần hình ảnh chứa văn bản. Dưới đây là gợi ý về một số kỹ thuật có thể được sử dụng: 

- Kỹ thuật Sliding window

Hộp giới hạn có thể được tạo ra xung quanh văn bản thông qua kỹ thuật Sliding window. Tuy nhiên, đây là một kỹ thuật tốn kém về tài nguyên tính toán. Trong kỹ thuật này, một cửa sổ trượt qua hình ảnh để phát hiện văn bản trong cửa sổ đó, giống như một mạng nơ-ron phức hợp. Có thể thử với các kích thước cửa sổ khác nhau để không bỏ sót phần văn bản nào. 

- Kỹ thuật Single Shot và Region based detectors

Có một số kỹ thuật phát hiện một lần chụp như YOLO (You Only Look Once) và kỹ thuật phát hiện văn bản dựa trên vùng để phát hiện văn bản trong ảnh.

Cấu trúc của YOLO

YOLO chỉ lướt qua hình ảnh một lần để phát hiện văn bản trong vùng đó, không giống như cửa sổ trượt.

Còn đối với phương pháp tiếp cận dựa trên khu vực, mạng đề xuất khu vực có thể kiểm tra và sau đó phân loại khu vực nếu nó có văn bản hay không.

EAST (Efficient accurate scene text detector)

Đây là một phương pháp học sâu rất hiệu quả để phát hiện văn bản. EAST có thể tìm thấy các hộp giới hạn ngang và xoay và được sử dụng kết hợp với bất kỳ phương pháp nhận dạng văn bản nào.

Mạng tích hợp toàn bộ (fully convolutional network) được sử dụng để trực tiếp tạo ra dự đoán cấp độ từ hoặc dòng văn bản. Các dự đoán đã tạo có thể là hình chữ nhật hoặc hình tứ giác xoay được tiếp tục xử lý thông qua thuật toán non-maximum-suppression để mang lại kết quả cuối cùng.

EAST có thể phát hiện văn bản cả trong hình ảnh và video. Nó chạy gần thời gian thực ở 13FPS trên hình ảnh 720p với độ chính xác phát hiện văn bản cao. Một lợi ích khác của kỹ thuật này là việc triển khai có sẵn trong OpenCV 3.4.2 và OpenCV 4. Mô hình EAST này hoạt động cùng với nhận dạng văn bản.

Nhận dạng văn bản

Khi đã phát hiện ra các hộp giới hạn chứa văn bản, bước tiếp theo là nhận dạng văn bản. Có một số kỹ thuật để nhận dạng văn bản. Dưới đây là những kỹ thuật được đánh giá là tốt nhất:

CRNN

Convolutional Recurrent Neural Network (CRNN) là sự kết hợp của CNN, RNN và CTC (Connectionist Temporal Classification) cho các bài toán nhận dạng trình tự dựa trên hình ảnh, chẳng hạn như nhận dạng văn bản cảnh và OCR. 

Kiến trúc mạng nơ-ron này tích hợp tính năng trích xuất, mô hình hóa trình tự và phiên mã vào một framework thống nhất. Mô hình này không cần phân đoạn ký tự. Mạng nơ-ron tích chập trích xuất các tính năng từ hình ảnh đầu vào (vùng được phát hiện văn bản). Deep bidirectional recurrent neural network sâu dự đoán chuỗi nhãn với một số mối quan hệ giữa các ký tự. Lớp phiên mã chuyển đổi mỗi khung được tạo bởi RNN thành một chuỗi nhãn. Có hai hình thức phiên mã, đó là phiên mã không có từ vựng và dựa trên từ vựng. Trong phương pháp dựa trên từ vựng, trình tự nhãn có khả năng xảy ra cao nhất sẽ được dự đoán.

OCR học máy với Tesseract

Tesseract ban đầu được phát triển tại Phòng thí nghiệm Hewlett-Packard từ năm 1985 đến năm 1994. Năm 2005, HP cung cấp mã nguồn mở của Tesseract. Năm 2006, Tesseract được coi là một trong những công cụ OCR mã nguồn mở chính xác nhất hiện có.

Khả năng của Tesseract hầu như chỉ giới hạn ở dữ liệu văn bản có cấu trúc. Nó hoạt động khá kém trong văn bản phi cấu trúc chứa nhiều yếu tố nhiễu. Việc phát triển thêm về tesseract đã được Google tài trợ từ năm 2006.

Phương pháp dựa trên học sâu hoạt động tốt hơn đối với dữ liệu phi cấu trúc. Tesseract 4 đã bổ sung khả năng dựa trên học sâu với công cụ OCR dựa trên mạng LSTM (một loại Mạng thần kinh tái tạo) tập trung vào nhận dạng dòng, đồng thời hỗ trợ công cụ Tesseract OCR kế thừa của Tesseract 3 hoạt động bằng cách nhận dạng các mẫu ký tự. Phiên bản ổn định mới nhất 4.1.0 được phát hành vào ngày 7 tháng 7 năm 2019. Phiên bản này cũng chính xác hơn đáng kể trên văn bản không có cấu trúc.

Thông tin chi tiết vui lòng liên hệ:

Công ty Cổ phần tư vấn giải pháp Công nghệ CSTSOFT

Địa chỉ: 192 Lê Trọng Tấn - Hà Nội

Số điện thoại: 098 913 8873

Email:support@cstsoft.net