PaddleOCR: Công Nghệ Nhận Diện Ký Tự Quang Học với AI

Giới Thiệu về PaddleOCR

PaddleOCR là một thư viện nhận diện ký tự quang học (OCR) mã nguồn mở được phát triển bởi Baidu, sử dụng nền tảng học sâu PaddlePaddle. Nó hỗ trợ hơn 80 ngôn ngữ khác nhau và có thể nhận diện văn bản trong ảnh, bao gồm cả các văn bản viết tay và các văn bản có định dạng phức tạp. PaddleOCR không chỉ mạnh mẽ trong việc nhận diện văn bản mà còn hỗ trợ các tính năng bổ sung như phân tích bảng biểu, nhận diện văn bản từ tài liệu đa ngôn ngữxử lý dữ liệu văn bản trong hình ảnh.

Với khả năng nhận diện chính xác và tốc độ xử lý nhanh, PaddleOCR là một công cụ hữu ích cho các ứng dụng AI cần xử lý văn bản từ hình ảnh hoặc video.


Cài Đặt PaddleOCR

Để sử dụng PaddleOCR trên máy tính của bạn, bạn cần cài đặt một số thư viện cơ bản, bao gồm PaddlePaddlePaddleOCR.

1. Cài Đặt PaddlePaddle và PaddleOCR

Trước tiên, bạn cần cài đặt PaddlePaddle. Mở terminal và sử dụng lệnh sau để cài đặt:

pip install paddleocr paddlepaddle

2. Cài Đặt Thêm Các Phụ Thuộc (Nếu Cần)

Để cài đặt các phụ thuộc cho việc xử lý ảnh và video, bạn có thể cần cài đặt thêm các thư viện khác như opencvPIL. Nếu các bạn xử dụng Anaconda giống mình thì có thể bỏ qua bước này:

pip install opencv-python
pip install Pillow

Sử Dụng PaddleOCR: Code Mẫu

Bây giờ, chúng ta sẽ sử dụng PaddleOCR để nhận diện văn bản trong một bức ảnh. Dưới đây là một ví dụ đơn giản về cách sử dụng PaddleOCR để nhận diện văn bản từ ảnh:

#https://paddlepaddle.github.io/PaddleOCR/main/en/ppocr/quick_start.html#22-use-by-code

from paddleocr import PaddleOCR
import cv2

ocr = PaddleOCR(use_angle_cls=True,
                show_log = False,
                lang='en')

# Đọc đường dẫn ảnh biển số vs OpenCV
image_path = 'bien_so.jpg'

img = cv2.imread(image_path)

# Gọi OCR
result = ocr.ocr(img, cls=False)

# Hiển thị kết quả
for line in result:
    for box, (text, score) in line:
        print(f'OCR kết quả: {text}, Độ chính xác: {score:.2f}')

Giải Thích Code:

1. Import Các Thư Viện Cần Thiết:

from paddleocr import PaddleOCR
import cv2
  • PaddleOCR: Đây là thư viện chính để thực hiện nhận diện ký tự quang học (OCR). Thư viện này sử dụng nền tảng học sâu PaddlePaddle.
  • cv2: Đây là thư viện OpenCV dùng để đọc và xử lý ảnh. OpenCV hỗ trợ nhiều chức năng như đọc ảnh, xử lý hình ảnh, nhận diện đối tượng, v.v.

2. Khởi Tạo PaddleOCR:

ocr = PaddleOCR(use_angle_cls=True, show_log=False, lang='en')
  • PaddleOCR(): Khởi tạo đối tượng PaddleOCR để thực hiện nhận diện văn bản.
  • use_angle_cls=True: Bật tính năng nhận diện góc (angle classification) để giúp phát hiện và xử lý các văn bản nghiêng.
  • show_log=False: Tắt việc hiển thị log trong quá trình xử lý, giúp giảm nhiễu khi chạy code.
  • lang=’en’: Chỉ định ngôn ngữ văn bản là Tiếng Anh. Nếu bạn cần nhận diện văn bản trong ngôn ngữ khác, có thể thay ‘en’ bằng mã ngôn ngữ tương ứng.

3. Đọc Ảnh từ Đường Dẫn:

image_path = 'bien_so.jpg'
img = cv2.imread(image_path)
  • image_path: Đường dẫn đến tệp ảnh biển số cần nhận diện.
  • cv2.imread(): Hàm từ OpenCV để đọc ảnh từ đường dẫn và chuyển ảnh thành một mảng (array) có thể xử lý.

4. Gọi OCR Để Nhận Diện Văn Bản:

result = ocr.ocr(img, cls=False)
  • ocr.ocr(img, cls=False): Hàm này thực hiện nhận diện văn bản trong ảnh img.
    • img: Ảnh cần nhận diện.
    • cls=False: Tắt tính năng nhận diện góc (classification) trong trường hợp này, bởi vì bạn đã bật use_angle_cls=True khi khởi tạo, và việc tắt cls sẽ giúp giảm thiểu thời gian xử lý nếu ảnh đã đủ rõ ràng.

Kết quả trả về sẽ là một danh sách các dòng văn bản nhận diện được, cùng với vị trí (bounding box) của mỗi đoạn văn bản.

5. Hiển Thị Kết Quả Nhận Diện:

for line in result:
    for box, (text, score) in line:
        print(f'OCR kết quả: {text}, Độ chính xác: {score:.2f}')
  • for line in result: Duyệt qua tất cả các dòng văn bản nhận diện được trong kết quả result.
  • for box, (text, score) in line: Mỗi dòng văn bản sẽ trả về ba giá trị:
    • box: Vị trí (bounding box) của đoạn văn bản trong ảnh.
    • text: Nội dung văn bản nhận diện được.
    • score: Độ chính xác của kết quả nhận diện, thể hiện mức độ chắc chắn mà PaddleOCR nhận diện được văn bản này.

Cuối cùng, hàm print sẽ in ra kết quả văn bản và độ chính xác của nó, ví dụ:

OCR kết quả: AB123CD, Độ chính xác: 0.98

Video Hướng Dẫn Cài Đặt và Sử Dụng PaddleOCR

Để giúp bạn dễ dàng làm quen và hiểu rõ hơn về cách sử dụng PaddleOCR, bạn có thể xem video của tôi trên YouTube. Video này sẽ giúp bạn cài đặt và sử dụng PaddleOCR.

Lợi Ích của PaddleOCR

  1. Hỗ Trợ Đa Ngôn Ngữ: PaddleOCR hỗ trợ nhận diện văn bản trong hơn 80 ngôn ngữ, bao gồm tiếng Anh, tiếng Trung, tiếng Nhật, và nhiều ngôn ngữ khác.
  2. Chính Xác Cao: Với các mô hình học sâu và công nghệ nhận diện tiên tiến, PaddleOCR có độ chính xác cao trong việc nhận diện văn bản từ ảnh và video.
  3. Tốc Độ Xử Lý Nhanh: PaddleOCR cho phép nhận diện văn bản nhanh chóng, đặc biệt khi tích hợp với GPU, giúp tiết kiệm thời gian khi xử lý các tài liệu lớn.
  4. Dễ Dàng Tích Hợp: Bạn có thể tích hợp PaddleOCR vào các dự án Python hiện có một cách dễ dàng.

Kết Luận

PaddleOCR là một công cụ mạnh mẽ cho việc nhận diện văn bản từ hình ảnh và video. Với khả năng hỗ trợ nhiều ngôn ngữ, chính xác cao và tốc độ nhanh, PaddleOCR là sự lựa chọn tuyệt vời cho các dự án yêu cầu xử lý văn bản tự động. Hy vọng bài viết và video hướng dẫn sẽ giúp bạn bắt đầu với PaddleOCR một cách dễ dàng và hiệu quả.

Viết một bình luận