Trích xuất văn bản từ video bằng opencv-python

Cam kết này không thuộc về bất kỳ nhánh nào trên kho lưu trữ này và có thể thuộc về một nhánh bên ngoài kho lưu trữ

Bạn không thể thực hiện hành động đó vào lúc này

Bạn đã đăng nhập bằng tab hoặc cửa sổ khác. Tải lại để làm mới phiên của bạn. Bạn đã đăng xuất trong một tab hoặc cửa sổ khác. Tải lại để làm mới phiên của bạn

Như trước đây chúng ta đã thấy cách thức hoạt động của Nhận dạng văn bản với Mô hình Tesseract. Trong blog này, chúng ta sẽ xem xét một cách tiếp cận khác để Phát hiện văn bản bằng OpenCV và EAST. Trình phát hiện văn bản cảnh hiệu quả và chính xác

Trước khi bắt đầu, chúng ta nên biết sự khác biệt giữa Nhận dạng văn bản và Phát hiện văn bản. Trong phát hiện văn bản, chúng tôi chỉ phát hiện các hộp giới hạn xung quanh văn bản trong hình ảnh trong khi nhận dạng văn bản, chúng tôi tìm ra những gì được viết bên trong hộp. cho e. g trong img2, chúng ta có thể thấy rõ các hộp xung quanh văn bản, đây là một ví dụ về phát hiện văn bản. Trong khi img3 hiển thị văn bản chính xác là một ví dụ về nhận dạng văn bản

Các công cụ nhận dạng văn bản như tesseract yêu cầu các hộp giới hạn xung quanh văn bản trước khi nhận dạng văn bản để có hiệu suất tốt hơn

Mục lục

Triển khai EAST trong Python

  1. Tải xuống mô hình EAST có tên [frozen_east_text_detection] từ GitHub

Ghi chú. Mô hình EAST yêu cầu kích thước hình ảnh [chiều rộng, chiều cao] theo bội số của 32

Nhập hình ảnh và thực hiện bước tiền xử lý để thay đổi kích thước hình ảnh thành bội số của 32

Bây giờ chúng ta cần tải mạng vào bộ nhớ. Đối với điều đó, chúng tôi sẽ sử dụng cv2. dnn. readNet[] bằng cách chuyển trình phát hiện EAST làm đối số sẽ tự động phát hiện khung dựa trên loại tệp. Trong trường hợp của chúng tôi, đó là tệp pb nên nó sẽ tự động tải Mạng Tensorflow

Trang demo

Phần mềm chuyển lời nói thành văn bản

  1. Bây giờ chúng ta cần tạo hình ảnh thành blob bằng cv2. dnn. hàm blobFromImage[]. Tham số của hàm này như sau
  2. Đối số đầu tiên là hình ảnh mà chúng ta cần chuyển đổi
  3. Đối số thứ hai là yếu tố quy mô. Sử dụng đối số này, chúng tôi có thể tùy ý chia tỷ lệ hình ảnh của mình theo một số yếu tố. Giá trị mặc định là 1 có nghĩa là không chia tỷ lệ
  4. Đối số thứ ba là kích thước của mạng theo mặc định là 320×320
  5. Đối số thứ tư là giá trị trung bình là giá trị trừ trung bình ở dạng một bộ RGB được trừ khỏi kênh đó
  6. Đối số thứ năm là swapRB được sử dụng để hoán đổi các kênh R và B trong ảnh nếu nó được đặt là đúng

Đối số cuối cùng là crop cho biết chúng ta có muốn cắt hình ảnh hay không

Để thực hiện phát hiện văn bản, chúng tôi cần chuyển hai lớp vào mạng và nhận tính năng đầu ra của nó. Các lớp mà chúng ta sẽ chuyển đến mạng như sau
Lớp đầu tiên là kích hoạt sigmoid sẽ cung cấp cho chúng tôi xác suất [điểm tin cậy] về sự hiện diện của văn bản trong một khu vực cụ thể
Lớp thứ hai xác định hình học của các hộp giới hạn của vùng văn bản

Bây giờ chúng ta sẽ đặt blob làm đầu vào cho mạng bằng cách sử dụng hàm setInput[] và gọi hàm forward[] để dự đoán văn bản. Trong hàm forward[], chúng ta sẽ chuyển các lớp làm đối số để hướng dẫn openCV trả về các tính năng đầu ra mà chúng ta mong đợi. Các tính năng đầu ra như sau

Hình học của các hộp giới hạn xung quanh văn bản

Điểm tin cậy của các hộp giới hạn

Bây giờ chúng ta sẽ lặp qua từng giá trị trong điểm số và hình học. Và tạo các hộp giới hạn và điểm tin cậy của chúng và lưu trữ nó trong rects và danh sách tin cậy

rects sẽ lưu trữ tọa độ hộp giới hạn

sự tự tin sẽ lưu trữ xác suất của hộp giới hạn đó

Trong khi làm điều đó, chúng tôi cũng sẽ lọc phát hiện văn bản yếu bằng cách bỏ qua chúng nếu điểm tin cậy của chúng thấp hơn xác suất đã đặt của chúng tôi

Trong bước tiếp theo, chúng tôi sẽ loại bỏ hộp giới hạn chồng chéo yếu bằng cách sử dụng non_max_suppression[] của imutils

  1. Trong bước này, chúng tôi sẽ thu nhỏ hình ảnh của mình về kích thước ban đầu và tạo các hộp giới hạn trong hình ảnh

Phần kết luận

Như kết quả của mô hình này đã thể hiện rõ ràng, nó có thể phát hiện văn bản từ các hình ảnh có nền, phông chữ, kích thước và hướng văn bản khác nhau. Nhưng chúng tôi cũng thấy một số văn bản không bị phát hiện, nhưng hiệu suất tổng thể của mô hình này là rất tốt

Có thể có các ứng dụng khác nhau cho mô hình này. Nó có thể được sử dụng để phát hiện biển báo bên đường, phát hiện Biển số và nhiều tính năng khác

Làm cách nào để trích xuất văn bản từ video Python?

Trong bài viết này, chúng ta sẽ thảo luận về cách lấy văn bản từ tệp video hoặc âm thanh. .
điều kiện tiên quyết. .
Bước 1. Chuẩn bị thư mục. .
Bước 2. Nhập thư viện. .
Bước 3. Lệnh chuyển đổi video. .
Bước 4. Thực hiện các lệnh chuyển đổi video. .
Bước 5. Tải tệp wav. .
Bước 6. Xử lý tệp wav. .
cải tiến hơn nữa

OpenCV có thể trích xuất văn bản không?

OpenCV cùng với OCR sẽ phát hiện và trích xuất văn bản từ hình ảnh . Có, OpenCV đang đưa thị giác máy tính lên một tầm cao mới, giờ đây máy móc có thể phát hiện, trích xuất và đọc văn bản từ hình ảnh.

Làm cách nào để trích xuất văn bản từ hình ảnh bằng OpenCV Python?

Tạo chính. p .
Nhập tất cả các thư viện cần thiết [opencv, tkinter, tesseract]
Cung cấp vị trí của tesseract. tập tin exe
Tkinter cung cấp các chức năng GUI. mở hộp thoại hình ảnh để người dùng có thể tải lên hình ảnh
Hãy chuyển sang chức năng trích xuất lấy đường dẫn của hình ảnh làm tham số

Chủ Đề