Hướng dẫn how do i extract text from a picture using easyocr python library? - làm cách nào để trích xuất văn bản từ hình ảnh bằng thư viện python easyocr?

Bài viết này đã được xuất bản như một phần của & NBSP; Data Science Blogathon

OCR trước đây được gọi là nhận dạng nhân vật quang học là cách mạng cho thế giới kỹ thuật số ngày nay. OCR thực sự là một quá trình hoàn chỉnh, theo đó các hình ảnh/tài liệu có mặt trong một thế giới kỹ thuật số được xử lý và từ văn bản đang được xử lý dưới dạng văn bản có thể chỉnh sửa thông thường.Optical Character Recognition which is revolutionary for the digital world nowadays. OCR is actually a complete process under which the images/documents which are present in a digital world are processed and from the text are being processed out as normal editable text.

Mục đích của OCR

OCR là một công nghệ cho phép bạn chuyển đổi các loại tài liệu khác nhau, chẳng hạn như tài liệu giấy được quét, tệp PDF hoặc hình ảnh được chụp bởi máy ảnh kỹ thuật số thành dữ liệu có thể chỉnh sửa và có thể tìm kiếm.scanned paper documents, PDF files, or images captured by a digital camera into editable and searchable data.

Easyoc là gì?

Easyoc thực sự là một gói Python chứa Pytorch như một người xử lý phụ trợ. Easyoc giống như bất kỳ OCR nào khác (Tesseract của Google hoặc bất kỳ loại nào khác) phát hiện văn bản từ hình ảnh nhưng trong tài liệu tham khảo của tôi, trong khi sử dụng nó, tôi thấy rằng đó là cách đơn giản nhất để phát hiện văn bản từ hình ảnh khi thư viện học tập sâu (Pytorch) cao cấp nhất (Pytorch) đang hỗ trợ nó trong phần phụ trợ làm cho nó chính xác đáng tin cậy hơn. Easyoc hỗ trợ hơn 42 ngôn ngữ cho mục đích phát hiện. Easyoc được tạo ra bởi công ty tên là Công ty AI Jaided.PyTorch as a backend handler. EasyOCR like any other OCR(tesseract of Google or any other) detects the text from images but in my reference, while using it I found that it is the most straightforward way to detect text from images also when high end deep learning library(PyTorch) is supporting it in the backend which makes it accuracy more credible. EasyOCR supports 42+ languages for detection purposes. EasyOCR is created by the company named Jaided AI company.

Mục lục

  1. Cài đặt phụ thuộc cốt lõi
  2. Nhập thư viện
  3. Đọc hình ảnh
    • Thông qua url
    • Địa phương
  4. Trích xuất văn bản từ hình ảnh
    • Với GPU
    • Không có GPU
    • Văn bản tiếng Anh
    • Văn bản Thổ Nhĩ Kỳ và các ngôn ngữ khác
  5. Vẽ kết quả trên hình ảnh
    • ví dụ 1
    • Ví dụ 2
    • Xử lý nhiều dòng văn bản

1. Cài đặt phụ thuộc cốt lõi

  • Pytorch

Cài đặt Pytorch làm gói hoàn chỉnh có thể là một chút khó khăn vì vậy tôi khuyên bạn nên đi qua trang web chính thức của Pytorch. Khi bạn sẽ mở trang web chính thức của nó thì đó là những gì bạn sẽ thấy trong giao diện của nó như trong hình ảnh dưới đây.PyTorch. When you will open its official site then that’s what you will see in its interface as in the image below.

Bây giờ, nếu bạn sẽ xem xét kỹ vào hình ảnh trên, người ta có thể phát hiện ra rằng có rất nhiều tùy chọn có sẵn cho chúng tôi lựa chọn và nhận lệnh tương thích nhất theo lựa chọn của chúng tôi.

Hãy để tôi chỉ cho bạn một đại diện cho những gì tôi đang cố gắng đề cập !..

Trong đại diện trên, người ta có thể nhận thấy rằng tôi đã chọn gói: PIP và Nền tảng tính toán: CPU và dựa trên các lựa chọn của tôi, tôi đã nhận được lệnh là - Pip Install Torch Torchvision Torchaudio. Sau khi nhận được lệnh này, nó sẽ giống như đi trên một chiếc bánh, chỉ cần chạy lệnh này trên dấu nhắc lệnh của bạn và thư viện Pytorch của bạn sẽ được cài đặt thành công.Package: pip and Compute platform: CPU and based on my choices I got the command as – pip install torch torchvision torchaudio. After getting this command it would be like walking on a cake, simply just run this command on your command prompt and your PyTorch library will be installed successfully.

  • Easyoc

Sau khi cài đặt thư viện Pytorch thành công, nó khá dễ dàng để cài đặt thư viện Easyoc, người ta chỉ cần chạy lệnh sau:the EasyOCR library, one just has to run the following command:

pip3 install easyocr

Sau đó, giao diện nhắc lệnh của bạn sẽ giống như:

Hướng dẫn how do i extract text from a picture using easyocr python library? - làm cách nào để trích xuất văn bản từ hình ảnh bằng thư viện python easyocr?

2. Nhập thư viện

import os
import easyocr
import cv2
from matplotlib import pyplot as plt
import numpy as np

3. Đọc hình ảnh

  • Chụp ảnh trực tuyến: Ở đây chúng tôi sẽ chụp ảnh từ URL (trực tuyến) Here we will take an image from a URL (online)

IMAGE_PATH = 'https://blog.aspose.com/wp-content/uploads/sites/2/2020/05/Perform-OCR-using-C.jpg'

Trong đoạn mã trên, người ta có thể nhận thấy rằng Image_Path giữ URL của hình ảnh.IMAGE_PATH holds the URL of the image.

  • Lấy hình ảnh làm đầu vào cục bộ: Ở đây chúng tôi sẽ chụp ảnh từ hệ thống cục bộ.: Here we will take an image from the local system.

IMAGE_PATH = 'Perform-OCR.jpg'

Trong đoạn mã trên, người ta có thể nhận thấy rằng tôi đã lấy hình ảnh cục bộ, tức là từ hệ thống cục bộ.image locally i.e. from the local system.

  • Phát hiện văn bản tiếng Anh

reader = easyocr.Reader(['en'])
result = reader.readtext(IMAGE_PATH,paragraph="False")
result

Output:

[[[[95, 71], [153, 71], [153, 107], [95, 107]], 'OCR']]

Thêm một hình ảnh cho sở thích của bạn.

Bây giờ cuối cùng, chúng tôi đã trích xuất văn bản từ hình ảnh đã cho

Hãy để phân chia mã theo từng dòng:

  1. Ở đây, chúng tôi đang sử dụng lớp đọc từ lớp Easyoc và sau đó truyền ['en'] như một thuộc tính có nghĩa là bây giờ nó sẽ chỉ phát hiện phần tiếng Anh của hình ảnh làm văn bản, nếu nó sẽ tìm thấy các ngôn ngữ khác như tiếng Trung và tiếng Nhật thì Nó sẽ bỏ qua những văn bản đó.Reader class from easyocr class and then passing [‘en’] as an attribute which means that now it will only detect the English part of the image as text, if it will find other languages like Chinese and Japanese then it will ignore those text.
  2. Bây giờ, như trong dòng trên, chúng tôi đã đặt thuộc tính cho ngôn ngữ, vì vậy, ở đây chúng tôi đang tải Image_path trong hàm readtext () và người ta sẽ tìm ra một tham số là đoạn văn của nó ở đây, nó được đặt là sai có nghĩa là Bây giờ Easyoc sẽ không kết hợp các kết quả, tức là nếu Easyoc sẽ gặp nhiều văn bản, nó sẽ không kết hợp chúng thay vào đó nó sẽ hiển thị riêng chúng.IMAGE_PATH in the readText() function and one will find out a parameter which is “paragraph” here it is set as False which means that now easyOCR will not combine the results i.e. if easyocr will encounter multiple texts it will not combine them instead it will show them separately.
  3. Nhận kết quả dưới dạng một mảng 2 chiều.2-D NumPy array.

  • Phát hiện văn bản Thổ Nhĩ Kỳ

# Changing the image path
IMAGE_PATH = 'Turkish_text.png'
# Same code here just changing the attribute from ['en'] to ['zh']
reader = easyocr.Reader(['tr'])
result = reader.readtext(IMAGE_PATH,paragraph="False")
result

Output:

[[[[89, 7], [717, 7], [717, 108], [89, 108]],
  'Most Common Texting Slang in Turkish'],
 [[[392, 234], [446, 234], [446, 260], [392, 260]], 'test'],
 [[[353, 263], [488, 263], [488, 308], [353, 308]], 'yazmak'],
 [[[394, 380], [446, 380], [446, 410], [394, 410]], 'link'],
 [[[351, 409], [489, 409], [489, 453], [351, 453]], 'bağlantı'],
 [[[373, 525], [469, 525], [469, 595], [373, 595]], 'tag etiket'],
 [[[353, 674], [483, 674], [483, 748], [353, 748]], 'follov takip et']]

Đối với sở thích của bạn, tôi đã thêm hình ảnh mà tôi đã thực hiện phát hiện văn bản Thổ Nhĩ Kỳ này!

Thực tế

Easyoc hiện đang hỗ trợ 42 ngôn ngữ Tôi đã cung cấp cho tất cả các ngôn ngữ đó với các ký hiệu của chúng. Hãy vui vẻ với nó các bạn!supports 42 languages I have provided the set of all those languages with their notations. Have fun with it guys!

Afrikaans (AF), Azerbaijani (AZ), Bosnian (BS), Séc (CS), Welsh (Cy), Đan Mạch (DA), Đức (DE), English (EN), Tây Ban Nha (ES), Estonia (ET), Tiếng Pháp (FR), Ailen (GA), Croatia (HR), Hungary (HU), Indonesia (ID), Iceland (IS), tiếng Ý (IT), Nhật Bản (JA), Hàn Quốc (KO), người Kurd (KU), Latin (LA), Litva (LT), Latvian (LV), Maori (MI), Malay (MS), Maltese (MT), Hà Lan (NL), Na Uy (NO), Ba Lan (PL), Bồ Đào Nha (PT), Rumani (RO), Slovak (SK), Slovenia (SL), Albanian (SQ), Thụy Điển (SV), Swahili (SW), Thái (th), Tagalog (TL), Thổ Nhĩ Kỳ (TR), Uzbek (UZ), Việt Nam (VI), Trung Quốc (ZH) - Nguồn: & NBSP; JaidedaiJaidedAI

Easyoc cung cấp đủ linh hoạt để chọn phát hiện văn bản với GPU hoặc không có. provides enough flexibility to choose Text detection with GPU or without.

  • Trích xuất văn bản từ hình ảnh với GPU

# Changing the image path
IMAGE_PATH = 'Turkish_text.png'
import os
import easyocr
import cv2
from matplotlib import pyplot as plt
import numpy as np
0

Output:

import os
import easyocr
import cv2
from matplotlib import pyplot as plt
import numpy as np
1
  • Trích xuất văn bản từ hình ảnh mà không có GPUwithout GPU

import os
import easyocr
import cv2
from matplotlib import pyplot as plt
import numpy as np
2
import os
import easyocr
import cv2
from matplotlib import pyplot as plt
import numpy as np
3

Output:

import os
import easyocr
import cv2
from matplotlib import pyplot as plt
import numpy as np
4

Lưu ý: Nếu bạn không có GPU và bạn chưa đặt nó là sai thì bạn sẽ nhận được cảnh báo sau: If you don’t have the GPU and yet you are not setting it as False then you will get the following warning:

Hướng dẫn how do i extract text from a picture using easyocr python library? - làm cách nào để trích xuất văn bản từ hình ảnh bằng thư viện python easyocr?

5.1. Vẽ kết quả cho văn bản một dòng-Ví dụ 1

import os
import easyocr
import cv2
from matplotlib import pyplot as plt
import numpy as np
5

Trong đoạn mã trên,

  1. Chúng tôi đang cố gắng để các tọa độ vẽ hộp giới hạn và văn bản qua hình ảnh của chúng tôi mà chúng tôi phải thực hiện phát hiện.coordinates to draw the bounding box and text over our image on which we have to perform our detection.
  2. Trong biến TOP_LEFT, chúng tôi đang có được tọa độ của góc TOP_LEFT dưới dạng truy cập Tuple từ kết quả. Tương tự, chúng ta có thể thấy rằng trong tọa độ bottom_right.top_left variable, we are getting the coordinate of the top_left corner in the form of tuple accessing from results. Similarly, we can see that in the bottom_right coordinate.
  3. Nhận tọa độ văn bản từ định dạng mảng 2-D2-d array format
  4. Chọn phông chữ của văn bản là font_hershey_simplex từ gói CV2.FONT_HERSHEY_SIMPLEX from cv2 package.

import os
import easyocr
import cv2
from matplotlib import pyplot as plt
import numpy as np
6

Bây giờ, như thể chúng ta đã có các tọa độ, hãy để Lôi chỉ vẽ chúng!

  1. Đọc hình ảnh bằng hàm cv2 imread ()cv2 imread() function
  2. Vẽ hình chữ nhật bằng Top_left và tọa độ dưới cùng và tạo màu gốc ((0,255,0)) và độ dày (3).top_left and bottom_right coordinates and giving a descent color((0,255,0)) and thickness(3).
  3. Vẽ văn bản qua hình ảnh bằng cách sử dụng tọa độ TOP_LEFT (ngay phía trên hộp giới hạn hình chữ nhật)top_left coordinate (just above the rectangle- bounding box)
  4. Hiển thị hình ảnh

Output:

Hướng dẫn how do i extract text from a picture using easyocr python library? - làm cách nào để trích xuất văn bản từ hình ảnh bằng thư viện python easyocr?

5.2. Vẽ kết quả cho văn bản một dòng-Ví dụ 2

import os
import easyocr
import cv2
from matplotlib import pyplot as plt
import numpy as np
7

Output:

import os
import easyocr
import cv2
from matplotlib import pyplot as plt
import numpy as np
8

Nhận tọa độ

import os
import easyocr
import cv2
from matplotlib import pyplot as plt
import numpy as np
5

Vẽ văn bản và hộp giới hạn

IMAGE_PATH = 'https://blog.aspose.com/wp-content/uploads/sites/2/2020/05/Perform-OCR-using-C.jpg'
0

Output:

Hướng dẫn how do i extract text from a picture using easyocr python library? - làm cách nào để trích xuất văn bản từ hình ảnh bằng thư viện python easyocr?

Nhưng hãy giữ! Điều gì sẽ xảy ra nếu chúng ta muốn xem tất cả các phát hiện văn bản trong một hình ảnh?

Đó là những gì tôi sẽ làm trong phần này!

5.3. Vẽ kết quả cho nhiều dòng

IMAGE_PATH = 'https://blog.aspose.com/wp-content/uploads/sites/2/2020/05/Perform-OCR-using-C.jpg'
1
IMAGE_PATH = 'https://blog.aspose.com/wp-content/uploads/sites/2/2020/05/Perform-OCR-using-C.jpg'
2

Trong đoạn mã trên, chúng ta chỉ cần tập trung vào một vài điểm:

  1. Thay vì phát hiện văn bản một dòng, ở đây chúng ta đang lặp qua tất cả các phát hiện vì chúng ta muốn vẽ nhiều dòng văn bản
  2. Mặc dù việc cung cấp các tọa độ trên CV2.puttext, chúng tôi đang sử dụng một biến bổ sung, đó là Spacer Spacer, bản tin này sau đó trong mã đang được tăng lên +15, giúp hạn chế văn bản va chạm với nhau.cv2.putText we are using an extra variable which is “spacer” this spacer later in the code is being incremented to +15 which is helping to restrict the text to collide over each other.
  3. Biến Spacer này sẽ giúp văn bản vẫn được sắp xếp và cách đều nhau.spacer variable will help the text to remain sorted and equally spaced.

Output:

Hướng dẫn how do i extract text from a picture using easyocr python library? - làm cách nào để trích xuất văn bản từ hình ảnh bằng thư viện python easyocr?

Kết luận của mô hình cũng kết thúc cuộc thảo luận của tôi cho ngày hôm nay 🙂

Kết thúc

Cảm ơn bạn đã đọc bài viết của tôi 🙂

Tôi hy vọng bạn đã tận hưởng việc thực hiện thực tế và giải thích theo từng dòng của Hướng dẫn thực hành Easyoc

Tôi đã cung cấp liên kết mã ở đây để các bạn cũng có thể học và đóng góp cho dự án này để làm cho nó thậm chí còn tốt hơn.

Bạn sẽ không bao giờ muốn bỏ lỡ bài viết trước của tôi về, phát hiện gian lận thẻ PAN PAN được xuất bản trên Phân tích Vidhyaas một phần của Dữ liệu Khoa học Blogathon-9. Tham khảo liên kết nàyPAN card fraud detection” published on Analytics Vidhyaas a part of the Data Science Blogathon-9. Refer to this link

Cũng trên, khám phá thuốc bằng cách sử dụng máy học. Tham khảo liên kết này.“Drug discovery using machine learning”. Refer to this link.

Nếu có bất kỳ truy vấn nào bạn có thể kết nối với tôi trên LinkedIn, hãy tham khảo liên kết này

Về tôi

Lời chào cho tất cả mọi người, tôi hiện đang làm việc như một nhà phân tích cộng tác viên khoa học dữ liệu tại Zorba Consulting Ấn Độ. Cùng với công việc bán thời gian, tôi đã có một sự quan tâm to lớn trong cùng một lĩnh vực Trên các miền đã đề cập ở trên (LinkedIn).Zorba Consulting India. Along with part-time work, I’ve got an immense interest in the same field i.e. Data Science along with its other subsets of Artificial Intelligence such as, Computer Vision, Machine learning, and Deep learning feel free to collaborate with me on any project on the above-mentioned domains (LinkedIn).

Các phương tiện truyền thông được 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ả.

Làm thế nào để bạn trích xuất văn bản từ một hình ảnh bằng OpenCV và Easyoc trong Python?

Cách trích xuất văn bản từ hình ảnh trong Python bằng OpenCV và .....
Đầu tiên, chúng tôi sẽ cài đặt các thư viện cần thiết ..
Thứ hai, chúng tôi sẽ thực hiện xử lý hình ảnh từ văn bản bằng cách sử dụng Easyoc trên các hình ảnh khác nhau ..
Thứ ba, chúng tôi sẽ sử dụng OpenCV để phủ các văn bản được phát hiện trên các hình ảnh gốc. Bắt đầu nào..

Làm thế nào tôi có thể lấy văn bản từ một hình ảnh?

Làm thế nào tôi có thể trích xuất văn bản từ một hình ảnh miễn phí ?..
Truy cập ImageTetOtext.info (miễn phí) ..
Tải lên hoặc kéo và thả hình ảnh của bạn ..
Nhấp vào nút Gửi ..
Sao chép văn bản hoặc lưu tệp văn bản trên máy tính của bạn ..

Làm cách nào để trích xuất thông tin từ một bức ảnh?

Làm thế nào để trích xuất dữ liệu từ hình ảnh..
Mở tệp hình ảnh.Khởi chạy pdfelement trên PC của bạn để truy cập vào cửa sổ nhà.....
Hình ảnh OCR PDF.Khi tệp hình ảnh tải trên pdfelement, hãy truy cập vào thanh công cụ và nhấp vào tab Công cụ trực tuyến.....
Trích xuất dữ liệu từ hình ảnh.....
Chọn chế độ trích xuất.....
Lưu dữ liệu trích xuất ..

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

Các công cụ chính sau đây được sử dụng:..
OpenCV, để tìm các cấu trúc trong hình ảnh để tự động chia hình ảnh thành các phân đoạn in và các phân đoạn viết tay ..
API Google Cloud Vision, để trích xuất văn bản từ phân đoạn chữ viết tay ..
Tesseract và pytesseract, để trích xuất văn bản từ phân đoạn in ..