Hướng dẫn extract text from image python opencv - trích xuất văn bản từ hình ảnh python opencv

OpenCV (Tầm nhìn máy tính nguồn mở) là một thư viện các chức năng lập trình chủ yếu nhằm vào tầm nhìn máy tính thời gian thực. OpenCV trong Python giúp xử lý một hình ảnh và áp dụng các chức năng khác nhau như thay đổi kích thước hình ảnh, thao tác pixel, phát hiện đối tượng, v.v. Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng các đường viền để phát hiện văn bản trong một hình ảnh và lưu nó vào tệp văn bản. Cài đặt bắt buộc: & NBSP; (Open source computer vision) is a library of programming functions mainly aimed at real-time computer vision. OpenCV in python helps to process an image and apply various functions like resizing image, pixel manipulations, object detection, etc. In this article, we will learn how to use contours to detect the text in an image and save it to a text file.
Required Installations:
 

pip install opencv-python
pip install pytesseract

Gói OpenCV được sử dụng để đọc hình ảnh và thực hiện các kỹ thuật xử lý hình ảnh nhất định. Python-Tesseract là một trình bao bọc cho động cơ Tesseract-acr của Google, được sử dụng để nhận dạng văn bản từ hình ảnh. Tải tệp thực thi Tesseract từ liên kết này.Approach: & nbsp; . & nbsp;
Download the tesseract executable file from this link.
Approach: 
After the necessary imports, a sample image is read using the imread function of opencv.
 

Áp dụng xử lý hình ảnh cho hình ảnh:

Không gian màu của hình ảnh được thay đổi đầu tiên và được lưu trữ trong một biến. Để chuyển đổi màu, chúng tôi sử dụng hàm CV2.cvtcolor (input_image, cờ). Cờ tham số thứ hai xác định loại chuyển đổi. Chúng ta có thể chọn trong số CV2.color_bgr2gray và CV2.color_bgr2hsv. CV2.color_bgr2gray giúp chúng tôi chuyển đổi hình ảnh RGB thành hình ảnh tỷ lệ màu xám và CV2.color_bgr2HSV được sử dụng để chuyển đổi hình ảnh RGB thành hình ảnh không gian màu HSV (Hute, Saturation, Giá trị). Ở đây, chúng tôi sử dụng CV2.color_bgr2gray. Một ngưỡng được áp dụng cho hình ảnh được chuyển đổi bằng hàm cv2.threshold. & Nbsp; Có 3 loại ngưỡng: & nbsp; & nbsp;cv2.COLOR_BGR2GRAY and cv2.COLOR_BGR2HSV. cv2.COLOR_BGR2GRAY helps us to convert an RGB image to gray scale image and cv2.COLOR_BGR2HSV is used to convert an RGB image to HSV (Hue, Saturation, Value) color-space image. Here, we use cv2.COLOR_BGR2GRAY. A threshold is applied to the converted image using cv2.threshold function. 
There are 3 types of thresholding: 
 

  1. Ngưỡng đơn giản
  2. Ngưỡng thích nghi
  3. Binarization Otsu

Để biết thêm thông tin về ngưỡng, tham khảo các kỹ thuật ngưỡng bằng openCV.cv2.threshold () có 4 tham số, tham số đầu tiên là hình ảnh thay đổi không gian màu, theo sau là giá trị ngưỡng tối thiểu, giá trị ngưỡng tối đa và loại ngưỡng cần được áp dụng. & nbsp;
cv2.threshold() has 4 parameters, first parameter being the color-space changed image, followed by the minimum threshold value, the maximum threshold value and the type of thresholding that needs to be applied.
 

Để có được một cấu trúc hình chữ nhật:

CV2.GetStructuringEuity () được sử dụng để xác định một phần tử cấu trúc như hình elip, hình tròn, hình chữ nhật, v.v. Ở đây, chúng tôi sử dụng phần tử cấu trúc hình chữ nhật (CV2.Morph_Rect). CV2.GetStructuringEuity có thêm kích thước của tham số kernel. Một hạt nhân lớn hơn sẽ làm cho nhóm các khối văn bản lớn hơn với nhau. Sau khi chọn hạt nhân chính xác, sự giãn nở được áp dụng cho hình ảnh có chức năng CV2.dilate. Sự giãn nở làm cho các nhóm văn bản được phát hiện chính xác hơn vì nó giãn ra (mở rộng) một khối văn bản. & Nbsp;size of the kernel parameter. A bigger kernel would make group larger blocks of texts together. After choosing the correct kernel, dilation is applied to the image with cv2.dilate function. Dilation makes the groups of text to be detected more accurately since it dilates (expands) a text block.
 

Tìm đường viền:

CV2.FindContours () được sử dụng để tìm các đường viền trong hình ảnh bị giãn. Có ba đối số trong CV.FindContours (): hình ảnh nguồn, chế độ truy xuất đường viền và phương thức xấp xỉ đường viền. & NBSP; Hàm này trả về các đường viền và phân cấp. Đường viền là một danh sách Python của tất cả các đường viền trong hình ảnh. Mỗi đường viền là một mảng numpy của tọa độ (x, y) của các điểm ranh giới trong đối tượng. Các đường viền thường được sử dụng để tìm một vật màu trắng từ nền đen. Tất cả các kỹ thuật xử lý hình ảnh trên được áp dụng để các đường viền có thể phát hiện các cạnh ranh giới của các khối văn bản của hình ảnh. Một tệp văn bản được mở trong chế độ ghi và xóa. Tệp văn bản này được mở để lưu văn bản khỏi đầu ra của OCR. & NBSP;
This function returns contours and hierarchy. Contours is a python list of all the contours in the image. Each contour is a Numpy array of (x, y) coordinates of boundary points in the object. Contours are typically used to find a white object from a black background. All the above image processing techniques are applied so that the Contours can detect the boundary edges of the blocks of text of the image. A text file is opened in write mode and flushed. This text file is opened to save the text from the output of the OCR.
 

Áp dụng OCR:

Vòng lặp qua từng đường viền và lấy tọa độ x và y và chiều rộng và chiều cao bằng cách sử dụng hàm cv2.boundrect (). Sau đó vẽ một hình chữ nhật trong hình ảnh bằng hàm cv2.rectangle () với sự trợ giúp của tọa độ X và Y thu được và chiều rộng và chiều cao. Có 5 tham số trong CV2.Rectangle (), tham số đầu tiên chỉ định hình ảnh đầu vào, theo sau là tọa độ x và y (tọa độ bắt đầu của hình chữ nhật), tọa độ kết thúc của hình chữ nhật là (x+w, y+ h), màu biên cho hình chữ nhật trong giá trị RGB và kích thước của ranh giới. Bây giờ cắt vùng hình chữ nhật và sau đó chuyển nó đến tesseract để trích xuất văn bản từ hình ảnh. Sau đó, chúng tôi mở tệp văn bản được tạo ở chế độ nối để nối văn bản thu được và đóng hình ảnh mẫu được sử dụng cho mã: & nbsp; & nbsp;
Sample image used for the code: 
 

Hướng dẫn extract text from image python opencv - trích xuất văn bản từ hình ảnh python opencv

Python3

import cv2

import pytesseract

pytesseract.pytesseract.tesseract_cmd = 'System_path_to_tesseract.exe'

img = import0import1import2

import3= import5

import6= import8import9cv20cv21cv22

cv23= cv25cv26cv20cv26cv29

import0____6 import2= import4import2

import6= import8

import9pytesseract0

pytesseract1= pytesseract3

pytesseract4 = pytesseract6pytesseract7pytesseract8cv20____505012

pytesseract4pytesseract.pytesseract.tesseract_cmd 3

pytesseract4pytesseract.pytesseract.tesseract_cmd 5

pytesseract.pytesseract.tesseract_cmd 6 pytesseract.pytesseract.tesseract_cmd 7pytesseract.pytesseract.tesseract_cmd 8 pytesseract.pytesseract.tesseract_cmd 9

=0=1= =3

=0=5= =7=8 =9=8

=0img 1= img 3=8 img 5=8

=0pytesseract4 = pytesseract6pytesseract7pytesseract8cv20__95

=0=8= import00

=0pytesseract4import03

=0pytesseract4import06import07import2

=0pytesseract4import11

Đầu ra: & nbsp; tệp văn bản cuối cùng: & nbsp; & nbsp; 
Final text file: 
 

Hướng dẫn extract text from image python opencv - trích xuất văn bản từ hình ảnh python opencv

Các khối văn bản được phát hiện: & nbsp; & nbsp;
 

Hướng dẫn extract text from image python opencv - trích xuất văn bản từ hình ảnh python opencv


Làm cách nào để trích xuất văn bản từ một hình ảnh trong opencv?

Trong bài viết này, chúng tôi sẽ tìm hiểu cách sử dụng các đường viền để phát hiện văn bản trong một hình ảnh và lưu nó vào một tệp văn bản. Gói OpenCV được sử dụng để đọc hình ảnh và thực hiện một số kỹ thuật xử lý hình ảnh nhất định ...
Ngưỡng đơn giản ..
Ngưỡng thích nghi ..
Binarization của Otsu ..

Làm thế nào để bạn trích xuất văn bản từ một hình ảnh bằng công cụ Tesseract OCR và Python?

Tạo tập lệnh Python Tesseract Tạo một thư mục dự án và thêm một tệp Main.py mới bên trong thư mục đó.Khi ứng dụng cung cấp quyền truy cập vào các tệp PDF, nội dung của nó sẽ được trích xuất dưới dạng hình ảnh.Những hình ảnh này sau đó sẽ được xử lý để trích xuất văn bản. Create a project folder and add a new main.py file inside that folder. Once the application gives access to PDF files, its content will be extracted in the form of images. These images will then be processed to extract the text.

OpenCV có thể làm OCR không?

Hàm OpenCV OCR hoặc nhận dạng ký tự quang được thiết kế để đọc một tệp hình ảnh do người dùng cung cấp và sau đó nhận ra văn bản được đưa ra trong hình ảnh để được hiển thị cho người dùng..

Làm thế nào để Python nhận ra văn bản trong một hình ảnh?

Kỹ thuật OCR và OpenCV tiện dụng để tìm văn bản trong hình ảnh kỹ thuật số, chúng tôi sẽ sử dụng thư viện Python và PyTesseract để trích xuất văn bản.Hình ảnh nên có văn bản bên trong nó để tìm văn bản đầu ra.Việc trích xuất văn bản với pytesseract cần một thư viện được cài đặt trong môi trường hệ thống.use python and pytesseract library to extract the text. The image should have text inside it to find the output text. The extraction of text with pytesseract needs a library to be installed in the system environment.