Trong bài viết này, tôi sẽ chỉ cho bạn một cách tuyệt vời để sao chép văn bản từ hình ảnh bằng một dòng mã python. Là một con người, bạn có khả năng đọc văn bản từ hình ảnh một cách nhanh chóng sau khi bạn biết cách đọc. Đối với máy tính, quy trình này khác và may mắn thay, có các thư viện python miễn phí cho phép chúng tôi cung cấp cho máy tính của mình khả năng này
Ảnh của Tom S trên Bapt
Một thư viện như vậy là OpenCV, một thư viện python học máy mã nguồn mở. Nó được xây dựng với mục đích cung cấp một cơ sở hạ tầng chung cho thị giác máy tính và tương đối dễ cài đặt
Ngoài ra, Tesseract là phần mềm nhận dạng ký tự quang học hoạt động với OpenCV để diễn giải hình ảnh chứa văn bản
Các ứng dụng của khái niệm này rất phong phú, với các ứng dụng từ việc đọc các tệp phức tạp, đến ghi chú nhanh các thông tin hoặc dữ liệu không thể sao chép [SGK. ]
Đủ với những thứ nhàm chán - hãy bắt đầu viết mã
OpenCV
Thư viện này sẽ được sử dụng để tải hình ảnh. Bạn thực sự không cần biết nó hoạt động như thế nào và rất may là rất dễ cài đặt
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à để đẩy nhanh việc sử dụng nhận thức máy móc trong các sản phẩm thương mại. [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
Nếu bạn chưa cài đặt nó — đó là mã một dòng đơn giản trong cửa sổ cmd [hoặc thiết bị đầu cuối trên máy Mac]
pip install opencv-python
Và đó là tất cả cho OpenCV. Thật không may, Pytesseract phức tạp hơn một chút để thiết lập và chạy nhưng chúng ta sẽ tìm hiểu ngay về nó
PyTesseract
Theo Wikipedia, Tesseract là
“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]”
Chắc chắn có các tùy chọn khác về thư viện nhận dạng ký tự như pyocr, nhưng tesseract dường như là một tùy chọn hiệu quả và phù hợp với các thử nghiệm mà tôi đã chạy với nó cho đến nay
Với hệ điều hành Linux, quá trình này rất đơn giản và có thể được thực hiện bằng 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 nên quá trình này phức tạp hơn một chút
Trước tiên hãy truy cập LIÊN KẾT NÀY và tải xuống trình cài đặt 32-bit hoặc 64-bit
Bản thân việc cài đặt nó rất đơn giản. Bạn chỉ cần nhấp vào tiếp theo khi trình cài đặt bật lên cho đến khi bạn nhận được thông báo “Cài đặt của bạn đã hoàn tất”
Là nó? . Chúng tôi vẫn cần thực hiện một vài lượt cài đặt pip
pip install pytesseract
pip install tesseract
Bạn sẽ cần cài đặt từng gói sau trên thiết bị của mình
- OpenCV
- Pytesseract
- Teseract
Ngoài ra, chúng ta sẽ cần báo cho python đường dẫn đến Tesseract. Theo mặc định, nó được cài đặt trong tệp chương trình và có thể được gọi trong tệp python của bạn như sau
pytesseract.pytesseract.tesseract_cmd=r'C:\Program Files\Tesseract-OCR\tesseract.exe'
Bạn sẽ có thể chạy đoạn mã sau trong python mà không gặp bất kỳ lỗi nào
Nó có hoạt động không?
Đọc văn bản
Chúng ta sẽ bắt đầu với một cái đơn giản. Đây là một hình ảnh miễn phí bản quyền có chứa văn bản. “Tin mới nhất” — hãy xem liệu chương trình của chúng tôi có nhận được tin đó không
https. //tải lên. wikimedia. org/wikipedia/commons/thumb/b/bc/Wikinews_Breaking_News. png/800px-Wikinews_Breaking_News. png
Nó có thể là một điều dễ dàng, nhưng như bạn sẽ thấy trong khi chơi xung quanh với các hình ảnh - luôn có khả năng chương trình của chúng ta diễn giải các đối tượng trong hình ảnh thành các ký tự sai. Những vấn đề này có thể được giải quyết bằng cách thay đổi các bộ lọc trong OpenCV
Hãy xem điều gì sẽ xảy ra khi chúng ta chạy đoạn mã sau [với hình ảnh trên được lưu dưới dạng bns. png trong cùng thư mục với tập lệnh python của tôi]
Đầu ra
Yêu cầu của tôi là đúng, nó nhận ra dấu ngoặc đơn và bao gồm chúng dưới dạng văn bản trong đầu ra. Tuy nhiên, điều này có thể có vấn đề - nếu chúng tôi đang cạo văn bản mà chúng tôi không muốn có thêm ký tự. Nó có thể được giải quyết bằng một số công việc python đơn giản. ]
Bài kiểm tra cuối cùng, nó có thể sao chép các từ trong sách giáo khoa không?
Hình ảnh bên dưới là hình ảnh từ một bài viết của ProRepublica được cấp phép theo Creative Commons. Với nhiều sách giáo khoa cấm thao tác với khay nhớ tạm, khiến việc sao chép văn bản trở nên khó khăn, hình ảnh này là tài liệu tham khảo về cách bạn có thể chụp ảnh màn hình của một trang và yêu cầu chương trình của chúng tôi xuất văn bản có thể sao chép
https. //www. tuyên truyền. org/article/solarwinds-cybersecurity-system
Đầu ra
Đây là một tập hợp văn bản khả thi mà chúng ta có thể dễ dàng dán vào dàn bài — trong trường hợp nguồn gốc của thông tin này không cho phép bạn sao chép văn bản
Có vẻ như nó hoạt động tuyệt vời. Bây giờ tùy thuộc vào bạn để áp dụng điều này cho các vấn đề của riêng bạn
Cảm ơn vì đã đọc, và như mọi khi, chúc bạn viết mã vui vẻ
Hãy theo dõi tôi khi tôi chia sẻ những gì tôi học được — và triển khai chương trình này vào môi trường web
Jordan Steinberg - Trung bình
Trong bài viết này, tôi sẽ sử dụng API tài chính mới của yahoo để viết một chương trình truy xuất thị trường chứng khoán trực tiếp…
trung bình. com
Vỗ tay luôn được đánh giá cao
nguồn
[1] https. //opencv. tổ chức/về/
[2] https. // vi. wikipedia. org/wiki/Tesseract_[phần mềm]
[3]https. //www. tuyên truyền. org/article/solarwinds-cybersecurity-system
tham gia FAUN. Trang web 💻. Podcast 🎙️. Twitter 🐦. Facebook 👥. Instagram 📷. Nhóm Facebook 🗣️. Nhóm Linkedin 💬. Chùn 📱. Tin tức về Cloud Native 📰. Hơn
Nếu bài viết hữu ích, hãy bấm nút 👏 bên dưới vài lần để thể hiện sự ủng hộ của bạn dành cho tác giả 👇