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. Show
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ụngOCR 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
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 OCRTả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ẫuimport 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ọaHình ảnh đánh giá mẫubướ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Đầu ra của mã trên Bước 4. Tạo khung dữ liệuimg = 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óaimg = 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”
Bước 6. Xây dựng các đám mây từ tích cực, tiêu cựcCà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ựcimg = 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ựcimg = 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ã.
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. |