Python được sử dụng rộng rãi để phân tích dữ liệu nhưng dữ liệu không cần phải luôn ở định dạng bắt buộc. Trong những trường hợp như vậy, chúng tôi chuyển đổi định dạng đó [như PDF hoặc JPG, v.v. ] sang định dạng văn bản, để phân tích dữ liệu theo cách tốt hơn. Python cung cấp nhiều thư viện để thực hiện nhiệm vụ này. Có một số cách để thực hiện việc này, bao gồm sử dụng các thư viện như PyPDF2 trong Python. Nhược điểm chính của việc sử dụng các thư viện này là sơ đồ mã hóa. Tài liệu PDF có thể có nhiều loại mã hóa bao gồm UTF-8, ASCII, Unicode, v.v. Vì vậy, chuyển đổi PDF thành văn bản có thể dẫn đến mất dữ liệu do sơ đồ mã hóa. Hãy xem cách đọc tất cả nội dung của tệp PDF và lưu trữ tệp đó trong tài liệu văn bản bằng OCR. Đầu tiên, chúng ta cần chuyển đổi các trang PDF thành hình ảnh, sau đó sử dụng OCR [Nhận dạng ký tự quang học] để đọc nội dung từ hình ảnh và lưu trữ dưới dạng tệp văn bản.
Cài đặt cần thiết
pip3 install PIL pip3 install pytesseract pip3 install pdf2image sudo apt-get install tesseract-ocr
Có hai phần của chương trình như sau
Phần #1 đề cập đến việc chuyển đổi PDF thành tệp hình ảnh. Mỗi trang của PDF được lưu trữ dưới dạng tệp hình ảnh. Tên của các hình ảnh được lưu trữ là. Trang PDF 1 -> trang_1. jpg PDF trang 2 -> trang_2. jpg PDF trang 3 -> trang_3. jpg …. Trang PDF trong -> trang. jpg
Phần #2 đề cập đến việc nhận dạng văn bản từ tệp hình ảnh và lưu trữ nó vào tệp văn bản. Ở đây, chúng tôi xử lý hình ảnh và chuyển đổi nó thành văn bản. Khi chúng tôi có văn bản dưới dạng biến chuỗi, chúng tôi có thể thực hiện bất kỳ xử lý nào trên văn bản. Ví dụ: trong nhiều tệp PDF, khi hoàn thành một dòng, nhưng một từ cụ thể không thể được viết hoàn toàn trong cùng một dòng, dấu gạch nối ['-'] sẽ được thêm vào và từ đó được tiếp tục ở dòng tiếp theo. Ví dụ -
This is some sample text but this parti- cular word could not be written in the same line.
Bây giờ đối với những từ như vậy, quá trình tiền xử lý cơ bản được thực hiện để chuyển đổi dấu gạch nối và dòng mới thành một từ đầy đủ. Sau khi tất cả quá trình tiền xử lý hoàn tất, văn bản này được lưu trữ trong một tệp văn bản riêng. Để nhận các tệp PDF đầu vào được sử dụng trong mã, hãy nhấp vào d. pdf.
Chúng ta, con người, đọc văn bản gần như mỗi phút trong cuộc đời của chúng ta. Sẽ không tuyệt sao nếu máy móc hoặc hệ thống của chúng ta cũng có thể đọc văn bản giống như cách chúng ta làm?
Nhận dạng ký tự quang học [OCR]
Nhận dạng ký tự quang học [OCR] là kỹ thuật đọc hoặc lấy văn bản từ ảnh in hoặc ảnh quét, ảnh viết tay và chuyển đổi chúng thành định dạng kỹ thuật số có thể chỉnh sửa và tìm kiếm được
Các ứng dụng
OCR có rất nhiều ứng dụng trong kinh doanh ngày nay. Một vài trong số họ được liệt kê dưới đây
- Nhận dạng hộ chiếu tại sân bay
- Tự động hóa Nhập liệu
- nhận dạng biển số xe
- Trích xuất thông tin danh thiếp vào danh sách liên hệ
- Chuyển đổi tài liệu viết tay thành hình ảnh điện tử
- Tạo các tệp PDF có thể tìm kiếm
- Tạo tệp âm thanh [văn bản thành âm thanh]
Một số công cụ OCR nguồn mở là Tesseract, OCRopus
Trong bài viết này, chúng tôi sẽ tập trung vào Tesseract OCR. Và để đọc những hình ảnh chúng ta cần OpenCV
Cài đặt Tesseract OCR
Tải xuống trình cài đặt mới nhất cho windows 10 từ “https. //github. com/UB-Mannheim/tesseract/wiki“. thực hiện. exe sau khi được tải xuống
Ghi chú. Đừng quên copy đường dẫn cài đặt phần mềm. Chúng tôi sẽ yêu cầu nó sau vì chúng tôi cần thêm đường dẫn của tệp thực thi tesseract vào mã nếu thư mục cài đặt khác với mặc định
Đường dẫn cài đặt điển hình trong hệ thống Windows là C. File chương trình
Vì vậy, trong trường hợp của tôi, đó là “C. Tệp chương trìnhTesseract-OCRtesseract. exe“
Tiếp theo, để cài đặt trình bao bọc Python cho Tesseract, hãy mở dấu nhắc lệnh và thực hiện lệnh “pip install pytesseract“
OpenCV [Open Source Computer Vision] là một thư viện mã nguồn mở dành cho các ứng dụng xử lý hình ảnh, máy học và thị giác máy tính.
OpenCV-Python là API Python cho OpenCV
Để cài đặt nó, hãy mở dấu nhắc lệnh và thực hiện lệnh “pip install opencv-python“
Xây dựng Tập lệnh OCR mẫu
1. Đọc một hình ảnh mẫu
import cv2
Đọc hình ảnh bằng cv2. imread[] và lưu trữ nó trong một biến “img”
img = cv2.imread["image.jpg"]
Nếu cần, hãy thay đổi kích thước hình ảnh bằng cv2. phương pháp thay đổi kích thước []
img = cv2.resize[img, [400, 400]]
Hiển thị hình ảnh bằng cv2. phương thức imshow[]
cv2.imshow["Image", img]
Hiển thị cửa sổ vô hạn [để ngăn kernel bị sập]
cv2.waitKey[0]
Đóng tất cả các cửa sổ đang mở
cv2.destroyAllWindows[]
2. Chuyển đổi hình ảnh thành chuỗi
________số 8Đặt đường dẫn tesseract trong mã
pytesseract.pytesseract.tesseract_cmd=r'C:Program FilesTesseract-OCRtesseract.exe'
Lỗi dưới đây xảy ra nếu chúng tôi không đặt đường dẫn
Để chuyển đổi hình ảnh thành chuỗi, hãy sử dụng pytesseract. image_to_string[img] và lưu trữ nó trong một biến “text”
This is some sample text but this parti- cular word could not be written in the same line.0
in kết quả
This is some sample text but this parti- cular word could not be written in the same line.1
Hoàn thành mã.
img = cv2.imread["image.jpg"]0
Đầu ra cho đoạn mã trên
Đầu ra của mã trên
Nếu chúng ta quan sát đầu ra, trích dẫn chính được trích xuất hoàn hảo, nhưng không lấy được tên của triết gia và văn bản ở dưới cùng của hình ảnh
Để trích xuất văn bản một cách chính xác và để tránh giảm độ chính xác, chúng ta cần thực hiện một số tiền xử lý hình ảnh. Tôi tìm thấy bài viết này [https. // hướng tới khoa học dữ liệu. com/pre-processing-in-ocr-fc231c6035a7] khá hữu ích. Tham khảo để hiểu rõ hơn về kỹ thuật tiền xử lý
Hoàn hảo. Bây giờ chúng ta đã có những kiến thức cơ bản cần thiết, Hãy cùng xem một số ứng dụng đơn giản của OCR
1. Xây dựng các đám mây từ trên Hình ảnh đánh giá
Đám mây từ là một đại diện trực quan của tần số từ. Từ xuất hiện trong đám mây từ càng lớn thì từ đó càng được sử dụng phổ biến trong văn bản
Đối với điều này, tôi đã chụp một số ảnh chụp nhanh các bài đánh giá từ Amazon cho sản phẩm Apple iPad Thế hệ thứ 8
Hình ảnh minh họa
bước.
- Tạo danh sách tất cả các hình ảnh đánh giá có sẵn
- Nếu cần xem hình ảnh bằng cv2. phương thức imshow[]
- Đọc văn bản từ hình ảnh bằng pytesseract
- Tạo khung dữ liệu
- Tiền xử lý văn bản – loại bỏ các ký tự đặc biệt, dừng từ
- Xây dựng các đám mây từ tích cực, tiêu cực
Bước 1. Tạo danh sách tất cả các hình ảnh đánh giá có sẵn
img = cv2.imread["image.jpg"]1
Bước 2. Nếu cần xem hình ảnh bằng cv2. phương thức imshow[]
img = cv2.imread["image.jpg"]2
Bước 3. Đọc văn bản từ hình ảnh bằng pytesseract
img = cv2.imread["image.jpg"]3
Bước 4. Tạo khung dữ liệu
img = cv2.imread["image.jpg"]4
Bước 5. Tiền xử lý văn bản – loại bỏ các ký tự đặc biệt, từ khóa
img = cv2.imread["image.jpg"]5
Xóa các từ dừng khỏi 'Đánh giá đã làm sạch' và nối tất cả các từ còn lại vào một biến danh sách “Final_list”
img = cv2.imread["image.jpg"]
6
Bước 6. Xây dựng các đám mây từ tích cực, tiêu cực
Cài đặt thư viện word cloud bằng lệnh “pip install wordcloud“
Trong ngôn ngữ tiếng Anh, chúng tôi có một tập hợp các từ tích cực, tiêu cực được xác định trước được gọi là Ý kiến từ vựng. Bạn có thể tải xuống các tệp này từ liên kết hoặc trực tiếp từ repo GitHub của tôi
Khi các tệp được tải xuống, hãy đọc các tệp đó trong mã và tạo danh sách các từ tích cực, tiêu cực
img = cv2.imread["image.jpg"]7
Nhập thư viện để tạo và hiển thị các đám mây từ
img = cv2.imread["image.jpg"]8
đám mây từ tích cực
img = cv2.imread["image.jpg"]9
Từ “tốt” là từ được sử dụng nhiều nhất thu hút sự chú ý của chúng tôi. Nếu chúng ta xem lại các bài đánh giá, mọi người đã viết các bài đánh giá nói rằng iPad có màn hình đẹp, âm thanh tốt, phần mềm và phần cứng tốt
Đám mây từ tiêu cực
img = cv2.resize[img, [400, 400]]0
Các từ đắt tiền, bị mắc kẹt, bị tấn công, thất vọng nổi bật trong đám mây từ tiêu cực. Nếu chúng ta nhìn vào ngữ cảnh của từ bị mắc kẹt, nó sẽ nói "Mặc dù nó chỉ có 3 GB RAM nhưng nó không bao giờ bị kẹt", đây là một điều tích cực về thiết bị
Vì vậy, thật tốt khi xây dựng các đám mây từ bigram/bát quái để không bỏ lỡ ngữ cảnh
2. Tạo tập tin âm thanh [Text to Audio]
gTTS là Thư viện Python với API chuyển văn bản thành giọng nói của Google Dịch
Để cài đặt, thực hiện lệnh “pip install gtts” trong dấu nhắc lệnh
Nhập các thư viện cần thiết
img = cv2.resize[img, [400, 400]]1
Đặt đường dẫn tesseract
pytesseract.pytesseract.tesseract_cmd=r'C:Program FilesTesseract-OCRtesseract.exe'
Đọc hình ảnh bằng cv2. imread[] và lấy văn bản từ hình ảnh bằng pytesseract và lưu trữ nó trong một biến
img = cv2.resize[img, [400, 400]]3
Đặt ngôn ngữ và tạo chuyển đổi văn bản thành âm thanh bằng gTTS bỏ qua văn bản, ngôn ngữ
img = cv2.resize[img, [400, 400]]4
Lưu tệp âm thanh dưới dạng “rev. mp3”
img = cv2.resize[img, [400, 400]]5
phát tập tin âm thanh
img = cv2.resize[img, [400, 400]]6
Hoàn thành mã.
img = cv2.resize[img, [400, 400]]
7
Ghi chú kết thúc
Đến cuối bài viết này, chúng ta đã hiểu khái niệm về Nhận dạng ký tự quang học [OCR] và làm quen với việc đọc ảnh bằng OpenCV và lấy văn bản từ ảnh bằng pytesseract. Chúng ta đã thấy hai ứng dụng cơ bản của OCR – Xây dựng đám mây từ, tạo tệp âm thanh bằng cách chuyển đổi văn bản thành giọng nói bằng gTTS
Người giới thiệu.
Tôi hy vọng bài viết này cung cấp nhiều thông tin và vui lòng cho tôi biết nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào liên quan đến bài viết này trong phần bình luận. Chúc bạn học tập vui vẻ 😊
Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định của Tác giả