Dự án nhận dạng ký tự quang học trong mã Python

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

Dự án nhận dạng ký tự quang học trong mã Python

Để 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

Dự án nhận dạng ký tự quang học trong mã Python

Đầ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

Dự án nhận dạng ký tự quang học trong mã Python
Hình ảnh đánh giá mẫu

bước.  

  1. Tạo danh sách tất cả các hình ảnh đánh giá có sẵn
  2. Nếu cần xem hình ảnh bằng cv2. phương thức imshow()
  3. Đọc văn bản từ hình ảnh bằng pytesseract
  4. Tạo khung dữ liệu
  5. Tiền xử lý văn bản – loại bỏ các ký tự đặc biệt, dừng từ
  6. 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

Dự án nhận dạng ký tự quang học trong mã Python
Đầu ra của mã trên

Bước 4. Tạo khung dữ liệu

img = cv2.imread("image.jpg")
4

Dự án nhận dạng ký tự quang học trong mã Python

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

Dự án nhận dạng ký tự quang học trong mã Python

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”

  1. 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

Dự án nhận dạng ký tự quang học trong mã Python

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

Dự án nhận dạng ký tự quang học trong mã Python

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

Dự án nhận dạng ký tự quang học trong mã Python

Hoàn thành mã.  

  1. 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ả

Nhận dạng ký tự quang học trong Python là gì?

Nhận dạng ký tự quang học (OCR) của Python là gì? . Nó có thể được hoàn thành bằng cách sử dụng công cụ OCR mã nguồn mở Tesseract. Chúng ta có thể làm điều này bằng Python bằng một vài dòng mã. a technology that recognizes and pulls out text in images like scanned documents and photos using Python. It can be completed using the open-source OCR engine Tesseract. We can do this in Python using a few lines of code.

Một ví dụ về nhận dạng ký tự quang học là gì?

OCR thường là một phần của các giải pháp trí tuệ nhân tạo khác mà các doanh nghiệp có thể triển khai. Ví dụ: nó quét và đọc biển số và biển báo trên xe tự lái , phát hiện logo thương hiệu trong các bài đăng trên mạng xã hội hoặc xác định bao bì sản phẩm trong quảng cáo .

Dự án OCR là gì?

Nhận dạng ký tự quang học hay trình đọc ký tự quang học (OCR) là công nghệ phát hiện văn bản trên hình ảnh kỹ thuật số . Nó được sử dụng rộng rãi để đọc văn bản trong các hình ảnh và tài liệu được quét. Phần mềm OCR chuyển đổi các tài liệu và hình ảnh vật lý thành các tệp văn bản có thể chỉnh sửa.

OpenCV có thể được sử dụng cho OCR không?

Gói OpenCV được sử dụng để đọc ảnh và thực hiện một số kỹ thuật xử lý ảnh nhất định . Python-tesseract là một trình bao bọc cho Công cụ Tesseract-OCR của Google được sử dụng để nhận dạng văn bản từ hình ảnh. Tải xuống tệp thực thi tesseract từ liên kết này.