Tiết lộ. Bài đăng này có thể chứa các liên kết liên kết, nghĩa là khi bạn nhấp vào liên kết và mua hàng, chúng tôi sẽ nhận được hoa hồng
Con người có thể dễ dàng hiểu nội dung văn bản của một hình ảnh chỉ bằng cách nhìn vào nó. Tuy nhiên, nó không phải là trường hợp cho máy tính. Họ cần một số loại phương pháp hoặc thuật toán có cấu trúc để có thể hiểu nó. Đây là nơi nhận dạng ký tự quang học [OCR] phát huy tác dụng
Nhận dạng ký tự quang học là quá trình phát hiện nội dung văn bản trên hình ảnh và chuyển đổi nó thành văn bản được mã hóa bằng máy mà chúng ta có thể truy cập và thao tác trong Python [hoặc bất kỳ ngôn ngữ lập trình nào] dưới dạng biến chuỗi. Trong hướng dẫn này, chúng ta sẽ sử dụng thư viện Tesseract để làm điều đó
Thư viện Tesseract chứa một công cụ OCR và một chương trình dòng lệnh, vì vậy nó không liên quan gì đến Python, vui lòng làm theo hướng dẫn chính thức của họ để cài đặt, vì đây là công cụ cần thiết cho hướng dẫn này
Chúng tôi sẽ sử dụng mô-đun pytesseract cho Python, một trình bao bọc cho công cụ Tesseract-OCR, vì vậy chúng tôi có thể truy cập nó qua Python
Phiên bản ổn định gần đây nhất của tesseract là 4 sử dụng công cụ OCR dựa trên mạng thần kinh tái phát [LSTM] mới, tập trung vào nhận dạng dòng
CÓ LIÊN QUAN. Cách chuyển lời nói thành văn bản trong Python
Hãy bắt đầu, bạn cần cài đặt
- Công cụ Tesseract-OCR [làm theo hướng dẫn của họ cho hệ điều hành của bạn]
- mô-đun bao bọc pytesseract bằng cách sử dụng.
pip3 install pytesseract
- Các mô-đun tiện ích khác cho hướng dẫn này.
pip3 install numpy matplotlib opencv-python pillow
Sau khi bạn đã cài đặt mọi thứ trong máy của mình, hãy mở một tệp Python mới và làm theo
import pytesseract
import cv2
import matplotlib.pyplot as plt
from PIL import Image
Đối với mục đích trình diễn, tôi sẽ sử dụng hình ảnh này để nhận dạng
# read the image using OpenCV
image = cv2.imread["test.png"]
# or you can use Pillow
# image = Image.open["test.png"]
Như bạn có thể nhận thấy, bạn có thể tải hình ảnh bằng OpenCV hoặc Gối, tôi thích sử dụng OpenCV hơn vì nó cho phép chúng tôi sử dụng máy ảnh trực tiếp
Hãy nhận biết văn bản đó
# get the string
string = pytesseract.image_to_string[image]
# print it
print[string]
Ghi chú. Nếu đoạn mã trên phát sinh lỗi, vui lòng xem xét thêm các nhị phân Tesseract-OCR vào các biến PATH. Đọc hướng dẫn cài đặt chính thức của họ cẩn thận hơn
Hàm image_to_string[] thực hiện chính xác những gì bạn mong đợi, nó chuyển đổi văn bản chứa hình ảnh thành ký tự, hãy xem kết quả
This is a lot of 12 point text to test the
ocr code and see if it works on all types
of file format.
The quick brown dog jumped over the
lazy fox. The quick brown dog jumped
over the lazy fox. The quick brown dog
jumped over the lazy fox. The quick
brown dog jumped over the lazy fox.
Tuyệt vời, có một hàm khác image_to_data[] xuất ra nhiều thông tin hơn thế, bao gồm các từ có tọa độ chiều rộng, chiều cao và x, y tương ứng, điều này sẽ cho phép chúng tôi tạo ra nhiều nội dung hữu ích. Chẳng hạn, hãy tìm kiếm các từ trong tài liệu và vẽ một hộp giới hạn xung quanh một từ cụ thể mà chúng ta chọn, mã bên dưới, xử lý từ đó
# make a copy of this image to draw in
image_copy = image.copy[]
# the target word to search for
target_word = "dog"
# get all data from the image
data = pytesseract.image_to_data[image, output_type=pytesseract.Output.DICT]
Vì vậy, chúng tôi sẽ tìm kiếm từ "dog" trong tài liệu văn bản, chúng tôi muốn dữ liệu đầu ra được cấu trúc và không phải là chuỗi thô, đó là lý do tại sao tôi chuyển output_type thành từ điển, để chúng tôi có thể dễ dàng lấy dữ liệu của từng từ
Hãy lấy tất cả các lần xuất hiện của từ đó
# get all occurences of the that word
word_occurences = [ i for i, word in enumerate[data["text"]] if word.lower[] == target_word ]
Bây giờ hãy vẽ một hộp xung quanh trên mỗi từ
________số 8_______Lưu và hiển thị hình ảnh kết quả
plt.imsave["all_dog_words.png", image_copy]
plt.imshow[image_copy]
plt.show[]
Hãy nhìn vào kết quả
Tuyệt vời phải không? . bạn có thể chuyển tham số lang cho các hàm image_to_string[] hoặc image_to_data[] để dễ dàng nhận dạng văn bản ở các ngôn ngữ khác nhau. Bạn cũng có thể sử dụng hàm image_to_boxes[] để nhận dạng các ký tự và ranh giới hộp của chúng, vui lòng tham khảo tài liệu chính thức và các ngôn ngữ có sẵn của họ để biết thêm thông tin
Tuy nhiên, một lưu ý là phương pháp này rất lý tưởng để nhận dạng văn bản trong các tài liệu và giấy tờ được quét. Các ứng dụng khác của OCR bao gồm tự động hóa nhận dạng hộ chiếu và trích xuất thông tin từ chúng, quy trình nhập dữ liệu, phát hiện và nhận dạng biển số ô tô, v.v.
Ngoài ra, điều này sẽ không hoạt động tốt trên văn bản viết tay, hình ảnh trong thế giới thực phức tạp và hình ảnh không rõ ràng hoặc hình ảnh chứa một lượng văn bản đặc biệt
Được rồi, đó là phần hướng dẫn này, hãy để chúng tôi xem bạn có thể xây dựng những gì với tiện ích này
Chúng tôi đã tạo một hướng dẫn trong đó bạn có thể sử dụng OCR để trích xuất văn bản từ hình ảnh bên trong tệp PDF, hãy xem thử
Cuối cùng, tôi đã thu thập được một số tài nguyên và khóa học hữu ích để bạn tìm hiểu thêm, tôi thực sự khuyên bạn nên tham gia các khóa học sau