Hướng dẫn east text detection python - trăn phát hiện văn bản đông

Như trước đây, chúng tôi đã thấy cách nhận dạng văn bản hoạt động với mô hình Tesseract. Trong blog này, chúng tôi 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: một máy dò 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 trong 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. Ví dụ trong IMG2, chúng ta có thể thấy rõ các hộp xung quanh văn bản 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.

Hướng dẫn east text detection python - trăn phát hiện văn bản đông

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.

  • Thực hiện Đông ở Python:
  • Conclusion:
    • Sanif Ali Momin

Thực hiện Đông ở Python:

  1. Sanif Ali Momin

Tải xuống mô hình phía đông có tên (frozen_east_text_detection) từ GitHub

Lưu ý: Mô hình Đông yêu cầu kích thước hình ảnh (chiều rộng, chiều cao) trong bội số của 32

Hướng dẫn east text detection python - trăn phát hiện văn bản đông

Nhập hình ảnh và thực hiện bước xử lý trước để thay đổi kích thước hình ảnh thành bội số của 32.cv2.dnn.readNet() function by passing an EAST detector as an argument which will automatically detect the framework based on file type. In our case it is a pb file so it will automatically load Tensorflow Network.

Hướng dẫn east text detection python - trăn phát hiện văn bản đông

  1. Bây giờ chúng ta cần tải mạng trong bộ nhớ. Cho rằng chúng tôi sẽ sử dụng hàm cv2.dnn.readnet () bằng cách truyền một máy dò phía đông 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à một tệp PB, vì vậy nó sẽ tự động tải mạng TensorFlow.cv2.dnn.blobFromImage() function. The parameter of this function are as follow:
  2. Bây giờ chúng ta cần tạo hình ảnh thành blob bằng hàm cv2.dnn.blobfromimage (). Tham số của chức năng này như sau:image that we need to convert.
  3. Đối số đầu tiên là hình ảnh mà chúng ta cần chuyển đổi.scale factor. Using this argument we can optionally scale our image to some factor. The default value is 1 that means no scaling.
  4. Đối số thứ hai là yếu tố tỷ lệ. Sử dụng đối số này, chúng tôi có thể tùy chọn mở rộng hình ảnh của chúng tôi thành một số yếu tố. Giá trị mặc định là 1 có nghĩa là không có tỷ lệ.size of the network which is by default 320×320.
  5. Đối số thứ ba là kích thước của mạng theo mặc định 320 × 320.mean which is the mean subtraction value which is in the form of a tuple of RGB which is subtracted from that channel.
  6. Đối số thứ tư là giá trị trung bình là giá trị trừ trung bình ở dạng một tuple của RGB được trừ khỏi kênh đó.swapRB which is used to swap R and B channels in the image if it is set is true.

Đối số thứ năm là swaprb được sử dụng để hoán đổi các kênh r và b trong hình ảnh nếu nó được đặt là đúng.crop which states whether we want to crop the image or not.

Hướng dẫn east text detection python - trăn phát hiện văn bản đông
& nbsp; đối số cuối cùng là cây trồng trong đó có muốn cắt hình ảnh hay không.
The first layer is sigmoid activation which will give us the probability (confidence score) of the presence of text in a particular area.
The second layer defines the geometry of the bounding boxes of the text area.

Hướng dẫn east text detection python - trăn phát hiện văn bản đông

Để thực hiện phát hiện văn bản, chúng ta cần truyề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ẽ cho chúng ta xác suất (điểm tin cậy) của sự hiện diện của văn bản trong một khu vực cụ thể. Hộp của khu vực văn bản.setInput() function and call forward() function to predict the text. In the forward() function we will pass the layers as an argument to instruct openCV to return the output features that we are expecting. The output features are as follow:

Bây giờ chúng tôi sẽ đặt blob làm đầu vào cho mạng bằng hàm setInput () và gọi chuyển tiếp () để dự đoán văn bản. Trong hàm forward (), chúng tôi sẽ chuyển các lớp như một đối số để hướng dẫn OpenCV trả về các tính năng đầu ra mà chúng tôi đang mong đợi. Các tính năng đầu ra như sau:geometry of the bounding boxes around the text.

Hình học của các hộp giới hạn xung quanh văn bản.confidence score of the bounding boxes.

Điểm tin cậy của các hộp giới hạn.rects and confidence lists.

Bây giờ chúng tôi 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 số tự tin của chúng và lưu trữ nó trong RECT và danh sách sự tự tin.will store bounding boxes coordinates

RECT sẽ lưu trữ tọa độ hộp giới hạnwill store the probability of that bounding box

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

Mặc dù làm điều đó, chúng tôi cũng sẽ lọc ra 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.non_max_suppression() of imutils.

  1. Trong bước tiếp theo của chúng tôi, chúng tôi sẽ triệt tiêu 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.
Hướng dẫn east text detection python - trăn phát hiện văn bản đông
Hướng dẫn east text detection python - trăn phát hiện văn bản đông
Hướng dẫn east text detection python - trăn phát hiện văn bản đông
Hướng dẫn east text detection python - trăn phát hiện văn bản đông

Conclusion::

Trong bước này, chúng tôi sẽ mở rộng hình ảnh của chúng tôi trở lại kích thước gốc và tạo các hộp giới hạn trong hình ảnh.

Như được thể hiện rõ ràng bởi kết quả của mô hình này, nó có thể phát hiện văn bản từ hình ảnh với các nền, phông chữ, kích thước và định hướng văn bản khác nhau. Nhưng chúng tôi cũng 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 dấu hiệu bên đường, phát hiện biển số và nhiều thứ khác.