Sao chép mã từ ảnh chụp màn hình trên Mac mà không cần gõ lại
Tác giả: Eduard Bruch, nhà phát triển Optic · Cập nhật
Để sao chép mã từ ảnh chụp màn hình trên Mac, hãy mở hình ảnh, chọn mã bằng công cụ OCR và dán văn bản vào trình soạn thảo của bạn. Sau đó đọc nó một lần đối chiếu với hình ảnh, vì OCR có thể nhầm các ký tự như l và 1 hoặc O và 0.
Trả lời ngắn: với hình ảnh trong Xem trước (Preview) hoặc Ảnh (Photos), hãy thử Live Text trước. Với mã trong bất kỳ cửa sổ ứng dụng, video hay cuộc trò chuyện nào, lựa chọn của tôi là Optic, một ứng dụng thanh menu sao chép văn bản trong bất kỳ vùng nào bạn kéo qua màn hình (4,99 USD (mua một lần) trên Mac App Store).
Công khai: tôi xây dựng Optic.
Vì sao gõ lại mã dễ sai
Mã rất nghiêm ngặt. Một dấu nháy sai, thiếu một dấu ngoặc hoặc nhầm l với 1 làm hỏng một lệnh, và lỗi thường không chỉ ra nguyên nhân thực sự. Gõ lại một dòng docker run dài hoặc một lệnh curl với nhiều cờ chính là nơi những sai sót này xảy ra.
Mã luôn nằm trong hình ảnh: đoạn mã được đăng thành ảnh chụp màn hình đẹp trên mạng xã hội, hướng dẫn hiển thị ví dụ dưới dạng hình ảnh, các trang wiki cũ đầy ảnh chụp terminal, và mã được chuyển tiếp dưới dạng ảnh chụp màn hình trong Slack hoặc Teams.
Thử Live Text trước
Live Text của macOS hoạt động ở nơi Apple hỗ trợ: hình ảnh trong Xem trước (Preview), Ảnh (Photos), Quick Look và Safari. Mở ảnh chụp màn hình trong Xem trước (Preview), di con trỏ qua mã cho đến khi nó chuyển thành con trỏ văn bản, chọn, rồi nhấn Command-C.
Live Text không hoạt động trên cửa sổ ứng dụng bất kỳ, cuộc gọi video hay văn bản được vẽ bên trong giao diện của ứng dụng. Nếu mã nằm trong trình phát video, máy tính từ xa hoặc chia sẻ màn hình, bạn cần công cụ OCR màn hình.
Sao chép mã bằng Optic
Optic đọc bất cứ thứ gì có trên màn hình bên trong khung bạn vẽ. Bản thân nó không mở tệp ảnh, nên hãy mở ảnh chụp màn hình trong Xem trước (Preview), trình duyệt hoặc bất kỳ trình xem nào trước.
- Nhấp vào biểu tượng Optic trên thanh menu.
- Chọn Chụp văn bản.
- Kéo một khung qua mã. Bỏ số dòng ra nếu hình ảnh có.
- Dán vào trình soạn thảo của bạn bằng Command-V.
Một xác nhận nhỏ "Copied to clipboard" (đã sao chép vào clipboard) xuất hiện khi văn bản sẵn sàng.
Bật Chế độ mã
Trong Cài đặt của Optic, Chế độ mã dành cho đúng việc này. Nó giữ thụt lề của từng dòng, dựa trên vị trí văn bản trong hình ảnh, và tắt tính năng sửa ngôn ngữ để bộ nhận dạng không "sửa" tên định danh thành từ trong từ điển. Hãy để bật khi bạn sao chép mã và tắt đi với văn xuôi thông thường.
Ngắt dòng được giữ mặc định (Giữ nguyên), đúng thứ bạn cần cho mã. Các tùy chọn khác, Xóa và Gộp thông minh, dành cho đoạn văn.
Kiểm tra trước khi chạy
Việc nhận dạng chạy trên Mac của bạn bằng nhận dạng văn bản Vision của Apple. Nó tốt với văn bản rõ nét, độ tương phản cao, nhưng vẫn là OCR. Trước khi dán một lệnh vào terminal, hãy đối chiếu nó với hình ảnh, đặc biệt là:
- dấu nháy và dấu huyền
l,1,IvàO,0- dấu gạch nối và dấu gạch dài trong các cờ
- thụt lề trong Python hoặc YAML
Văn bản lớn hơn được nhận dạng tốt hơn, nên hãy phóng to hình ảnh trước khi kéo nếu phông chữ nhỏ.
Nhiều đoạn mã liên tiếp
Mỗi lần chụp được lưu vào lịch sử của Optic trong cửa sổ bật lên của thanh menu, giữ 20 lần chụp gần nhất kèm hình thu nhỏ. Nếu một hướng dẫn có năm bước, hãy chụp chúng lần lượt và sao chép lại từng cái từ lịch sử khi bạn cần. Lịch sử nằm lại trên Mac của bạn.
Nơi Optic không phù hợp
- Nó không mở tệp ảnh hoặc PDF. Mã phải hiển thị trên màn hình.
- Nó làm việc với một vùng chọn mỗi lần. Nó không xử lý các thư mục ảnh chụp màn hình hay tài liệu đầy đủ.
- Nó sao chép văn bản thuần. Nó không giữ màu cú pháp hay phát hiện ngôn ngữ lập trình.
- Nó cần quyền Ghi màn hình của macOS để đọc màn hình.
Để biết thêm về chủ đề này, xem OCR cho đoạn mã trên Mac và cách sao chép văn bản từ mọi thứ trên màn hình. Nếu bạn đang so sánh các ứng dụng, có một bài tổng hợp về ứng dụng OCR màn hình cho Mac.
FAQ
Mac có thể sao chép mã từ hình ảnh mà không cần ứng dụng thêm không?
Thường là có. Live Text trong Xem trước (Preview), Ảnh (Photos), Quick Look và Safari cho phép bạn chọn văn bản trong hình ảnh. Nó không hoạt động trên video, chia sẻ màn hình hay văn bản trong cửa sổ của ứng dụng khác. Với mã ở bất kỳ nơi nào khác trên màn hình, lựa chọn của tôi là Optic với Chế độ mã bật.
Optic có giữ thụt lề của mã không?
Khi bật Chế độ mã trong Cài đặt, Optic giữ thụt lề của từng dòng dựa trên vị trí của nó trong hình ảnh. Hãy kiểm tra kết quả với Python và YAML, nơi thụt lề quan trọng.
Optic có cần kết nối internet không?
Không. Việc nhận dạng văn bản chạy trên Mac, và ứng dụng không có quyền truy cập mạng.
Tại sao mã đã dán chứa ký tự sai?
OCR có thể nhầm các ký tự giống nhau như l và 1. Hãy phóng to văn bản nhỏ trước khi chụp, dùng Chế độ mã, và đối chiếu kết quả với hình ảnh.