TextSnatcher, công cụ sao chép văn bản từ hình ảnh cho desktop Linux
(github.com/RajSolai)- TextSnatcher là ứng dụng OCR để nhanh chóng sao chép văn bản trong hình ảnh trên Linux; người dùng có thể kéo trên ảnh để nhận dạng ký tự rồi dán kết quả
- Các tính năng cốt lõi gồm hỗ trợ đa ngôn ngữ, sao chép văn bản từ hình ảnh, kéo trên hình ảnh bất kỳ rồi dán, cùng khả năng sử dụng nhanh và dễ dàng
- Phần nhận dạng ký tự sử dụng Tesseract OCR 4.x, đồng thời cung cấp liên kết tới tài liệu Tesseract và dự án Tesseract
- Ứng dụng được phân phối qua Flathub và AppCenter của elementary OS; nếu muốn tự build, dùng quy trình cài đặt dựa trên Meson và Ninja
- Để chạy cần có scrot, tesseract-ocr và dữ liệu ngôn ngữ Tesseract; dự án hiện cho biết sẽ quay lại với các bản cập nhật và sửa lỗi vào tháng tới
TextSnatcher làm gì
- TextSnatcher là ứng dụng dành cho Linux giúp sao chép văn bản từ hình ảnh và thực hiện tác vụ OCR trong vài giây
- Người dùng có thể kéo trên hình ảnh để sao chép văn bản rồi dán
- Các tính năng được cung cấp:
-
Hỗ trợ đa ngôn ngữ
- Sao chép văn bản từ hình ảnh bằng thao tác kéo
- Kéo trên hình ảnh bất kỳ rồi dán
- Sử dụng nhanh và dễ dàng
-
Công cụ OCR và các dự án liên quan
- TextSnatcher sử dụng Tesseract OCR 4.x để nhận dạng ký tự
- Tài liệu liên quan gồm tài liệu Tesseract và Tesseract-Project
Cài đặt và kênh phân phối
Phụ thuộc và build
- Phụ thuộc runtime cần thiết khi chạy:
- scrot
- tesseract-ocr
- Dữ liệu ngôn ngữ Tesseract
- Cung cấp liên kết tới kho Arch và kho Debian
- Phụ thuộc build-time cần thiết khi build:
- granite
- gtk+-3.0
- gobject-2.0
- gdk-pixbuf-2.0
- libhandy-1
- libportal-0.5
- Quy trình tự build và chạy là clone repository, tạo thư mục build Meson, cài đặt bằng Ninja, rồi chạy
com.github.rajsolai.textsnatcher
Trạng thái phát triển và nguồn cảm hứng
- Dự án có kèm badge cho biết được tạo bằng Vala
- README ghi rằng hiện tác giả đang gây quỹ để mua PC Linux, và dự án sẽ sớm quay lại vào tháng tới với các bản cập nhật và sửa lỗi
- Các nguồn cảm hứng được nêu gồm README của Planner, cấu trúc ứng dụng của Develop và ứng dụng macOS TextSniper
1 bình luận
Ý kiến trên Hacker News
Tôi đang dùng một script giống của Dibby053, lấy từ Stack Overflow rồi chỉnh sửa đôi chút để chạy trên KDE/GNOME, Wayland/X11 và hiển thị trạng thái hiện tại qua thông báo
Tôi vẫn chưa tự kiểm thử phần nhận diện X11/Wayland, nhưng cứ dùng thử rồi báo lại kết quả cũng được
spectacleở chế độ nền để cửa sổ không bật ra sau khi chụp màn hìnhCách làm là nối
grim,slurp,mogrify,tesseract,wl-copy, rồi dùngfuzzelđể chọn ngôn ngữ OCRChọn ngôn ngữ bằng
dmenuvà xử lý kiểumaim -us | tesseract --dpi 145 -l eng+${lang} - - | xsel -bihttps://news.ycombinator.com/item?id=33704483#33705272
trap "cleanup '$SCR_IMG'" EXIT, nhưng trong trường hợp này thì nhận xét đó không hẳn là saiLệnh truyền vào
trapthường sẽ được đánh giá nên biến sẽ được mở rộng, vàtrap 'cleanup "$SCR_IMG"' EXITsẽ an toàn hơnVới Bash mới hơn thì
trap "cleanup ${SCR_IMG@Q}" EXITcũng là một lựa chọnbash -c 'flameshot gui -s -r | tesseract - - | gxmessage -title "Decoded Data" -fn "Consolas 12" -wrap -geometry 640x480 -file -'Nhấn Super+O rồi kéo vùng cần OCR, văn bản được chụp sẽ hiện ngay trong một hộp thoại bật lên
Trước đây tôi có một script chép từ đâu đó, làm việc này khá tốt
Nó chụp một vùng bằng
scrot, tiền xử lý bằngmogrifyđể chuyển sang đen trắng và phóng to, rồi trích xuất văn bản bằngtesseract, đưa vào clipboard bằngxselvà còn hiện thông báo nữascrotNhờ tùy chọn
--nodrag, khi chọn vùng bằng trackpad, bạn chỉ cần bấm một lần, di chuyển con trỏ rồi bấm lần nữa nên tiện hơnTrong
maim -s --nodrag --quality=10 $IMG.png,10tương đương100củascrotTiền xử lý bằng phóng to cũng không tạo khác biệt lớn, và tôi cũng không rõ kiểu tiền xử lý nào sẽ tốt hơn
Tôi tò mò không biết TextSnatcher có cải thiện gì hơn không, vì trang GitHub khá mơ hồ
Xin lỗi những đồng nghiệp sống giữa Unix và Windows
trap "rm $IMG*" EXITthì nên xem https://www.shellcheck.net/wiki/SC2064Dùng
mktemp -drồi xóa đệ quy cả thư mục sẽ tốt hơnGán script vào phím tắt tốt hơn nhiều so với phải bấm vào một cửa sổ có nút bấm
Nói cho những đồng nghiệp thường dân đang dùng Windows, tính năng này cũng có trong tiện ích bổ sung chính thức Microsoft PowerToys
Nó cũng đã có trong công cụ chụp màn hình mặc định, nhưng cá nhân tôi thấy phím tắt duy nhất của PowerToys tiện dùng hơn
https://github.com/microsoft/PowerToys
Chỉ cần nhấn WIN+SHIFT+S; nếu không thấy biểu tượng “Text actions” thì hãy cập nhật lên bản mới nhất từ Windows Store
Tôi đã thắc mắc chuyện này từ rất lâu: không rõ Tesseract có thật sự là giải pháp hiện đại tốt nhất trong lĩnh vực này hay không
Cảm giác của tôi là nó còn khá thiếu sót, và nếu nhìn vào tiến bộ thị giác máy tính thì từ khoảng năm 2019, nhận dạng văn bản đáng ra phải gần như là bài toán đã được giải quyết
Có vẻ nó phải làm tốt hơn con người, nhưng lại không thể chuyển chính xác ngay cả bản scan hóa đơn độ phân giải thấp, đặc biệt là nếu không phải tiếng Anh
Có thể là do tôi dùng chưa đúng cách
Tôi muốn biết cụ thể bạn đang dùng nó theo cách nào
Tôi thấy Tesseract ngày càng được nhắc đến nhiều hơn
Khi tôi dùng nó với các bài báo khoa học scan từ 10~15 năm trước thì kết quả rất đáng thất vọng, và công sức hậu xử lý thủ công gần như không ít hơn tự gõ lại là bao
Vì thế, với tôi Tesseract từng đồng nghĩa với “không đáng để thử”, nhưng có lẽ theo thời gian nó đã tốt hơn nên cũng đáng dùng lại
Còn với nhận dạng tổng quát, bao gồm cả font lạ và chất lượng ảnh kém, thì EasyOCR cho kết quả tốt hơn nhiều
Bên trong nó dùng Tesseract và thực sự rất xuất sắc
Cách đây 15 năm, muốn có kết quả đỡ tệ thì còn phải tiền xử lý khá nhiều, nhưng giờ tôi đã có thể có kết quả tốt mà không cần tiền xử lý
Tôi đã dùng thử trực tiếp và nó hoạt động khá ổn.
Vì là ứng dụng Flatpak nên để hoạt động đầy đủ sẽ cần desktop portal, nhưng với cấu hình
xdg-desktop-portal-wlrhiện có thì nó chạy tốt mà không cần thiết lập thêm.Có vẻ nó sẽ hoạt động ổn trong môi trường X11 hoặc Wayland có cấu hình
xdg-desktop-portalhỗ trợ Screenshot API.Kết quả hơi lúc được lúc không nhưng không tệ; với văn bản hiển thị rõ ràng thì chỉ gặp vấn đề về khoảng trắng hoặc đôi khi lỗi lặt vặt, nên có thể hữu ích khi cần sao chép văn bản từ những thứ như hộp thoại lỗi.
Tuy vậy trên Linux thì ngay từ đầu văn bản trong hộp thoại lỗi thường đã có thể chọn được, còn MessageBox tiêu chuẩn của Windows thì phản hồi với Ctrl+C.
Tôi đang dùng Frog như một ứng dụng tương tự và đã dùng rất thành công.
https://getfrog.app
.deb, cũng không có brew.Trên macOS có một tiện ích làm được nhiều hơn việc chỉ mở tài liệu trong Preview rồi thử chọn văn bản.
https://github.com/schappim/macOCR
Tôi thích tác giả này.
Sau đó chỉ cần xóa ảnh bằng biểu tượng thùng rác ở góc trên bên phải, và Cmd-A cũng hoạt động.
Ví dụ tôi thử trong bình luận này ở đây: https://imgur.com/a/q0NvcS6
Trên iOS, tôi dùng một cách tương tự bằng Shortcut gán vào nút Action.
Có những app mà việc sao chép văn bản không dễ, hoặc văn bản là tiếng nước ngoài; khi đó tôi chụp màn hình, trích xuất văn bản, tự động phát hiện ngôn ngữ gốc rồi dịch sang tiếng Anh, sau đó hiển thị cả nguyên văn lẫn bản dịch trong Quick View để có thể chọn và sao chép.
Bạn có thể thử ví dụ triển khai ở đây: https://www.icloud.com/shortcuts/f420d24e4960415da1a43f230abfce39
Ngoài ra, trên iOS mới hơn, bạn cũng có thể mở ảnh trong ứng dụng Ảnh rồi dùng tay chọn và sao chép văn bản ngay trong ảnh.
Tôi đã thử bằng cách nhấn nút chia sẻ trên ảnh rồi dùng nó từ share sheet, và nó hoạt động, nhưng nếu đã ở bước truyền sẵn ảnh vào rồi thì công đoạn chụp màn hình là thừa.
Dù được gọi là “dành cho Linux Desktop”, đây vẫn là Flatpak, và không phải mọi bản phân phối Linux đều cài sẵn Flatpak theo mặc định.
Tôi định thử chạy nó trong máy ảo Fedora; tôi đã thấy nhiều công cụ kiểu này rồi, và đa số đều dùng Tesseract.
Với ảnh thô hoặc nhiều nhiễu, hoặc khi chữ bị cong hay nghiêng, chúng thất bại khá nặng và không thể giải CAPTCHA.
https://tesseract-ocr.github.io/tessdoc/Home.html
Nói chính xác hơn thì vấn đề là tác giả chưa tạo gói cho bản phân phối của bạn, và cũng chưa có ai khác bỏ thời gian lẫn động lực để đóng gói nó.
Người bảo trì mà bạn đang tìm có khi chính là bạn.
Nếu chỉ có
.debthì bạn hoàn toàn có thể nói rằng nó không chạy được ở nơi không phải Ubuntu/Debian, và đó còn là nhược điểm lớn hơn nhiều.