Python chuyển đổi hình ảnh thành văn bản

Xử lý hình ảnh không phải là một nhiệm vụ tầm thường. Đối với bạn, với tư cách là một con người, thật dễ dàng để nhìn vào một thứ gì đó và ngay lập tức biết bạn đang nhìn thứ gì. Nhưng máy tính không hoạt động theo cách đó

Ảnh của Lenin Estrada trên Bapt

Các nhiệm vụ quá khó đối với bạn, chẳng hạn như số học phức tạp và toán học nói chung, là thứ mà máy tính nhai mà không đổ mồ hôi. Nhưng ở đây, điều hoàn toàn ngược lại được áp dụng — những nhiệm vụ tầm thường đối với bạn, chẳng hạn như nhận biết đó là con mèo hay con chó trong một hình ảnh thực sự khó đối với máy tính. Theo một cách nào đó, chúng tôi là một cặp đôi hoàn hảo. Ít nhất cho tới hiện tại

Mặc dù việc phân loại hình ảnh và các tác vụ liên quan đến một số mức độ thị giác máy tính có thể yêu cầu một đoạn mã tốt và hiểu biết vững chắc, nhưng việc đọc văn bản từ một hình ảnh được định dạng tốt hóa ra lại là một công việc đơn giản trong Python —và có thể được áp dụng cho điều đó.

Và trong bài viết hôm nay, tôi muốn chứng minh nhận định đó. Sẽ có một số cài đặt cần thực hiện, nhưng sẽ không mất nhiều thời gian. Đây là những thư viện bạn sẽ cần

  • OpenCV
  • PyTesseract

Tôi không muốn kéo dài phần giới thiệu này nữa, vậy tại sao chúng ta không nhảy vào nội dung hay ngay bây giờ

OpenCV

Bây giờ, thư viện này sẽ chỉ được sử dụng để tải (các) hình ảnh, bạn thực sự không cần phải hiểu rõ về nó trước (mặc dù nó có thể hữu ích, bạn sẽ hiểu tại sao)

Theo tài liệu chính thức

OpenCV (Open Source Computer Vision Library) là một thư viện phần mềm thị giác máy tính và máy học mã nguồn mở. OpenCV được xây dựng để cung cấp cơ sở hạ tầng chung cho các ứng dụng thị giác máy tính và để tăng tốc việc sử dụng nhận thức máy trong các sản phẩm thương mại. Là một sản phẩm được cấp phép BSD, OpenCV giúp các doanh nghiệp dễ dàng sử dụng và sửa đổi mã. [1]

Tóm lại, bạn có thể sử dụng OpenCV để thực hiện bất kỳ loại chuyển đổi hình ảnh nào, đó là thư viện khá đơn giản

Nếu bạn chưa cài đặt nó, nó sẽ chỉ là một dòng duy nhất trong thiết bị đầu cuối

pip install opencv-python

Và đó là khá nhiều nó. Mọi thứ vẫn dễ dàng cho đến thời điểm này, nhưng điều đó sắp thay đổi

PyTesseract

Thư viện này là cái quái gì vậy?

Tesseract là một công cụ nhận dạng ký tự quang học cho các hệ điều hành khác nhau. Đây là phần mềm miễn phí, được phát hành theo Giấy phép Apache, Phiên bản 2. 0 và sự phát triển đã được tài trợ bởi Google từ năm 2006. [2]

Tôi chắc rằng hiện có nhiều thư viện phức tạp hơn, nhưng tôi thấy thư viện này hoạt động khá tốt. Dựa trên kinh nghiệm của riêng tôi, thư viện này sẽ có thể đọc văn bản từ bất kỳ hình ảnh nào, miễn là phông chữ không phải là một số thứ nhảm nhí *** mà ngay cả bạn cũng không thể đọc được

Nếu nó không thể đọc từ hình ảnh của bạn, hãy dành nhiều thời gian hơn để chơi với OpenCV, áp dụng các bộ lọc khác nhau để làm nổi bật văn bản

Bây giờ việc cài đặt hơi khó khăn ở phía dưới. Nếu bạn đang sử dụng Linux, tất cả chỉ cần một vài lệnh sudo-apt get

sudo apt-get update
sudo apt-get install tesseract-ocr
sudo apt-get install libtesseract-dev

Tôi đang dùng Windows, vì vậy quá trình này hơi tẻ nhạt hơn một chút

Đầu tiên, mở URL NÀY và tải xuống bộ cài đặt 32 bit hoặc 64 bit

Bản thân việc cài đặt rất đơn giản, chỉ cần nhấp vào Tiếp theo một vài lần. Và vâng, bạn cũng cần thực hiện cài đặt pip

pip install pytesseract

Đó là tất cả? . Bạn vẫn cần nói cho Python biết nơi cài đặt Tesseract. Trên máy Linux, tôi không phải làm như vậy nhưng trên Windows thì bắt buộc. Theo mặc định, nó được cài đặt trong Program Files

Nếu bạn đã làm đúng mọi thứ, việc thực thi ô này sẽ không gây ra bất kỳ lỗi nào

Mọi thứ có tốt không?

Đọc văn bản

Hãy bắt đầu với một cái đơn giản. Tôi đã tìm thấy một số hình ảnh miễn phí bản quyền có chứa một số loại văn bản và hình đầu tiên là hình này

https. //tải lên. wikimedia. org/wikipedia/commons/thumb/b/bc/Wikinews_Breaking_News. png/800px-Wikinews_Breaking_News. png

Nó phải là một cách dễ dàng và có khả năng Tesseract sẽ đọc những 'đối tượng' màu xanh đó dưới dạng dấu ngoặc. Hãy xem điều gì sẽ xảy ra

Yêu cầu của tôi là đúng. Tuy nhiên, đó không phải là vấn đề, bạn có thể dễ dàng giải quyết những vấn đề đó bằng một số phép thuật Python

Cái tiếp theo có thể phức tạp hơn

https. //sống. tĩnhflickr. com/7892/46879778504_3b11c328b0_b. jpg

Tôi hy vọng nó sẽ không phát hiện chữ 'B' trên đồng xu

Có vẻ như nó hoạt động hoàn hảo

Bây giờ tùy thuộc vào bạn để áp dụng điều này cho vấn đề của riêng bạn. Các kỹ năng OpenCV có thể có tầm quan trọng sống còn ở đây nếu văn bản hòa trộn với nền

Trước khi bạn đi

Đọc văn bản từ một hình ảnh là một nhiệm vụ khá khó khăn để máy tính thực hiện. Thử nghĩ xem, máy tính không biết chữ cái là gì, nó chỉ làm việc với các con số. Điều gì xảy ra đằng sau mui xe thoạt nghe có vẻ giống như một hộp đen, nhưng tôi khuyến khích bạn điều tra thêm nếu đây là lĩnh vực bạn quan tâm

Tôi không nói rằng PyTesseract sẽ luôn hoạt động hoàn hảo, nhưng tôi thấy nó đủ tốt ngay cả trên một số hình ảnh phức tạp hơn. Nhưng không thẳng ra khỏi hộp. Một số thao tác hình ảnh là cần thiết để làm cho văn bản nổi bật

Đó là một chủ đề phức tạp, tôi biết. Lấy nó một ngày tại một thời điểm. Một ngày nào đó nó sẽ là bản chất thứ hai với bạn

Thích bài viết? . Tôi sẽ nhận được một phần phí thành viên của bạn nếu bạn sử dụng liên kết sau mà không phải trả thêm phí

Bạn có thể chuyển đổi hình ảnh thành văn bản?

Có những chương trình sử dụng Nhận dạng ký tự quang học (OCR) để phân tích các chữ cái và từ trong hình ảnh, sau đó chuyển đổi chúng thành văn bản . Có một số lý do khiến bạn có thể muốn sử dụng công nghệ OCR để sao chép văn bản từ hình ảnh hoặc PDF.